var Module=void 0!==Module?Module:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_HAS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(ENVIRONMENT_IS_WEB="object"==typeof window,ENVIRONMENT_IS_WORKER="function"==typeof importScripts,ENVIRONMENT_HAS_NODE="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,ENVIRONMENT_IS_NODE=ENVIRONMENT_HAS_NODE&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER,Module.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var scriptDirectory="",read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}if(ENVIRONMENT_IS_NODE)scriptDirectory=__dirname+"/",read_=function shell_read(filename,binary){var ret;return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require("path")),filename=nodePath.normalize(filename),ret=nodeFS.readFileSync(filename),binary?ret:ret.toString()},readBinary=function readBinary(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),"undefined"!=typeof module&&(module.exports=Module),process.on("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus))throw ex})),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"};else if(ENVIRONMENT_IS_SHELL)"undefined"!=typeof read&&(read_=function shell_read(f){return read(f)}),readBinary=function readBinary(f){var data;return"function"==typeof readbuffer?new Uint8Array(readbuffer(f)):(assert("object"==typeof(data=read(f,"binary"))),data)},"undefined"!=typeof scriptArgs?arguments_=scriptArgs:"undefined"!=typeof arguments&&(arguments_=arguments),"function"==typeof quit&&(quit_=function(status){quit(status)}),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print);else{if(!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER)throw new Error("environment detection error");ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),scriptDirectory=0!==scriptDirectory.indexOf("blob:")?scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):"",read_=function shell_read(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function readBinary(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function xhr_onload(){200==xhr.status||0==xhr.status&&xhr.response?onload(xhr.response):onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title}}var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Object.getOwnPropertyDescriptor(Module,"arguments")||Object.defineProperty(Module,"arguments",{get:function(){abort("Module.arguments has been replaced with plain arguments_")}}),Module.thisProgram&&(thisProgram=Module.thisProgram),Object.getOwnPropertyDescriptor(Module,"thisProgram")||Object.defineProperty(Module,"thisProgram",{get:function(){abort("Module.thisProgram has been replaced with plain thisProgram")}}),Module.quit&&(quit_=Module.quit),Object.getOwnPropertyDescriptor(Module,"quit")||Object.defineProperty(Module,"quit",{get:function(){abort("Module.quit has been replaced with plain quit_")}}),assert(void 0===Module.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),assert(void 0===Module.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),assert(void 0===Module.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),assert(void 0===Module.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),assert(void 0===Module.read,"Module.read option was removed (modify read_ in JS)"),assert(void 0===Module.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),assert(void 0===Module.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),assert(void 0===Module.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),Object.getOwnPropertyDescriptor(Module,"read")||Object.defineProperty(Module,"read",{get:function(){abort("Module.read has been replaced with plain read_")}}),Object.getOwnPropertyDescriptor(Module,"readAsync")||Object.defineProperty(Module,"readAsync",{get:function(){abort("Module.readAsync has been replaced with plain readAsync")}}),Object.getOwnPropertyDescriptor(Module,"readBinary")||Object.defineProperty(Module,"readBinary",{get:function(){abort("Module.readBinary has been replaced with plain readBinary")}});var STACK_ALIGN=16;function staticAlloc(size){abort("staticAlloc is no longer available at runtime; instead, perform static allocations at compile time (using makeStaticAlloc)")}function dynamicAlloc(size){assert(DYNAMICTOP_PTR);var ret=HEAP32[DYNAMICTOP_PTR>>2],end=ret+size+15&-16;return end>_emscripten_get_heap_size()&&abort("failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly"),HEAP32[DYNAMICTOP_PTR>>2]=end,ret}function alignMemory(size,factor){return factor||(factor=STACK_ALIGN),Math.ceil(size/factor)*factor}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:if("*"===type[type.length-1])return 4;if("i"===type[0]){var bits=parseInt(type.substr(1));return assert(bits%8==0,"getNativeTypeSize invalid bits "+bits+", type "+type),bits/8}return 0}}function warnOnce(text){warnOnce.shown||(warnOnce.shown={}),warnOnce.shown[text]||(warnOnce.shown[text]=1,err(text))}stackSave=stackRestore=stackAlloc=function(){abort("cannot use the stack before compiled code is ready to run, and has provided stack access")};var asm2wasmImports={"f64-rem":function(x,y){return x%y},debugger:function(){}},jsCallStartIndex=1,functionPointers=new Array(0);function convertJsFunctionToWasm(func,sig){var typeSection=[1,0,1,96],sigRet=sig.slice(0,1),sigParam=sig.slice(1),typeCodes={i:127,j:126,f:125,d:124};typeSection.push(sigParam.length);for(var i=0;i>>0)+4294967296*+(high>>>0):+(low>>>0)+4294967296*+(0|high)}function dynCall(sig,ptr,args){return args&&args.length?(assert(args.length==sig.length-1),assert("dynCall_"+sig in Module,"bad function pointer type - no table for sig '"+sig+"'"),Module["dynCall_"+sig].apply(null,[ptr].concat(args))):(assert(1==sig.length),assert("dynCall_"+sig in Module,"bad function pointer type - no table for sig '"+sig+"'"),Module["dynCall_"+sig].call(null,ptr))}var tempRet0=0,setTempRet0=function(value){tempRet0=value},getTempRet0=function(){return tempRet0};function getCompilerSetting(name){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for getCompilerSetting or emscripten_get_compiler_setting to work"}var Runtime={getTempRet0:function(){abort('getTempRet0() is now a top-level function, after removing the Runtime object. Remove "Runtime."')},staticAlloc:function(){abort('staticAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."')},stackAlloc:function(){abort('stackAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."')}},GLOBAL_BASE=1024,wasmBinary,wasmMemory,wasmTable;function setValue(ptr,value,type,noSafe){switch("*"===(type=type||"i8").charAt(type.length-1)&&(type="i32"),type){case"i1":case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(0|Math_min(+Math_floor(tempDouble/4294967296),4294967295))>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}function getValue(ptr,type,noSafe){switch("*"===(type=type||"i8").charAt(type.length-1)&&(type="i32"),type){case"i1":case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for getValue: "+type)}return null}Module.wasmBinary&&(wasmBinary=Module.wasmBinary),Object.getOwnPropertyDescriptor(Module,"wasmBinary")||Object.defineProperty(Module,"wasmBinary",{get:function(){abort("Module.wasmBinary has been replaced with plain wasmBinary")}}),"object"!=typeof WebAssembly&&abort("No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.");var ABORT=!1,EXITSTATUS=0;function assert(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func=Module["_"+ident];return assert(func,"Cannot call unknown function "+ident+", make sure it is exported"),func}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret=0;if(null!=str&&0!==str){var len=1+(str.length<<2);stringToUTF8(str,ret=stackAlloc(len),len)}return ret},array:function(arr){var ret=stackAlloc(arr.length);return writeArrayToMemory(arr,ret),ret}};function convertReturnValue(ret){return"string"===returnType?UTF8ToString(ret):"boolean"===returnType?Boolean(ret):ret}var func=getCFunc(ident),cArgs=[],stack=0;if(assert("array"!==returnType,'Return type should not be "array".'),args)for(var i=0;i>2]=0;for(stop=ret+size;ptr>0]=0;return ret}if("i8"===singleType)return slab.subarray||slab.slice?HEAPU8.set(slab,ret):HEAPU8.set(new Uint8Array(slab),ret),ret;for(var i=0,type,typeSize,previousType;i>0];if(!ch)return str;str+=String.fromCharCode(ch)}}function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,!1)}var UTF8Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(u8Array,idx,maxBytesToRead){for(var endIdx=idx+maxBytesToRead,endPtr=idx;u8Array[endPtr]&&!(endPtr>=endIdx);)++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder)return UTF8Decoder.decode(u8Array.subarray(idx,endPtr));for(var str="";idx>10,56320|1023&ch)}}else str+=String.fromCharCode((31&u0)<<6|u1)}else str+=String.fromCharCode(u0)}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343)u=65536+((1023&u)<<10)|1023&str.charCodeAt(++i);if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6,outU8Array[outIdx++]=128|63&u}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12,outU8Array[outIdx++]=128|u>>6&63,outU8Array[outIdx++]=128|63&u}else{if(outIdx+3>=endIdx)break;u>=2097152&&warnOnce("Invalid Unicode code point 0x"+u.toString(16)+" encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF)."),outU8Array[outIdx++]=240|u>>18,outU8Array[outIdx++]=128|u>>12&63,outU8Array[outIdx++]=128|u>>6&63,outU8Array[outIdx++]=128|63&u}}return outU8Array[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return assert("number"==typeof maxBytesToWrite,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((1023&u)<<10)|1023&str.charCodeAt(++i)),u<=127?++len:len+=u<=2047?2:u<=65535?3:4}return len}var UTF16Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function UTF16ToString(ptr){assert(ptr%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var endPtr=ptr,idx=endPtr>>1;HEAP16[idx];)++idx;if((endPtr=idx<<1)-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));for(var i=0,str="";;){var codeUnit=HEAP16[ptr+2*i>>1];if(0==codeUnit)return str;++i,str+=String.fromCharCode(codeUnit)}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(assert(outPtr%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),assert("number"==typeof maxBytesToWrite,"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===maxBytesToWrite&&(maxBytesToWrite=2147483647),maxBytesToWrite<2)return 0;for(var startPtr=outPtr,numCharsToWrite=(maxBytesToWrite-=2)<2*str.length?maxBytesToWrite/2:str.length,i=0;i>1]=codeUnit,outPtr+=2}return HEAP16[outPtr>>1]=0,outPtr-startPtr}function lengthBytesUTF16(str){return 2*str.length}function UTF32ToString(ptr){assert(ptr%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var i=0,str="";;){var utf32=HEAP32[ptr+4*i>>2];if(0==utf32)return str;if(++i,utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|1023&ch)}else str+=String.fromCharCode(utf32)}}function stringToUTF32(str,outPtr,maxBytesToWrite){if(assert(outPtr%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),assert("number"==typeof maxBytesToWrite,"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===maxBytesToWrite&&(maxBytesToWrite=2147483647),maxBytesToWrite<4)return 0;for(var startPtr=outPtr,endPtr=startPtr+maxBytesToWrite-4,i=0;i=55296&&codeUnit<=57343)codeUnit=65536+((1023&codeUnit)<<10)|1023&str.charCodeAt(++i);if(HEAP32[outPtr>>2]=codeUnit,(outPtr+=4)+4>endPtr)break}return HEAP32[outPtr>>2]=0,outPtr-startPtr}function lengthBytesUTF32(str){for(var len=0,i=0;i=55296&&codeUnit<=57343&&++i,len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1,ret=_malloc(size);return ret&&stringToUTF8Array(str,HEAP8,ret,size),ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1,ret=stackAlloc(size);return stringToUTF8Array(str,HEAP8,ret,size),ret}function writeStringToMemory(string,buffer,dontAddNull){var lastChar,end;warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),dontAddNull&&(end=buffer+lengthBytesUTF8(string),lastChar=HEAP8[end]),stringToUTF8(string,buffer,1/0),dontAddNull&&(HEAP8[end]=lastChar)}function writeArrayToMemory(array,buffer){assert(array.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i);dontAddNull||(HEAP8[buffer>>0]=0)}var PAGE_SIZE=16384,WASM_PAGE_SIZE=65536,ASMJS_PAGE_SIZE=16777216,HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE=1024,STACK_BASE=5824,STACKTOP=STACK_BASE,STACK_MAX=5248704,DYNAMIC_BASE=5248704,DYNAMICTOP_PTR=5792;assert(STACK_BASE%16==0,"stack must start aligned"),assert(DYNAMIC_BASE%16==0,"heap must start aligned");var TOTAL_STACK=5242880;Module.TOTAL_STACK&&assert(TOTAL_STACK===Module.TOTAL_STACK,"the stack size can no longer be determined at runtime");var INITIAL_TOTAL_MEMORY=Module.TOTAL_MEMORY||16777216;function writeStackCookie(){assert(0==(3&STACK_MAX)),HEAPU32[(STACK_MAX>>2)-1]=34821223,HEAPU32[(STACK_MAX>>2)-2]=2310721022}function checkStackCookie(){var cookie1=HEAPU32[(STACK_MAX>>2)-1],cookie2=HEAPU32[(STACK_MAX>>2)-2];34821223==cookie1&&2310721022==cookie2||abort("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x"+cookie2.toString(16)+" "+cookie1.toString(16)),1668509029!==HEAP32[0]&&abort("Runtime error: The application has corrupted its heap memory area (address zero)!")}function abortStackOverflow(allocSize){abort("Stack overflow! Attempted to allocate "+allocSize+" bytes on the stack, but stack has only "+(STACK_MAX-stackSave()+allocSize)+" bytes available!")}if(Object.getOwnPropertyDescriptor(Module,"TOTAL_MEMORY")||Object.defineProperty(Module,"TOTAL_MEMORY",{get:function(){abort("Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY")}}),assert(INITIAL_TOTAL_MEMORY>=TOTAL_STACK,"TOTAL_MEMORY should be larger than TOTAL_STACK, was "+INITIAL_TOTAL_MEMORY+"! (TOTAL_STACK="+TOTAL_STACK+")"),assert("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&void 0!==Int32Array.prototype.subarray&&void 0!==Int32Array.prototype.set,"JS engine does not provide full typed array support"),wasmMemory=Module.wasmMemory?Module.wasmMemory:new WebAssembly.Memory({initial:INITIAL_TOTAL_MEMORY/WASM_PAGE_SIZE,maximum:INITIAL_TOTAL_MEMORY/WASM_PAGE_SIZE}),wasmMemory&&(buffer=wasmMemory.buffer),INITIAL_TOTAL_MEMORY=buffer.byteLength,assert(INITIAL_TOTAL_MEMORY%WASM_PAGE_SIZE==0),updateGlobalBufferViews(),HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE,HEAP32[0]=1668509029,HEAP16[1]=25459,115!==HEAPU8[2]||99!==HEAPU8[3])throw"Runtime error: expected the system to be little-endian!";function abortFnPtrError(ptr,sig){abort("Invalid function pointer "+ptr+" called with signature '"+sig+"'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). Build with ASSERTIONS=2 for more info.")}function callRuntimeCallbacks(callbacks){for(;callbacks.length>0;){var callback=callbacks.shift();if("function"!=typeof callback){var func=callback.func;"number"==typeof func?void 0===callback.arg?Module.dynCall_v(func):Module.dynCall_vi(func,callback.arg):func(void 0===callback.arg?null:callback.arg)}else callback()}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){checkStackCookie(),assert(!runtimeInitialized),runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){checkStackCookie(),callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){checkStackCookie(),runtimeExited=!0}function postRun(){if(checkStackCookie(),Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPreMain(cb){__ATMAIN__.unshift(cb)}function addOnExit(cb){}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function unSign(value,bits,ignore){return value>=0?value:bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)&&(value=-2*half+value),value}assert(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),assert(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),assert(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),assert(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_max=Math.max,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null,runDependencyTracking={};function getUniqueRunDependency(id){for(var orig=id;;){if(!runDependencyTracking[id])return id;id=orig+Math.random()}return id}function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),id?(assert(!runDependencyTracking[id]),runDependencyTracking[id]=1,null===runDependencyWatcher&&"undefined"!=typeof setInterval&&(runDependencyWatcher=setInterval((function(){if(ABORT)return clearInterval(runDependencyWatcher),void(runDependencyWatcher=null);var shown=!1;for(var dep in runDependencyTracking)shown||(shown=!0,err("still waiting on run dependencies:")),err("dependency: "+dep);shown&&err("(end of list)")}),1e4))):err("warning: run dependency added without ID")}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),id?(assert(runDependencyTracking[id]),delete runDependencyTracking[id]):err("warning: run dependency removed without ID"),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};var memoryInitializer=null,FS={error:function(){abort("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1")},init:function(){FS.error()},createDataFile:function(){FS.error()},createPreloadedFile:function(){FS.error()},createLazyFile:function(){FS.error()},open:function(){FS.error()},mkdev:function(){FS.error()},registerDevice:function(){FS.error()},analyzePath:function(){FS.error()},loadFilesFromDB:function(){FS.error()},ErrnoError:function ErrnoError(){FS.error()}};Module.FS_createDataFile=FS.createDataFile,Module.FS_createPreloadedFile=FS.createPreloadedFile;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):0===filename.indexOf(dataURIPrefix)}var wasmBinaryFile="uv_function.wasm",tempDouble,tempI64;function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){return wasmBinary||!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER||"function"!=typeof fetch?new Promise((function(resolve,reject){resolve(getBinary())})):fetch(wasmBinaryFile,{credentials:"same-origin"}).then((function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()})).catch((function(){return getBinary()}))}function createWasm(env){var info={env:env,global:{NaN:NaN,Infinity:1/0},"global.Math":Math,asm2wasm:asm2wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module.asm=exports,removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");var trueModule=Module;function receiveInstantiatedSource(output){assert(Module===trueModule,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),trueModule=null,receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then((function(binary){return WebAssembly.instantiate(binary,info)})).then(receiver,(function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)}))}function instantiateAsync(){if(wasmBinary||"function"!=typeof WebAssembly.instantiateStreaming||isDataURI(wasmBinaryFile)||"function"!=typeof fetch)return instantiateArrayBuffer(receiveInstantiatedSource);fetch(wasmBinaryFile,{credentials:"same-origin"}).then((function(response){var result;return WebAssembly.instantiateStreaming(response,info).then(receiveInstantiatedSource,(function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)}))}))}if(Module.instantiateWasm)try{var exports;return Module.instantiateWasm(info,receiveInstance)}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile)),Module.asm=function(global,env,providedBuffer){env.memory=wasmMemory,env.table=wasmTable=new WebAssembly.Table({initial:14,maximum:14,element:"anyfunc"}),env.__memory_base=1024,env.__table_base=0;var exports=createWasm(env);return assert(exports,"binaryen setup failed (no wasm support?)"),exports};var ASM_CONSTS=[],tempDoublePtr=5808;function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr],HEAP8[tempDoublePtr+1]=HEAP8[ptr+1],HEAP8[tempDoublePtr+2]=HEAP8[ptr+2],HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr],HEAP8[tempDoublePtr+1]=HEAP8[ptr+1],HEAP8[tempDoublePtr+2]=HEAP8[ptr+2],HEAP8[tempDoublePtr+3]=HEAP8[ptr+3],HEAP8[tempDoublePtr+4]=HEAP8[ptr+4],HEAP8[tempDoublePtr+5]=HEAP8[ptr+5],HEAP8[tempDoublePtr+6]=HEAP8[ptr+6],HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}function demangle(func){return warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack)return"(no stack trace available)"}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();return Module.extraStackTrace&&(js+="\n"+Module.extraStackTrace()),demangleAll(js)}function ___lock(){}assert(tempDoublePtr%8==0);var PATH={splitPath:function(filename){var splitPathRe;return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];"."===last?parts.splice(i,1):".."===last?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute="/"===path.charAt(0),trailingSlash="/"===path.substr(-1);return(path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/"))||isAbsolute||(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return root||dir?(dir&&(dir=dir.substr(0,dir.length-1)),root+dir):"."},basename:function(path){if("/"===path)return"/";var lastSlash=path.lastIndexOf("/");return-1===lastSlash?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];assert(buffer),0===curr||10===curr?((1===stream?out:err)(UTF8ArrayToString(buffer,0)),buffer.length=0):buffer.push(curr)},varargs:0,get:function(varargs){var ret;return SYSCALLS.varargs+=4,HEAP32[SYSCALLS.varargs-4>>2]},getStr:function(){var ret;return UTF8ToString(SYSCALLS.get())},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return assert(low>=0?0===high:-1===high),low},getZero:function(){assert(0===SYSCALLS.get())}};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();return abort("it should not be possible to operate on streams when !SYSCALLS_REQUIRE_FILESYSTEM"),0}catch(e){return void 0!==FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function flush_NO_FILESYSTEM(){var fflush=Module._fflush;fflush&&fflush(0);var buffers=SYSCALLS.buffers;buffers[1].length&&SYSCALLS.printChar(1,10),buffers[2].length&&SYSCALLS.printChar(2,10)}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{for(var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get(),ret=0,i=0;i>2],len=HEAP32[iov+(8*i+4)>>2],j=0;j>2]=value:err("failed to set errno from JS"),value}function abortOnCannotGrowMemory(requestedSize){abort("Cannot enlarge memory arrays to size "+requestedSize+" bytes (OOM). Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+HEAP8.length+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}var ASSERTIONS=!0;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1,u8array=new Array(len),numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);return dontAddNull&&(u8array.length=numBytesWritten),u8array}function intArrayToString(array){for(var ret=[],i=0;i255&&(ASSERTIONS&&assert(!1,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF."),chr&=255),ret.push(String.fromCharCode(chr))}return ret.join("")}function nullFunc_ii(x){abortFnPtrError(x,"ii")}function nullFunc_iiii(x){abortFnPtrError(x,"iiii")}function nullFunc_jiji(x){abortFnPtrError(x,"jiji")}var asmGlobalArg={},asmLibraryArg={abort:abort,setTempRet0:setTempRet0,getTempRet0:getTempRet0,abortStackOverflow:abortStackOverflow,nullFunc_ii:nullFunc_ii,nullFunc_iiii:nullFunc_iiii,nullFunc_jiji:nullFunc_jiji,___lock:___lock,___setErrNo:___setErrNo,___syscall140:___syscall140,___syscall146:___syscall146,___syscall54:___syscall54,___syscall6:___syscall6,___unlock:___unlock,_emscripten_get_heap_size:_emscripten_get_heap_size,_emscripten_memcpy_big:_emscripten_memcpy_big,_emscripten_resize_heap:_emscripten_resize_heap,_emscripten_run_script:_emscripten_run_script,abortOnCannotGrowMemory:abortOnCannotGrowMemory,demangle:demangle,demangleAll:demangleAll,flush_NO_FILESYSTEM:flush_NO_FILESYSTEM,jsStackTrace:jsStackTrace,stackTrace:stackTrace,tempDoublePtr:tempDoublePtr,DYNAMICTOP_PTR:DYNAMICTOP_PTR},asm=Module.asm(asmGlobalArg,asmLibraryArg,buffer);Module.asm=asm;var ___errno_location=Module.___errno_location=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm.___errno_location.apply(null,arguments)},_fflush=Module._fflush=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm._fflush.apply(null,arguments)},_free=Module._free=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm._free.apply(null,arguments)},_getFS=Module._getFS=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm._getFS.apply(null,arguments)},_getLength=Module._getLength=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm._getLength.apply(null,arguments)},_getVS=Module._getVS=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm._getVS.apply(null,arguments)},_makeUV=Module._makeUV=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm._makeUV.apply(null,arguments)},_malloc=Module._malloc=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm._malloc.apply(null,arguments)},_memcpy=Module._memcpy=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm._memcpy.apply(null,arguments)},_memset=Module._memset=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm._memset.apply(null,arguments)},_sbrk=Module._sbrk=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm._sbrk.apply(null,arguments)},_setActivate=Module._setActivate=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm._setActivate.apply(null,arguments)},establishStackSpace=Module.establishStackSpace=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm.establishStackSpace.apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm.stackAlloc.apply(null,arguments)},stackRestore=Module.stackRestore=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm.stackRestore.apply(null,arguments)},stackSave=Module.stackSave=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm.stackSave.apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm.dynCall_ii.apply(null,arguments)},dynCall_iiii=Module.dynCall_iiii=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm.dynCall_iiii.apply(null,arguments)},dynCall_jiji=Module.dynCall_jiji=function(){return assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Module.asm.dynCall_jiji.apply(null,arguments)};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}Module.asm=asm,Object.getOwnPropertyDescriptor(Module,"intArrayFromString")||(Module.intArrayFromString=function(){abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"intArrayToString")||(Module.intArrayToString=function(){abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"ccall")||(Module.ccall=function(){abort("'ccall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"cwrap")||(Module.cwrap=function(){abort("'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"setValue")||(Module.setValue=function(){abort("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"getValue")||(Module.getValue=function(){abort("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"allocate")||(Module.allocate=function(){abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"getMemory")||(Module.getMemory=function(){abort("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(Module,"AsciiToString")||(Module.AsciiToString=function(){abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"stringToAscii")||(Module.stringToAscii=function(){abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"UTF8ArrayToString")||(Module.UTF8ArrayToString=function(){abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"UTF8ToString")||(Module.UTF8ToString=function(){abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"stringToUTF8Array")||(Module.stringToUTF8Array=function(){abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"stringToUTF8")||(Module.stringToUTF8=function(){abort("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"lengthBytesUTF8")||(Module.lengthBytesUTF8=function(){abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"UTF16ToString")||(Module.UTF16ToString=function(){abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"stringToUTF16")||(Module.stringToUTF16=function(){abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"lengthBytesUTF16")||(Module.lengthBytesUTF16=function(){abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"UTF32ToString")||(Module.UTF32ToString=function(){abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"stringToUTF32")||(Module.stringToUTF32=function(){abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"lengthBytesUTF32")||(Module.lengthBytesUTF32=function(){abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"allocateUTF8")||(Module.allocateUTF8=function(){abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"stackTrace")||(Module.stackTrace=function(){abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"addOnPreRun")||(Module.addOnPreRun=function(){abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"addOnInit")||(Module.addOnInit=function(){abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"addOnPreMain")||(Module.addOnPreMain=function(){abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"addOnExit")||(Module.addOnExit=function(){abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"addOnPostRun")||(Module.addOnPostRun=function(){abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"writeStringToMemory")||(Module.writeStringToMemory=function(){abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"writeArrayToMemory")||(Module.writeArrayToMemory=function(){abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"writeAsciiToMemory")||(Module.writeAsciiToMemory=function(){abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"addRunDependency")||(Module.addRunDependency=function(){abort("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(Module,"removeRunDependency")||(Module.removeRunDependency=function(){abort("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(Module,"ENV")||(Module.ENV=function(){abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"FS")||(Module.FS=function(){abort("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"FS_createFolder")||(Module.FS_createFolder=function(){abort("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(Module,"FS_createPath")||(Module.FS_createPath=function(){abort("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(Module,"FS_createDataFile")||(Module.FS_createDataFile=function(){abort("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(Module,"FS_createPreloadedFile")||(Module.FS_createPreloadedFile=function(){abort("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(Module,"FS_createLazyFile")||(Module.FS_createLazyFile=function(){abort("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(Module,"FS_createLink")||(Module.FS_createLink=function(){abort("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(Module,"FS_createDevice")||(Module.FS_createDevice=function(){abort("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(Module,"FS_unlink")||(Module.FS_unlink=function(){abort("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(Module,"GL")||(Module.GL=function(){abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"dynamicAlloc")||(Module.dynamicAlloc=function(){abort("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"warnOnce")||(Module.warnOnce=function(){abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"loadDynamicLibrary")||(Module.loadDynamicLibrary=function(){abort("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"loadWebAssemblyModule")||(Module.loadWebAssemblyModule=function(){abort("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"getLEB")||(Module.getLEB=function(){abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"getFunctionTables")||(Module.getFunctionTables=function(){abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"alignFunctionTables")||(Module.alignFunctionTables=function(){abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"registerFunctions")||(Module.registerFunctions=function(){abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"addFunction")||(Module.addFunction=function(){abort("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"removeFunction")||(Module.removeFunction=function(){abort("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"getFuncWrapper")||(Module.getFuncWrapper=function(){abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"prettyPrint")||(Module.prettyPrint=function(){abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"makeBigInt")||(Module.makeBigInt=function(){abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"dynCall")||(Module.dynCall=function(){abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"getCompilerSetting")||(Module.getCompilerSetting=function(){abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"stackSave")||(Module.stackSave=function(){abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"stackRestore")||(Module.stackRestore=function(){abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"stackAlloc")||(Module.stackAlloc=function(){abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"establishStackSpace")||(Module.establishStackSpace=function(){abort("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"print")||(Module.print=function(){abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"printErr")||(Module.printErr=function(){abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"getTempRet0")||(Module.getTempRet0=function(){abort("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"setTempRet0")||(Module.setTempRet0=function(){abort("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"callMain")||(Module.callMain=function(){abort("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"Pointer_stringify")||(Module.Pointer_stringify=function(){abort("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(Module,"ALLOC_NORMAL")||Object.defineProperty(Module,"ALLOC_NORMAL",{get:function(){abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(Module,"ALLOC_STACK")||Object.defineProperty(Module,"ALLOC_STACK",{get:function(){abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(Module,"ALLOC_DYNAMIC")||Object.defineProperty(Module,"ALLOC_DYNAMIC",{get:function(){abort("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(Module,"ALLOC_NONE")||Object.defineProperty(Module,"ALLOC_NONE",{get:function(){abort("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}});var calledMain=!1;function run(args){function doRun(){Module.calledRun||(Module.calledRun=!0,ABORT||(initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),assert(!Module._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),postRun()))}args=args||arguments_,runDependencies>0||(writeStackCookie(),preRun(),runDependencies>0||Module.calledRun||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),doRun()}),1)):doRun(),checkStackCookie()))}function checkUnflushedContent(){var print=out,printErr=err,has=!1;out=err=function(x){has=!0};try{var flush=flush_NO_FILESYSTEM;flush_NO_FILESYSTEM&&flush_NO_FILESYSTEM(0)}catch(e){}out=print,err=printErr,has&&(warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc."),warnOnce("(this may also be due to not including full filesystem support - try building with -s FORCE_FILESYSTEM=1)"))}function exit(status,implicit){checkUnflushedContent(),implicit&&Module.noExitRuntime&&0===status||(Module.noExitRuntime?implicit||err("exit("+status+") called, but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)"):(ABORT=!0,EXITSTATUS=status,exitRuntime(),Module.onExit&&Module.onExit(status)),quit_(status,new ExitStatus(status)))}dependenciesFulfilled=function runCaller(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=runCaller)},Module.run=run;var abortDecorators=[];function abort(what){Module.onAbort&&Module.onAbort(what),out(what+=""),err(what),ABORT=!0,EXITSTATUS=1;var extra="",output="abort("+what+") at "+stackTrace();throw abortDecorators&&abortDecorators.forEach((function(decorator){output=decorator(output,what)})),output}if(Module.abort=abort,Module.preInit)for("function"==typeof Module.preInit&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();Module.noExitRuntime=!0,run();