From 8da54587393cb2fb954b6eec7e4af544289b748f Mon Sep 17 00:00:00 2001
From: Green! <81369743+GreenyDEV@users.noreply.github.com>
Date: Tue, 17 May 2022 14:31:21 -0400
Subject: [PATCH] v6.7.7
---
static/sm64/index.html | 72 +++
static/sm64/sm64.us.f3dex2e.js | 936 +++++++++++++++++++++++++++++++
static/sm64/sm64.us.f3dex2e.wasm | Bin 0 -> 15971301 bytes
3 files changed, 1008 insertions(+)
create mode 100644 static/sm64/index.html
create mode 100644 static/sm64/sm64.us.f3dex2e.js
create mode 100644 static/sm64/sm64.us.f3dex2e.wasm
diff --git a/static/sm64/index.html b/static/sm64/index.html
new file mode 100644
index 0000000..a74bce2
--- /dev/null
+++ b/static/sm64/index.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+Super Mario 64
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/sm64/sm64.us.f3dex2e.js b/static/sm64/sm64.us.f3dex2e.js
new file mode 100644
index 0000000..b6411bd
--- /dev/null
+++ b/static/sm64/sm64.us.f3dex2e.js
@@ -0,0 +1,936 @@
+var Module=typeof Module!=='undefined'?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key];}}
+var arguments_=[];var thisProgram='./this.program';var quit_=function(status,toThrow){throw toThrow;};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==='object';ENVIRONMENT_IS_WORKER=typeof importScripts==='function';ENVIRONMENT_IS_NODE=typeof process==='object'&&typeof process.versions==='object'&&typeof process.versions.node==='string';ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(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='';function locateFile(path){if(Module['locateFile']){return Module['locateFile'](path,scriptDirectory);}
+return scriptDirectory+path;}
+var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require('path').dirname(scriptDirectory)+'/';}else{scriptDirectory=__dirname+'/';}
+read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require('fs');if(!nodePath)nodePath=require('path');filename=nodePath['normalize'](filename);return nodeFS['readFileSync'](filename,binary?null:'utf8');};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret);}
+assert(ret.buffer);return ret;};if(process['argv'].length>1){thisProgram=process['argv'][1].replace(/\\/g,'/');}
+arguments_=process['argv'].slice(2);if(typeof module!=='undefined'){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){if(typeof read!='undefined'){read_=function shell_read(f){return read(f);};}
+readBinary=function readBinary(f){var data;if(typeof readbuffer==='function'){return new Uint8Array(readbuffer(f));}
+data=read(f,'binary');assert(typeof data==='object');return data;};if(typeof scriptArgs!='undefined'){arguments_=scriptArgs;}else if(typeof arguments!='undefined'){arguments_=arguments;}
+if(typeof quit==='function'){quit_=function(status){quit(status);};}
+if(typeof print!=='undefined'){if(typeof console==='undefined')console=({});console.log=(print);console.warn=console.error=(typeof printErr!=='undefined'?printErr:print);}}else
+if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href;}else if(document.currentScript){scriptDirectory=document.currentScript.src;}
+if(scriptDirectory.indexOf('blob:')!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf('/')+1);}else{scriptDirectory='';}
+{read_=function shell_read(url){var xhr=new XMLHttpRequest();xhr.open('GET',url,false);xhr.send(null);return xhr.responseText;};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest();xhr.open('GET',url,false);xhr.responseType='arraybuffer';xhr.send(null);return new Uint8Array((xhr.response));};}
+readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest();xhr.open('GET',url,true);xhr.responseType='arraybuffer';xhr.onload=function xhr_onload(){if(xhr.status==200||(xhr.status==0&&xhr.response)){onload(xhr.response);return;}
+onerror();};xhr.onerror=onerror;xhr.send(null);};}
+setWindowTitle=function(title){document.title=title};}else
+{throw new Error('environment detection error');}
+var out=Module['print']||console.log.bind(console);var err=Module['printErr']||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key];}}
+moduleOverrides=null;if(Module['arguments'])arguments_=Module['arguments'];if(!Object.getOwnPropertyDescriptor(Module,'arguments'))Object.defineProperty(Module,'arguments',{configurable:true,get:function(){abort('Module.arguments has been replaced with plain arguments_')}});if(Module['thisProgram'])thisProgram=Module['thisProgram'];if(!Object.getOwnPropertyDescriptor(Module,'thisProgram'))Object.defineProperty(Module,'thisProgram',{configurable:true,get:function(){abort('Module.thisProgram has been replaced with plain thisProgram')}});if(Module['quit'])quit_=Module['quit'];if(!Object.getOwnPropertyDescriptor(Module,'quit'))Object.defineProperty(Module,'quit',{configurable:true,get:function(){abort('Module.quit has been replaced with plain quit_')}});assert(typeof Module['memoryInitializerPrefixURL']==='undefined','Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead');assert(typeof Module['pthreadMainPrefixURL']==='undefined','Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead');assert(typeof Module['cdInitializerPrefixURL']==='undefined','Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead');assert(typeof Module['filePackagePrefixURL']==='undefined','Module.filePackagePrefixURL option was removed, use Module.locateFile instead');assert(typeof Module['read']==='undefined','Module.read option was removed (modify read_ in JS)');assert(typeof Module['readAsync']==='undefined','Module.readAsync option was removed (modify readAsync in JS)');assert(typeof Module['readBinary']==='undefined','Module.readBinary option was removed (modify readBinary in JS)');assert(typeof Module['setWindowTitle']==='undefined','Module.setWindowTitle option was removed (modify setWindowTitle in JS)');assert(typeof Module['TOTAL_MEMORY']==='undefined','Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY');if(!Object.getOwnPropertyDescriptor(Module,'read'))Object.defineProperty(Module,'read',{configurable:true,get:function(){abort('Module.read has been replaced with plain read_')}});if(!Object.getOwnPropertyDescriptor(Module,'readAsync'))Object.defineProperty(Module,'readAsync',{configurable:true,get:function(){abort('Module.readAsync has been replaced with plain readAsync')}});if(!Object.getOwnPropertyDescriptor(Module,'readBinary'))Object.defineProperty(Module,'readBinary',{configurable:true,get:function(){abort('Module.readBinary has been replaced with plain readBinary')}});var IDBFS='IDBFS is no longer included by default; build with -lidbfs.js';var PROXYFS='PROXYFS is no longer included by default; build with -lproxyfs.js';var WORKERFS='WORKERFS is no longer included by default; build with -lworkerfs.js';var NODEFS='NODEFS is no longer included by default; build with -lnodefs.js';var STACK_ALIGN=16;var stackSave;var stackRestore;var stackAlloc;stackSave=stackRestore=stackAlloc=function(){abort('cannot use the stack before compiled code is ready to run, and has provided stack access');};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];var end=(ret+size+15)&-16;assert(end<=HEAP8.length,'failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly');HEAP32[DYNAMICTOP_PTR>>2]=end;return ret;}
+function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return 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;}else if(type[0]==='i'){var bits=Number(type.substr(1));assert(bits%8===0,'getNativeTypeSize invalid bits '+bits+', type '+type);return bits/8;}else{return 0;}}}}
+function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text);}}
+function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function==="function"){var typeNames={'i':'i32','j':'i64','f':'f32','d':'f64'};var type={parameters:[],results:sig[0]=='v'?[]:[typeNames[sig[0]]]};for(var i=1;i>>0)))+((+((high>>>0)))*4294967296.0)):((+((low>>>0)))+((+((high|0)))*4294967296.0));}
+function dynCall(sig,ptr,args){if(args&&args.length){assert(args.length===sig.substring(1).replace(/j/g,'--').length);assert(('dynCall_'+sig)in Module,'bad function pointer type - no table for sig \''+sig+'\'');return Module['dynCall_'+sig].apply(null,[ptr].concat(args));}else{assert(sig.length==1);assert(('dynCall_'+sig)in Module,'bad function pointer type - no table for sig \''+sig+'\'');return Module['dynCall_'+sig].call(null,ptr);}}
+var tempRet0=0;var setTempRet0=function(value){tempRet0=value;};var 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."')},};var GLOBAL_BASE=1024;var wasmBinary;if(Module['wasmBinary'])wasmBinary=Module['wasmBinary'];if(!Object.getOwnPropertyDescriptor(Module,'wasmBinary'))Object.defineProperty(Module,'wasmBinary',{configurable:true,get:function(){abort('Module.wasmBinary has been replaced with plain wasmBinary')}});var noExitRuntime;if(Module['noExitRuntime'])noExitRuntime=Module['noExitRuntime'];if(!Object.getOwnPropertyDescriptor(Module,'noExitRuntime'))Object.defineProperty(Module,'noExitRuntime',{configurable:true,get:function(){abort('Module.noExitRuntime has been replaced with plain noExitRuntime')}});if(typeof WebAssembly!=='object'){abort('No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.');}
+function setValue(ptr,value,type,noSafe){type=type||'i8';if(type.charAt(type.length-1)==='*')type='i32';switch(type){case 'i1':HEAP8[((ptr)>>0)]=value;break;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.0?(tempDouble>0.0?((Math_min((+(Math_floor((tempDouble)/4294967296.0))),4294967295.0))|0)>>>0:(~~((+(Math_ceil((tempDouble-+(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>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){type=type||'i8';if(type.charAt(type.length-1)==='*')type='i32';switch(type){case 'i1':return HEAP8[((ptr)>>0)];case 'i8':return HEAP8[((ptr)>>0)];case 'i16':return HEAP16[((ptr)>>1)];case 'i32':return HEAP32[((ptr)>>2)];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;}
+var wasmMemory;var wasmTable=new WebAssembly.Table({'initial':1821,'maximum':1821+0,'element':'anyfunc'});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort('Assertion failed: '+text);}}
+function getCFunc(ident){var func=Module['_'+ident];assert(func,'Cannot call unknown function '+ident+', make sure it is exported');return func;}
+function ccall(ident,returnType,argTypes,args,opts){var toC={'string':function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len);}
+return ret;},'array':function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret;}};function convertReturnValue(ret){if(returnType==='string')return UTF8ToString(ret);if(returnType==='boolean')return Boolean(ret);return ret;}
+var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!=='array','Return type should not be "array".');if(args){for(var i=0;i>2)]=0;}
+stop=ret+size;while(ptr>0)]=0;}
+return ret;}
+if(singleType==='i8'){if(slab.subarray||slab.slice){HEAPU8.set((slab),ret);}else{HEAPU8.set(new Uint8Array(slab),ret);}
+return ret;}
+var i=0,type,typeSize,previousType;while(i=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr));}else{var str='';while(idx>10),0xDC00|(ch&0x3FF));}}}
+return str;}
+function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):'';}
+function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))
+return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=0xD800&&u<=0xDFFF){var u1=str.charCodeAt(++i);u=0x10000+((u&0x3FF)<<10)|(u1&0x3FF);}
+if(u<=0x7F){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u;}else if(u<=0x7FF){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=0xC0|(u>>6);outU8Array[outIdx++]=0x80|(u&63);}else if(u<=0xFFFF){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=0xE0|(u>>12);outU8Array[outIdx++]=0x80|((u>>6)&63);outU8Array[outIdx++]=0x80|(u&63);}else{if(outIdx+3>=endIdx)break;if(u>=0x200000)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++]=0xF0|(u>>18);outU8Array[outIdx++]=0x80|((u>>12)&63);outU8Array[outIdx++]=0x80|((u>>6)&63);outU8Array[outIdx++]=0x80|(u&63);}}
+outU8Array[outIdx]=0;return outIdx-startIdx;}
+function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=='number','stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!');return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);}
+function lengthBytesUTF8(str){var len=0;for(var i=0;i=0xD800&&u<=0xDFFF)u=0x10000+((u&0x3FF)<<10)|(str.charCodeAt(++i)&0x3FF);if(u<=0x7F)++len;else if(u<=0x7FF)len+=2;else if(u<=0xFFFF)len+=3;else len+=4;}
+return len;}
+function AsciiToString(ptr){var str='';while(1){var ch=HEAPU8[((ptr++)>>0)];if(!ch)return str;str+=String.fromCharCode(ch);}}
+function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false);}
+var UTF16Decoder=typeof TextDecoder!=='undefined'?new TextDecoder('utf-16le'):undefined;function UTF16ToString(ptr){assert(ptr%2==0,'Pointer passed to UTF16ToString must be aligned to two bytes!');var endPtr=ptr;var idx=endPtr>>1;while(HEAP16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));}else{var i=0;var str='';while(1){var codeUnit=HEAP16[(((ptr)+(i*2))>>1)];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit);}}}
+function stringToUTF16(str,outPtr,maxBytesToWrite){assert(outPtr%2==0,'Pointer passed to stringToUTF16 must be aligned to two bytes!');assert(typeof maxBytesToWrite=='number','stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!');if(maxBytesToWrite===undefined){maxBytesToWrite=0x7FFFFFFF;}
+if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=(maxBytesToWrite>1)]=codeUnit;outPtr+=2;}
+HEAP16[((outPtr)>>1)]=0;return outPtr-startPtr;}
+function lengthBytesUTF16(str){return str.length*2;}
+function UTF32ToString(ptr){assert(ptr%4==0,'Pointer passed to UTF32ToString must be aligned to four bytes!');var i=0;var str='';while(1){var utf32=HEAP32[(((ptr)+(i*4))>>2)];if(utf32==0)
+return str;++i;if(utf32>=0x10000){var ch=utf32-0x10000;str+=String.fromCharCode(0xD800|(ch>>10),0xDC00|(ch&0x3FF));}else{str+=String.fromCharCode(utf32);}}}
+function stringToUTF32(str,outPtr,maxBytesToWrite){assert(outPtr%4==0,'Pointer passed to stringToUTF32 must be aligned to four bytes!');assert(typeof maxBytesToWrite=='number','stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!');if(maxBytesToWrite===undefined){maxBytesToWrite=0x7FFFFFFF;}
+if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=0xD800&&codeUnit<=0xDFFF){var trailSurrogate=str.charCodeAt(++i);codeUnit=0x10000+((codeUnit&0x3FF)<<10)|(trailSurrogate&0x3FF);}
+HEAP32[((outPtr)>>2)]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break;}
+HEAP32[((outPtr)>>2)]=0;return outPtr-startPtr;}
+function lengthBytesUTF32(str){var len=0;for(var i=0;i=0xD800&&codeUnit<=0xDFFF)++i;len+=4;}
+return len;}
+function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret;}
+function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret;}
+function writeStringToMemory(string,buffer,dontAddNull){warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!');var lastChar,end;if(dontAddNull){end=buffer+lengthBytesUTF8(string);lastChar=HEAP8[end];}
+stringToUTF8(string,buffer,Infinity);if(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);}
+if(!dontAddNull)HEAP8[((buffer)>>0)]=0;}
+var PAGE_SIZE=16384;var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-(x%multiple);}
+return x;}
+var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module['HEAP8']=HEAP8=new Int8Array(buf);Module['HEAP16']=HEAP16=new Int16Array(buf);Module['HEAP32']=HEAP32=new Int32Array(buf);Module['HEAPU8']=HEAPU8=new Uint8Array(buf);Module['HEAPU16']=HEAPU16=new Uint16Array(buf);Module['HEAPU32']=HEAPU32=new Uint32Array(buf);Module['HEAPF32']=HEAPF32=new Float32Array(buf);Module['HEAPF64']=HEAPF64=new Float64Array(buf);}
+var STATIC_BASE=1024,STACK_BASE=19593120,STACKTOP=STACK_BASE,STACK_MAX=14350240,DYNAMIC_BASE=19593120,DYNAMICTOP_PTR=14350080;assert(STACK_BASE%16===0,'stack must start aligned');assert(DYNAMIC_BASE%16===0,'heap must start aligned');var TOTAL_STACK=5242880;if(Module['TOTAL_STACK'])assert(TOTAL_STACK===Module['TOTAL_STACK'],'the stack size can no longer be determined at runtime')
+var INITIAL_INITIAL_MEMORY=Module['INITIAL_MEMORY']||20971520;if(!Object.getOwnPropertyDescriptor(Module,'INITIAL_MEMORY'))Object.defineProperty(Module,'INITIAL_MEMORY',{configurable:true,get:function(){abort('Module.INITIAL_MEMORY has been replaced with plain INITIAL_INITIAL_MEMORY')}});assert(INITIAL_INITIAL_MEMORY>=TOTAL_STACK,'INITIAL_MEMORY should be larger than TOTAL_STACK, was '+INITIAL_INITIAL_MEMORY+'! (TOTAL_STACK='+TOTAL_STACK+')');assert(typeof Int32Array!=='undefined'&&typeof Float64Array!=='undefined'&&Int32Array.prototype.subarray!==undefined&&Int32Array.prototype.set!==undefined,'JS engine does not provide full typed array support');if(Module['wasmMemory']){wasmMemory=Module['wasmMemory'];}else
+{wasmMemory=new WebAssembly.Memory({'initial':INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,'maximum':INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE});}
+if(wasmMemory){buffer=wasmMemory.buffer;}
+INITIAL_INITIAL_MEMORY=buffer.byteLength;assert(INITIAL_INITIAL_MEMORY%WASM_PAGE_SIZE===0);updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function writeStackCookie(){assert((STACK_MAX&3)==0);HEAPU32[(STACK_MAX>>2)+1]=0x2135467;HEAPU32[(STACK_MAX>>2)+2]=0x89BACDFE;HEAP32[0]=0x63736d65;}
+function checkStackCookie(){var cookie1=HEAPU32[(STACK_MAX>>2)+1];var cookie2=HEAPU32[(STACK_MAX>>2)+2];if(cookie1!=0x2135467||cookie2!=0x89BACDFE){abort('Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x'+cookie2.toString(16)+' '+cookie1.toString(16));}
+if(HEAP32[0]!==0x63736d65)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!');}
+(function(){var h16=new Int16Array(1);var h8=new Int8Array(h16.buffer);h16[0]=0x6373;if(h8[0]!==0x73||h8[1]!==0x63)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){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=='function'){callback();continue;}
+var func=callback.func;if(typeof func==='number'){if(callback.arg===undefined){Module['dynCall_v'](func);}else{Module['dynCall_vi'](func,callback.arg);}}else{func(callback.arg===undefined?null:callback.arg);}}}
+var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module['preRun']){if(typeof Module['preRun']=='function')Module['preRun']=[Module['preRun']];while(Module['preRun'].length){addOnPreRun(Module['preRun'].shift());}}
+callRuntimeCallbacks(__ATPRERUN__);}
+function initRuntime(){checkStackCookie();assert(!runtimeInitialized);runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__);}
+function preMain(){checkStackCookie();FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__);}
+function exitRuntime(){checkStackCookie();runtimeExited=true;}
+function postRun(){checkStackCookie();if(Module['postRun']){if(typeof Module['postRun']=='function')Module['postRun']=[Module['postRun']];while(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){if(value>=0){return value;}
+return bits<=32?2*Math.abs(1<<(bits-1))+value:Math.pow(2,bits)+value;}
+function reSign(value,bits,ignore){if(value<=0){return value;}
+var half=bits<=32?Math.abs(1<<(bits-1)):Math.pow(2,bits-1);if(value>=half&&(bits<=32||value>half)){value=-2*half+value;}
+return 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;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_max=Math.max;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function getUniqueRunDependency(id){var orig=id;while(1){if(!runDependencyTracking[id])return id;id=orig+Math.random();}}
+function addRunDependency(id){runDependencies++;if(Module['monitorRunDependencies']){Module['monitorRunDependencies'](runDependencies);}
+if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=='undefined'){runDependencyWatcher=setInterval(function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return;}
+var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;err('still waiting on run dependencies:');}
+err('dependency: '+dep);}
+if(shown){err('(end of list)');}},10000);}}else{err('warning: run dependency added without ID');}}
+function removeRunDependency(id){runDependencies--;if(Module['monitorRunDependencies']){Module['monitorRunDependencies'](runDependencies);}
+if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id];}else{err('warning: run dependency removed without ID');}
+if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null;}
+if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback();}}}
+Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module['onAbort']){Module['onAbort'](what);}
+what+='';out(what);err(what);ABORT=true;EXITSTATUS=1;var output='abort('+what+') at '+stackTrace();what=output;throw new WebAssembly.RuntimeError(what);}
+var memoryInitializer=null;var dataURIPrefix='data:application/octet-stream;base64,';function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0;}
+var wasmBinaryFile='sm64.us.f3dex2e.wasm';if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile);}
+function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary);}
+if(readBinary){return readBinary(wasmBinaryFile);}else{throw "both async and sync fetching of the wasm failed";}}
+catch(err){abort(err);}}
+function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==='function'){return 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();});}
+return new Promise(function(resolve,reject){resolve(getBinary());});}
+function createWasm(){var info={'env':asmLibraryArg,'wasi_snapshot_preview1':asmLibraryArg};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&&typeof WebAssembly.instantiateStreaming==='function'&&!isDataURI(wasmBinaryFile)&&typeof fetch==='function'){fetch(wasmBinaryFile,{credentials:'same-origin'}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err('wasm streaming compile failed: '+reason);err('falling back to ArrayBuffer instantiation');instantiateArrayBuffer(receiveInstantiatedSource);});});}else{return instantiateArrayBuffer(receiveInstantiatedSource);}}
+if(Module['instantiateWasm']){try{var exports=Module['instantiateWasm'](info,receiveInstance);return exports;}catch(e){err('Module.instantiateWasm callback failed with error: '+e);return false;}}
+instantiateAsync();return{};}
+var tempDouble;var tempI64;var ASM_CONSTS={3069901:function($0){requestAnimationFrame(function(time){dynCall("vd",$0,[time]);})},3069970:function($0){var s=localStorage.sm64_save_file;if(s&&s.length===684){try{var binary=atob(s);if(binary.length===512){for(var i=0;i<512;i++){HEAPU8[$0+i]=binary.charCodeAt(i);}return 1;}}catch(e){}}return 0;},3070210:function($0){var str="";for(var i=0;i<512;i++){str+=String.fromCharCode(HEAPU8[$0+i]);}localStorage.sm64_save_file=btoa(str);},8775252:function($0,$1,$2){var w=$0;var h=$1;var pixels=$2;if(!Module['SDL2'])Module['SDL2']={};var SDL2=Module['SDL2'];if(SDL2.ctxCanvas!==Module['canvas']){SDL2.ctx=Module['createContext'](Module['canvas'],false,true);SDL2.ctxCanvas=Module['canvas'];}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx;}var data=SDL2.image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=='undefined'&&data instanceof CanvasPixelArray){num=data.length;while(dst>8)&0xff;data[dst+2]=(val>>16)&0xff;data[dst+3]=0xff;src++;dst+=4;}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer);}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i>2;var dst=0;var num;if(typeof CanvasPixelArray!=='undefined'&&data instanceof CanvasPixelArray){num=data.length;while(dst>8)&0xff;data[dst+2]=(val>>16)&0xff;data[dst+3]=(val>>24)&0xff;src++;dst+=4;}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num));}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf;},8777696:function($0){if(Module['canvas']){Module['canvas'].style['cursor']=UTF8ToString($0);}return 0;},8777789:function(){if(Module['canvas']){Module['canvas'].style['cursor']='none';}},8779014:function(){return screen.width;},8779041:function(){return screen.height;},8779069:function(){return window.innerWidth;},8779101:function(){return window.innerHeight;},8779179:function($0){if(typeof Module['setWindowTitle']!=='undefined'){Module['setWindowTitle'](UTF8ToString($0));}return 0;},8779333:function(){if(typeof(AudioContext)!=='undefined'){return 1;}else if(typeof(webkitAudioContext)!=='undefined'){return 1;}return 0;},8779499:function(){if((typeof(navigator.mediaDevices)!=='undefined')&&(typeof(navigator.mediaDevices.getUserMedia)!=='undefined')){return 1;}else if(typeof(navigator.webkitGetUserMedia)!=='undefined'){return 1;}return 0;},8779725:function($0){if(typeof(Module['SDL2'])==='undefined'){Module['SDL2']={};}var SDL2=Module['SDL2'];if(!$0){SDL2.audio={};}else{SDL2.capture={};}if(!SDL2.audioContext){if(typeof(AudioContext)!=='undefined'){SDL2.audioContext=new AudioContext();}else if(typeof(webkitAudioContext)!=='undefined'){SDL2.audioContext=new webkitAudioContext();}}return SDL2.audioContext===undefined?-1:0;},8780208:function(){var SDL2=Module['SDL2'];return SDL2.audioContext.sampleRate;},8780278:function($0,$1,$2,$3){var SDL2=Module['SDL2'];var have_microphone=function(stream){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer);SDL2.capture.silenceTimer=undefined;}SDL2.capture.mediaStreamNode=SDL2.audioContext.createMediaStreamSource(stream);SDL2.capture.scriptProcessorNode=SDL2.audioContext.createScriptProcessor($1,$0,1);SDL2.capture.scriptProcessorNode.onaudioprocess=function(audioProcessingEvent){if((SDL2===undefined)||(SDL2.capture===undefined)){return;}audioProcessingEvent.outputBuffer.getChannelData(0).fill(0.0);SDL2.capture.currentCaptureBuffer=audioProcessingEvent.inputBuffer;dynCall('vi',$2,[$3]);};SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode);SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination);SDL2.capture.stream=stream;};var no_microphone=function(error){};SDL2.capture.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.capture.silenceBuffer.getChannelData(0).fill(0.0);var silence_callback=function(){SDL2.capture.currentCaptureBuffer=SDL2.capture.silenceBuffer;dynCall('vi',$2,[$3]);};SDL2.capture.silenceTimer=setTimeout(silence_callback,($1/SDL2.audioContext.sampleRate)*1000);if((navigator.mediaDevices!==undefined)&&(navigator.mediaDevices.getUserMedia!==undefined)){navigator.mediaDevices.getUserMedia({audio:true,video:false}).then(have_microphone).catch(no_microphone);}else if(navigator.webkitGetUserMedia!==undefined){navigator.webkitGetUserMedia({audio:true,video:false},have_microphone,no_microphone);}},8781930:function($0,$1,$2,$3){var SDL2=Module['SDL2'];SDL2.audio.scriptProcessorNode=SDL2.audioContext['createScriptProcessor']($1,0,$0);SDL2.audio.scriptProcessorNode['onaudioprocess']=function(e){if((SDL2===undefined)||(SDL2.audio===undefined)){return;}SDL2.audio.currentOutputBuffer=e['outputBuffer'];dynCall('vi',$2,[$3]);};SDL2.audio.scriptProcessorNode['connect'](SDL2.audioContext['destination']);},8782340:function($0,$1){var SDL2=Module['SDL2'];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c>2];}}},8783425:function($0){var SDL2=Module['SDL2'];if($0){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer);}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i>2)]=value;else err('failed to set errno from JS');return value;}
+var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1);},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==='.'){parts.splice(i,1);}else if(last==='..'){parts.splice(i,1);up++;}else if(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)==='/';path=PATH.normalizeArray(path.split('/').filter(function(p){return!!p;}),!isAbsolute).join('/');if(!path&&!isAbsolute){path='.';}
+if(path&&trailingSlash){path+='/';}
+return(isAbsolute?'/':'')+path;},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return '.';}
+if(dir){dir=dir.substr(0,dir.length-1);}
+return root+dir;},basename:function(path){if(path==='/')return '/';var lastSlash=path.lastIndexOf('/');if(lastSlash===-1)return path;return 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);}};var PATH_FS={resolve:function(){var resolvedPath='',resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=(i>=0)?arguments[i]:FS.cwd();if(typeof path!=='string'){throw new TypeError('Arguments to path.resolve must be strings');}else if(!path){return '';}
+resolvedPath=path+'/'+resolvedPath;resolvedAbsolute=path.charAt(0)==='/';}
+resolvedPath=PATH.normalizeArray(resolvedPath.split('/').filter(function(p){return!!p;}),!resolvedAbsolute).join('/');return((resolvedAbsolute?'/':'')+resolvedPath)||'.';},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=='')break;}
+if(start>end)return[];return arr.slice(start,end-start+1);}
+var fromParts=trim(from.split('/'));var toParts=trim(to.split('/'));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString('utf-8');}else{result=null;}}else
+if(typeof window!='undefined'&&typeof window.prompt=='function'){result=window.prompt('Input: ');if(result!==null){result+='\n';}}else if(typeof readline=='function'){result=readline();if(result!==null){result+='\n';}}
+if(!result){return null;}
+tty.input=intArrayFromString(result,true);}
+return tty.input.shift();},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[];}else{if(val!=0)tty.output.push(val);}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[];}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[];}else{if(val!=0)tty.output.push(val);}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[];}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,'/',16384|511,0);},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63);}
+if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};}
+var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={};}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null;}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream;}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream;}
+node.timestamp=Date.now();if(parent){parent.contents[name]=node;}
+return node;},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,(prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return;},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return;}
+if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)));}
+node.usedBytes=newSize;return;}
+if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset);}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32);}
+var parts=PATH.normalizeArray(path.split('/').filter(function(p){return!!p;}),false);var current=FS.root;var current_path='/';for(var i=0;i40){throw new FS.ErrnoError(32);}}}}
+return{path:current_path,node:current};},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=='/'?mount+'/'+path:mount+path;}
+path=path?node.name+'/'+path:node.name;node=node.parent;}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length;},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node;},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next;}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break;}
+current=current.name_next;}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent);}
+var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node;}}
+return FS.lookup(parent,name);},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node;},destroyNode:function(node){FS.hashRemoveNode(node);},isRoot:function(node){return node===node.parent;},isMountpoint:function(node){return!!node.mounted;},isFile:function(mode){return(mode&61440)===32768;},isDir:function(mode){return(mode&61440)===16384;},isLink:function(mode){return(mode&61440)===40960;},isChrdev:function(mode){return(mode&61440)===8192;},isBlkdev:function(mode){return(mode&61440)===24576;},isFIFO:function(mode){return(mode&61440)===4096;},isSocket:function(mode){return(mode&49152)===49152;},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==='undefined'){throw new Error('Unknown file open mode: '+str);}
+return flags;},flagsToPermissionString:function(flag){var perms=['r','w','rw'][flag&3];if((flag&512)){perms+='w';}
+return perms;},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0;}
+if(perms.indexOf('r')!==-1&&!(node.mode&292)){return 2;}else if(perms.indexOf('w')!==-1&&!(node.mode&146)){return 2;}else if(perms.indexOf('x')!==-1&&!(node.mode&73)){return 2;}
+return 0;},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,'x');if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0;},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20;}catch(e){}
+return FS.nodePermissions(dir,'wx');},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name);}catch(e){return e.errno;}
+var errCode=FS.nodePermissions(dir,'wx');if(errCode){return errCode;}
+if(isdir){if(!FS.isDir(node.mode)){return 54;}
+if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10;}}else{if(FS.isDir(node.mode)){return 31;}}
+return 0;},mayOpen:function(node,flags){if(!node){return 44;}
+if(FS.isLink(node.mode)){return 32;}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=='r'||(flags&512)){return 31;}}
+return FS.nodePermissions(node,FS.flagsToPermissionString(flags));},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd;}}
+throw new FS.ErrnoError(33);},getStream:function(fd){return FS.streams[fd];},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node;},set:function(val){this.node=val;}},isRead:{get:function(){return(this.flags&2097155)!==1;}},isWrite:{get:function(){return(this.flags&2097155)!==0;}},isAppend:{get:function(){return(this.flags&1024);}}};}
+var newStream=new FS.FSStream();for(var p in stream){newStream[p]=stream[p];}
+stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream;},closeStream:function(fd){FS.streams[fd]=null;},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream);}},llseek:function(){throw new FS.ErrnoError(70);}},major:function(dev){return((dev)>>8);},minor:function(dev){return((dev)&0xff);},makedev:function(ma,mi){return((ma)<<8|(mi));},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops};},getDevice:function(dev){return FS.devices[dev];},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts);}
+return mounts;},syncfs:function(populate,callback){if(typeof(populate)==='function'){callback=populate;populate=false;}
+FS.syncFSRequests++;if(FS.syncFSRequests>1){err('warning: '+FS.syncFSRequests+' FS.syncfs operations in flight at once, probably just doing extra work');}
+var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(errCode);}
+function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode);}
+return;}
+if(++completed>=mounts.length){doCallback(null);}};mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null);}
+mount.type.syncfs(mount,populate,done);});},mount:function(type,opts,mountpoint){if(typeof type==='string'){throw type;}
+var root=mountpoint==='/';var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10);}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10);}
+if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54);}}
+var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot;}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount);}}
+return mountRoot;},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28);}
+var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current);}
+current=next;}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1);},lookup:function(parent,name){return parent.node_ops.lookup(parent,name);},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==='.'||name==='..'){throw new FS.ErrnoError(28);}
+var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode);}
+if(!parent.node_ops.mknod){throw new FS.ErrnoError(63);}
+return parent.node_ops.mknod(parent,name,mode,dev);},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0);},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0);},mkdirTree:function(path,mode){var dirs=path.split('/');var d='';for(var i=0;i';});},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},'/');FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={'MEMFS':MEMFS,};},init:function(input,output,error){assert(!FS.init.initialized,'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');FS.init.initialized=true;FS.ensureErrnoError();Module['stdin']=input||Module['stdin'];Module['stdout']=output||Module['stdout'];Module['stderr']=error||Module['stderr'];FS.createStandardStreams();},quit:function(){FS.init.initialized=false;var fflush=Module['_fflush'];if(fflush)fflush(0);for(var i=0;ithis.length-1||idx<0){return undefined;}
+var chunkOffset=idx%this.chunkSize;var chunkNum=(idx/this.chunkSize)|0;return this.getter(chunkNum)[chunkOffset];};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter;};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest();xhr.open('HEAD',url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest();xhr.open('GET',url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!='undefined')xhr.responseType='arraybuffer';if(xhr.overrideMimeType){xhr.overrideMimeType('text/plain; charset=x-user-defined');}
+xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array((xhr.response||[]));}else{return intArrayFromString(xhr.responseText||'',true);}});var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof(lazyArray.chunks[chunkNum])==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end);}
+if(typeof(lazyArray.chunks[chunkNum])==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum];});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed");}
+this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true;};if(typeof XMLHttpRequest!=='undefined'){if(!ENVIRONMENT_IS_WORKER)throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';var lazyArray=new LazyUint8Array();Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength();}
+return this._length;}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength();}
+return this._chunkSize;}}});var properties={isDevice:false,contents:lazyArray};}else{var properties={isDevice:false,url:url};}
+var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents;}else if(properties.url){node.contents=null;node.url=properties.url;}
+Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length;}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29);}
+return fn.apply(null,arguments);};});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29);}
+var contents=stream.node.contents;if(position>=contents.length)
+return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2)]=stat.dev;HEAP32[(((buf)+(4))>>2)]=0;HEAP32[(((buf)+(8))>>2)]=stat.ino;HEAP32[(((buf)+(12))>>2)]=stat.mode;HEAP32[(((buf)+(16))>>2)]=stat.nlink;HEAP32[(((buf)+(20))>>2)]=stat.uid;HEAP32[(((buf)+(24))>>2)]=stat.gid;HEAP32[(((buf)+(28))>>2)]=stat.rdev;HEAP32[(((buf)+(32))>>2)]=0;(tempI64=[stat.size>>>0,(tempDouble=stat.size,(+(Math_abs(tempDouble)))>=1.0?(tempDouble>0.0?((Math_min((+(Math_floor((tempDouble)/4294967296.0))),4294967295.0))|0)>>>0:(~~((+(Math_ceil((tempDouble-+(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0):0)],HEAP32[(((buf)+(40))>>2)]=tempI64[0],HEAP32[(((buf)+(44))>>2)]=tempI64[1]);HEAP32[(((buf)+(48))>>2)]=4096;HEAP32[(((buf)+(52))>>2)]=stat.blocks;HEAP32[(((buf)+(56))>>2)]=(stat.atime.getTime()/1000)|0;HEAP32[(((buf)+(60))>>2)]=0;HEAP32[(((buf)+(64))>>2)]=(stat.mtime.getTime()/1000)|0;HEAP32[(((buf)+(68))>>2)]=0;HEAP32[(((buf)+(72))>>2)]=(stat.ctime.getTime()/1000)|0;HEAP32[(((buf)+(76))>>2)]=0;(tempI64=[stat.ino>>>0,(tempDouble=stat.ino,(+(Math_abs(tempDouble)))>=1.0?(tempDouble>0.0?((Math_min((+(Math_floor((tempDouble)/4294967296.0))),4294967295.0))|0)>>>0:(~~((+(Math_ceil((tempDouble-+(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0):0)],HEAP32[(((buf)+(80))>>2)]=tempI64[0],HEAP32[(((buf)+(84))>>2)]=tempI64[1]);return 0;},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags);},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==='/')path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0;},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28;}
+FS.mknod(path,mode,dev);return 0;},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len;},doAccess:function(path,amode){if(amode&~7){return-28;}
+var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44;}
+var perms='';if(amode&4)perms+='r';if(amode&2)perms+='w';if(amode&1)perms+='x';if(perms&&FS.nodePermissions(node,perms)){return-2;}
+return 0;},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd;},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2)];var len=HEAP32[(((iov)+(i*8+4))>>2)];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2)];var len=HEAP32[(((iov)+(i*8+4))>>2)];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;}
+return ret;},varargs:undefined,get:function(){assert(SYSCALLS.varargs!=undefined);SYSCALLS.varargs+=4;var ret=HEAP32[(((SYSCALLS.varargs)-(4))>>2)];return ret;},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret;},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream;},get64:function(low,high){if(low>=0)assert(high===0);else assert(high===-1);return low;}};function ___syscall221(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28;}
+var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd;}
+case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0;}
+case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[(((arg)+(offset))>>1)]=2;return 0;}
+case 13:case 14:return 0;case 16:case 8:return-28;case 9:___setErrNo(28);return-1;default:{return-28;}}}catch(e){if(typeof FS==='undefined'||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}
+function ___syscall5(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd;}catch(e){if(typeof FS==='undefined'||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}
+function ___syscall54(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0;}
+case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0;}
+case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[((argp)>>2)]=0;return 0;}
+case 21520:{if(!stream.tty)return-59;return-28;}
+case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp);}
+case 21523:{if(!stream.tty)return-59;return 0;}
+case 21524:{if(!stream.tty)return-59;return 0;}
+default:abort('bad ioctl syscall '+op);}}catch(e){if(typeof FS==='undefined'||!(e instanceof FS.ErrnoError))abort(e);return-e.errno;}}
+function _abort(){abort();}
+function _atexit(func,arg){warnOnce('atexit() called, but EXIT_RUNTIME is not set, so atexits() will not be called. set EXIT_RUNTIME to 1 (see the FAQ)');__ATEXIT__.unshift({func:func,arg:arg});}
+var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process['hrtime']();return t[0]*1e3+t[1]/1e6;};}else if(typeof dateNow!=='undefined'){_emscripten_get_now=dateNow;}else _emscripten_get_now=function(){return performance.now();};var _emscripten_get_now_is_monotonic=true;;function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now();}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now();}else{___setErrNo(28);return-1;}
+HEAP32[((tp)>>2)]=(now/1000)|0;HEAP32[(((tp)+(4))>>2)]=((now%1000)*1000*1000)|0;return 0;}
+function _dlclose(handle){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking");}
+function _dlerror(){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking");}
+function _dlsym(handle,symbol){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking");}
+function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){console.error('emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up.');return 1;}
+if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick);};Browser.mainLoop.method='timeout';}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner);};Browser.mainLoop.method='rAF';}else if(mode==2){if(typeof setImmediate==='undefined'){var setImmediates=[];var emscriptenMainLoopMessageId='setimmediate';var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()();}}
+addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=(function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module['setImmediates']===undefined)Module['setImmediates']=[];Module['setImmediates'].push(func);postMessage({target:emscriptenMainLoopMessageId});}else postMessage(emscriptenMainLoopMessageId,"*");})}
+Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner);};Browser.mainLoop.method='immediate';}
+return 0;}
+function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,'emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.');Browser.mainLoop.func=func;Browser.mainLoop.arg=arg;var browserIterationFunc;if(typeof arg!=='undefined'){browserIterationFunc=function(){Module['dynCall_vi'](func,arg);};}else{browserIterationFunc=function(){Module['dynCall_v'](func);};}
+var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next;}else{next=next+0.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9;}}
+console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+' ms');Browser.mainLoop.updateStatus();if(thisMainLoopId1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return;}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now();}
+if(Browser.mainLoop.method==='timeout'&&Module.ctx){warnOnce('Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!');Browser.mainLoop.method='';}
+Browser.mainLoop.runIter(browserIterationFunc);checkStackCookie();if(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1000.0/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler();}
+if(simulateInfiniteLoop){throw 'unwind';}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++;},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler();},updateStatus:function(){if(Module['setStatus']){var message=Module['statusMessage']||'Please wait...';var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=(leftchar>>(leftbits-6))&0x3f;leftbits-=6;ret+=BASE[curr];}}
+if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD;}else if(leftbits==4){ret+=BASE[(leftchar&0xf)<<2];ret+=PAD;}
+return ret;}
+audio.src='data:audio/x-'+name.substr(-3)+';base64,'+encode64(byteArray);finish(audio);};audio.src=url;Browser.safeSetTimeout(function(){finish(audio);},10000);}else{return fail();}};Module['preloadPlugins'].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document['pointerLockElement']===Module['canvas']||document['mozPointerLockElement']===Module['canvas']||document['webkitPointerLockElement']===Module['canvas']||document['msPointerLockElement']===Module['canvas'];}
+var canvas=Module['canvas'];if(canvas){canvas.requestPointerLock=canvas['requestPointerLock']||canvas['mozRequestPointerLock']||canvas['webkitRequestPointerLock']||canvas['msRequestPointerLock']||function(){};canvas.exitPointerLock=document['exitPointerLock']||document['mozExitPointerLock']||document['webkitExitPointerLock']||document['msExitPointerLock']||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener('pointerlockchange',pointerLockChange,false);document.addEventListener('mozpointerlockchange',pointerLockChange,false);document.addEventListener('webkitpointerlockchange',pointerLockChange,false);document.addEventListener('mspointerlockchange',pointerLockChange,false);if(Module['elementPointerLock']){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module['canvas'].requestPointerLock){Module['canvas'].requestPointerLock();ev.preventDefault();}},false);}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1,};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute];}}
+if(typeof GL!=='undefined'){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx;}}}else{ctx=canvas.getContext('2d');}
+if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==='undefined','cannot set in module if GLctx is used, but we are a non-GL context that would replace it');Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init();}
+return ctx;},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==='undefined')Browser.lockPointer=true;if(typeof Browser.resizeCanvas==='undefined')Browser.resizeCanvas=false;var canvas=Module['canvas'];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document['fullscreenElement']||document['mozFullScreenElement']||document['msFullscreenElement']||document['webkitFullscreenElement']||document['webkitCurrentFullScreenElement'])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize();}else{Browser.updateCanvasDimensions(canvas);}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize();}else{Browser.updateCanvasDimensions(canvas);}}
+if(Module['onFullScreen'])Module['onFullScreen'](Browser.isFullscreen);if(Module['onFullscreen'])Module['onFullscreen'](Browser.isFullscreen);}
+if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener('fullscreenchange',fullscreenChange,false);document.addEventListener('mozfullscreenchange',fullscreenChange,false);document.addEventListener('webkitfullscreenchange',fullscreenChange,false);document.addEventListener('MSFullscreenChange',fullscreenChange,false);}
+var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer['requestFullscreen']||canvasContainer['mozRequestFullScreen']||canvasContainer['msRequestFullscreen']||(canvasContainer['webkitRequestFullscreen']?function(){canvasContainer['webkitRequestFullscreen'](Element['ALLOW_KEYBOARD_INPUT'])}:null)||(canvasContainer['webkitRequestFullScreen']?function(){canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT'])}:null);canvasContainer.requestFullscreen();},requestFullScreen:function(){abort('Module.requestFullScreen has been replaced by Module.requestFullscreen (without a capital S)');},exitFullscreen:function(){if(!Browser.isFullscreen){return false;}
+var CFS=document['exitFullscreen']||document['cancelFullScreen']||document['mozCancelFullScreen']||document['msExitFullscreen']||document['webkitCancelFullScreen']||(function(){});CFS.apply(document,[]);return true;},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1000/60;}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1000/60;}}
+var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay);},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==='function'){requestAnimationFrame(func);return;}
+var RAF=Browser.fakeRequestAnimationFrame;RAF(func);},safeCallback:function(func){return function(){if(!ABORT)return func.apply(null,arguments);};},allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=false;},resumeAsyncCallbacks:function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach(function(func){func();});}},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func();}else{Browser.queuedAsyncCallbacks.push(func);}});},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func();}else{Browser.queuedAsyncCallbacks.push(func);}},timeout);},safeSetInterval:function(func,timeout){noExitRuntime=true;return setInterval(function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func();}},timeout);},getMimetype:function(name){return{'jpg':'image/jpeg','jpeg':'image/jpeg','png':'image/png','bmp':'image/bmp','ogg':'audio/ogg','wav':'audio/wav','mp3':'audio/mpeg'}[name.substr(name.lastIndexOf('.')+1)];},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator['getUserMedia']||navigator['mozGetUserMedia'];}
+window.getUserMedia(func);},getMovementX:function(event){return event['movementX']||event['mozMovementX']||event['webkitMovementX']||0;},getMovementY:function(event){return event['movementY']||event['mozMovementY']||event['webkitMovementY']||0;},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case 'DOMMouseScroll':delta=event.detail/3;break;case 'mousewheel':delta=event.wheelDelta/120;break;case 'wheel':delta=event.deltaY
+switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw 'unrecognized mouse wheel delta mode: '+event.deltaMode;}
+break;default:throw 'unrecognized mouse wheel event: '+event.type;}
+return delta;},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!='mousemove'&&('mozMovementX'in event)){Browser.mouseMovementX=Browser.mouseMovementY=0;}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event);}
+if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY;}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY;}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=((typeof window.scrollX!=='undefined')?window.scrollX:window.pageXOffset);var scrollY=((typeof window.scrollY!=='undefined')?window.scrollY:window.pageYOffset);assert((typeof scrollX!=='undefined')&&(typeof scrollY!=='undefined'),'Unable to retrieve scroll position, mouse positions likely broken.');if(event.type==='touchstart'||event.type==='touchend'||event.type==='touchmove'){var touch=event.touch;if(touch===undefined){return;}
+var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==='touchstart'){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords;}else if(event.type==='touchend'||event.type==='touchmove'){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords;}
+return;}
+var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y;}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency('al '+url):'';readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep);},function(event){if(onerror){onerror();}else{throw 'Loading data file "'+url+'" failed.';}});if(dep)addRunDependency(dep);},resizeListeners:[],updateResizeListeners:function(){var canvas=Module['canvas'];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height);});},setCanvasSize:function(width,height,noUpdates){var canvas=Module['canvas'];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners();},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[((SDL.screen)>>2)];flags=flags|0x00800000;HEAP32[((SDL.screen)>>2)]=flags}
+Browser.updateCanvasDimensions(Module['canvas']);Browser.updateResizeListeners();},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[((SDL.screen)>>2)];flags=flags&~0x00800000;HEAP32[((SDL.screen)>>2)]=flags}
+Browser.updateCanvasDimensions(Module['canvas']);Browser.updateResizeListeners();},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative;}else{wNative=canvas.widthNative;hNative=canvas.heightNative;}
+var w=wNative;var h=hNative;if(Module['forcedAspectRatio']&&Module['forcedAspectRatio']>0){if(w/h>2)];if(param==0x3021){var alphaSize=HEAP32[(((attribList)+(4))>>2)];EGL.contextAttributes.alpha=(alphaSize>0);}else if(param==0x3025){var depthSize=HEAP32[(((attribList)+(4))>>2)];EGL.contextAttributes.depth=(depthSize>0);}else if(param==0x3026){var stencilSize=HEAP32[(((attribList)+(4))>>2)];EGL.contextAttributes.stencil=(stencilSize>0);}else if(param==0x3031){var samples=HEAP32[(((attribList)+(4))>>2)];EGL.contextAttributes.antialias=(samples>0);}else if(param==0x3032){var samples=HEAP32[(((attribList)+(4))>>2)];EGL.contextAttributes.antialias=(samples==1);}else if(param==0x3100){var requestedPriority=HEAP32[(((attribList)+(4))>>2)];EGL.contextAttributes.lowLatency=(requestedPriority!=0x3103);}else if(param==0x3038){break;}
+attribList+=8;}}
+if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(0x300C);return 0;}
+if(numConfigs){HEAP32[((numConfigs)>>2)]=1;}
+if(config&&config_size>0){HEAP32[((config)>>2)]=62002;}
+EGL.setErrorCode(0x3000);return 1;}};function _eglBindAPI(api){if(api==0x30A0){EGL.setErrorCode(0x3000);return 1;}else{EGL.setErrorCode(0x300C);return 0;}}
+function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs);}
+function __webgl_acquireInstancedArraysExtension(ctx){var ext=ctx.getExtension('ANGLE_instanced_arrays');if(ext){ctx['vertexAttribDivisor']=function(index,divisor){ext['vertexAttribDivisorANGLE'](index,divisor);};ctx['drawArraysInstanced']=function(mode,first,count,primcount){ext['drawArraysInstancedANGLE'](mode,first,count,primcount);};ctx['drawElementsInstanced']=function(mode,count,type,indices,primcount){ext['drawElementsInstancedANGLE'](mode,count,type,indices,primcount);};}}
+function __webgl_acquireVertexArrayObjectExtension(ctx){var ext=ctx.getExtension('OES_vertex_array_object');if(ext){ctx['createVertexArray']=function(){return ext['createVertexArrayOES']();};ctx['deleteVertexArray']=function(vao){ext['deleteVertexArrayOES'](vao);};ctx['bindVertexArray']=function(vao){ext['bindVertexArrayOES'](vao);};ctx['isVertexArray']=function(vao){return ext['isVertexArrayOES'](vao);};}}
+function __webgl_acquireDrawBuffersExtension(ctx){var ext=ctx.getExtension('WEBGL_draw_buffers');if(ext){ctx['drawBuffers']=function(n,bufs){ext['drawBuffersWEBGL'](n,bufs);};}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2)]:-1;source+=UTF8ToString(HEAP32[(((string)+(i*4))>>2)],len<0?undefined:len);}
+return source;},createContext:function(canvas,webGLContextAttributes){var ctx=(canvas.getContext("webgl",webGLContextAttributes));if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle;},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==='undefined'||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context);}
+return handle;},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx);},getContext:function(contextHandle){return GL.contexts[contextHandle];},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==='object')JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null;},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;if(context.version<2){__webgl_acquireInstancedArraysExtension(GLctx);__webgl_acquireVertexArrayObjectExtension(GLctx);__webgl_acquireDrawBuffersExtension(GLctx);}
+GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"];function shouldEnableAutomatically(extension){var ret=false;automaticallyEnabledExtensions.forEach(function(include){if(extension.indexOf(include)!=-1){ret=true;}});return ret;}
+var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext);}});},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,0x8B86);for(var i=0;i>2)];if(param==0x3098){glesContextVersion=HEAP32[(((contextAttribs)+(4))>>2)];}else if(param==0x3038){break;}else{EGL.setErrorCode(0x3004);return 0;}
+contextAttribs+=8;}
+if(glesContextVersion!=2){EGL.setErrorCode(0x3005);return 0;}
+EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module['canvas'],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(0x3000);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004;}else{EGL.setErrorCode(0x3009);return 0;}}
+function _eglCreateWindowSurface(display,config,win,attrib_list){if(display!=62000){EGL.setErrorCode(0x3008);return 0;}
+if(config!=62002){EGL.setErrorCode(0x3005);return 0;}
+EGL.setErrorCode(0x3000);return 62006;}
+function _eglDestroyContext(display,context){if(display!=62000){EGL.setErrorCode(0x3008);return 0;}
+if(context!=62004){EGL.setErrorCode(0x3006);return 0;}
+GL.deleteContext(EGL.context);EGL.setErrorCode(0x3000);if(EGL.currentContext==context){EGL.currentContext=0;}
+return 1;}
+function _eglDestroySurface(display,surface){if(display!=62000){EGL.setErrorCode(0x3008);return 0;}
+if(surface!=62006){EGL.setErrorCode(0x300D);return 1;}
+if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0;}
+if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0;}
+EGL.setErrorCode(0x3000);return 1;}
+function _eglGetConfigAttrib(display,config,attribute,value){if(display!=62000){EGL.setErrorCode(0x3008);return 0;}
+if(config!=62002){EGL.setErrorCode(0x3005);return 0;}
+if(!value){EGL.setErrorCode(0x300C);return 0;}
+EGL.setErrorCode(0x3000);switch(attribute){case 0x3020:HEAP32[((value)>>2)]=EGL.contextAttributes.alpha?32:24;return 1;case 0x3021:HEAP32[((value)>>2)]=EGL.contextAttributes.alpha?8:0;return 1;case 0x3022:HEAP32[((value)>>2)]=8;return 1;case 0x3023:HEAP32[((value)>>2)]=8;return 1;case 0x3024:HEAP32[((value)>>2)]=8;return 1;case 0x3025:HEAP32[((value)>>2)]=EGL.contextAttributes.depth?24:0;return 1;case 0x3026:HEAP32[((value)>>2)]=EGL.contextAttributes.stencil?8:0;return 1;case 0x3027:HEAP32[((value)>>2)]=0x3038;return 1;case 0x3028:HEAP32[((value)>>2)]=62002;return 1;case 0x3029:HEAP32[((value)>>2)]=0;return 1;case 0x302A:HEAP32[((value)>>2)]=4096;return 1;case 0x302B:HEAP32[((value)>>2)]=16777216;return 1;case 0x302C:HEAP32[((value)>>2)]=4096;return 1;case 0x302D:HEAP32[((value)>>2)]=0;return 1;case 0x302E:HEAP32[((value)>>2)]=0;return 1;case 0x302F:HEAP32[((value)>>2)]=0x3038;return 1;case 0x3031:HEAP32[((value)>>2)]=EGL.contextAttributes.antialias?4:0;return 1;case 0x3032:HEAP32[((value)>>2)]=EGL.contextAttributes.antialias?1:0;return 1;case 0x3033:HEAP32[((value)>>2)]=0x4;return 1;case 0x3034:HEAP32[((value)>>2)]=0x3038;return 1;case 0x3035:case 0x3036:case 0x3037:HEAP32[((value)>>2)]=-1;return 1;case 0x3039:case 0x303A:HEAP32[((value)>>2)]=0;return 1;case 0x303B:HEAP32[((value)>>2)]=0;return 1;case 0x303C:HEAP32[((value)>>2)]=1;return 1;case 0x303D:case 0x303E:HEAP32[((value)>>2)]=0;return 1;case 0x303F:HEAP32[((value)>>2)]=0x308E;return 1;case 0x3040:HEAP32[((value)>>2)]=0x4;return 1;case 0x3042:HEAP32[((value)>>2)]=0;return 1;default:EGL.setErrorCode(0x3004);return 0;}}
+function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(0x3000);return 62000;}
+function _eglGetError(){return EGL.errorCode;}
+function _eglGetProcAddress(name_){return _emscripten_GetProcAddress(name_);}
+function _eglInitialize(display,majorVersion,minorVersion){if(display==62000){if(majorVersion){HEAP32[((majorVersion)>>2)]=1;}
+if(minorVersion){HEAP32[((minorVersion)>>2)]=4;}
+EGL.defaultDisplayInitialized=true;EGL.setErrorCode(0x3000);return 1;}
+else{EGL.setErrorCode(0x3008);return 0;}}
+function _eglMakeCurrent(display,draw,read,context){if(display!=62000){EGL.setErrorCode(0x3008);return 0;}
+if(context!=0&&context!=62004){EGL.setErrorCode(0x3006);return 0;}
+if((read!=0&&read!=62006)||(draw!=0&&draw!=62006)){EGL.setErrorCode(0x300D);return 0;}
+GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(0x3000);return 1;}
+function _eglQueryString(display,name){if(display!=62000){EGL.setErrorCode(0x3008);return 0;}
+EGL.setErrorCode(0x3000);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 0x3053:ret=allocateUTF8("Emscripten");break;case 0x3054:ret=allocateUTF8("1.4 Emscripten EGL");break;case 0x3055:ret=allocateUTF8("");break;case 0x308D:ret=allocateUTF8("OpenGL_ES");break;default:EGL.setErrorCode(0x300C);return 0;}
+EGL.stringCache[name]=ret;return ret;}
+function _eglSwapBuffers(){if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(0x3001);}else if(!Module.ctx){EGL.setErrorCode(0x3002);}else if(Module.ctx.isContextLost()){EGL.setErrorCode(0x300E);}else{EGL.setErrorCode(0x3000);return 1;}
+return 0;}
+function _eglSwapInterval(display,interval){if(display!=62000){EGL.setErrorCode(0x3008);return 0;}
+if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(0x3000);return 1;}
+function _eglTerminate(display){if(display!=62000){EGL.setErrorCode(0x3008);return 0;}
+EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(0x3000);return 1;}
+function _eglWaitClient(){EGL.setErrorCode(0x3000);return 1;}function _eglWaitGL(){return _eglWaitClient();}
+function _eglWaitNative(nativeEngineId){EGL.setErrorCode(0x3000);return 1;}
+var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i);}
+JSEvents.eventHandlers=[];JSEvents.deferredCalls=[];},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true;}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false;}
+return true;}
+for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return;}}
+JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2)]=canvas.width;HEAP32[((height)>>2)]=canvas.height;}function __get_canvas_element_size(target){var stackTop=stackSave();var w=stackAlloc(8);var h=w+4;var targetInt=stackAlloc(target.id.length+1);stringToUTF8(target.id,targetInt,target.id.length+1);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[((w)>>2)],HEAP32[((h)>>2)]];stackRestore(stackTop);return size;}
+function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0;}function __set_canvas_element_size(target,width,height){if(!target.controlTransferredOffscreen){target.width=width;target.height=height;}else{var stackTop=stackSave();var targetInt=stackAlloc(target.id.length+1);stringToUTF8(target.id,targetInt,target.id.length+1);_emscripten_set_canvas_element_size(targetInt,width,height);stackRestore(stackTop);}}function __registerRestoreOldStyle(canvas){var canvasSize=__get_canvas_element_size(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement||document.msFullscreenElement;if(!fullscreenElement){document.removeEventListener('fullscreenchange',restoreOldStyle);document.removeEventListener('webkitfullscreenchange',restoreOldStyle);__set_canvas_element_size(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor='white';document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(__currentFullscreenStrategy.canvasResizedCallback){dynCall_iiii(__currentFullscreenStrategy.canvasResizedCallback,37,0,__currentFullscreenStrategy.canvasResizedCallbackUserData);}}}
+document.addEventListener('fullscreenchange',restoreOldStyle);document.addEventListener('webkitfullscreenchange',restoreOldStyle);return restoreOldStyle;}
+function __setLetterbox(element,topBottom,leftRight){element.style.paddingLeft=element.style.paddingRight=leftRight+'px';element.style.paddingTop=element.style.paddingBottom=topBottom+'px';}
+function __getBoundingClientRect(e){return __specialEventTargets.indexOf(e)<0?e.getBoundingClientRect():{'left':0,'top':0};}function _JSEvents_resizeCanvasForFullscreen(target,strategy){var restoreOldStyle=__registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=__getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=__get_canvas_element_size(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){__setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight;}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight>3)]=rect.width;HEAPF64[((height)>>3)]=rect.height;return 0;}
+function __fillGamepadEventData(eventStruct,e){HEAPF64[((eventStruct)>>3)]=e.timestamp;for(var i=0;i>3)]=e.axes[i];}
+for(var i=0;i>3)]=e.buttons[i].value;}else{HEAPF64[(((eventStruct+i*8)+(528))>>3)]=e.buttons[i];}}
+for(var i=0;i>2)]=e.buttons[i].pressed;}else{HEAP32[(((eventStruct+i*4)+(1040))>>2)]=e.buttons[i]==1;}}
+HEAP32[(((eventStruct)+(1296))>>2)]=e.connected;HEAP32[(((eventStruct)+(1300))>>2)]=e.index;HEAP32[(((eventStruct)+(8))>>2)]=e.axes.length;HEAP32[(((eventStruct)+(12))>>2)]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64);}function _emscripten_get_gamepad_status(index,gamepadState){if(!JSEvents.lastGamepadState)throw 'emscripten_get_gamepad_status() can only be called after having first called emscripten_sample_gamepad_data() and that function has returned EMSCRIPTEN_RESULT_SUCCESS!';if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;__fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0;}
+function _emscripten_get_num_gamepads(){if(!JSEvents.lastGamepadState)throw 'emscripten_get_num_gamepads() can only be called after having first called emscripten_sample_gamepad_data() and that function has returned EMSCRIPTEN_RESULT_SUCCESS!';return JSEvents.lastGamepadState.length;}
+function _emscripten_get_sbrk_ptr(){return 14350080;}
+function _emscripten_glActiveTexture(x0){GLctx['activeTexture'](x0)}
+function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader]);}
+function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt['beginQueryEXT'](target,GL.timerQueriesEXT[id]);}
+function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name));}
+function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer]);}
+function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer]);}
+function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer]);}
+function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture]);}
+function _emscripten_glBindVertexArrayOES(vao){GLctx['bindVertexArray'](GL.vaos[vao]);}
+function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx['blendColor'](x0,x1,x2,x3)}
+function _emscripten_glBlendEquation(x0){GLctx['blendEquation'](x0)}
+function _emscripten_glBlendEquationSeparate(x0,x1){GLctx['blendEquationSeparate'](x0,x1)}
+function _emscripten_glBlendFunc(x0,x1){GLctx['blendFunc'](x0,x1)}
+function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx['blendFuncSeparate'](x0,x1,x2,x3)}
+function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage);}
+function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size));}
+function _emscripten_glCheckFramebufferStatus(x0){return GLctx['checkFramebufferStatus'](x0)}
+function _emscripten_glClear(x0){GLctx['clear'](x0)}
+function _emscripten_glClearColor(x0,x1,x2,x3){GLctx['clearColor'](x0,x1,x2,x3)}
+function _emscripten_glClearDepthf(x0){GLctx['clearDepth'](x0)}
+function _emscripten_glClearStencil(x0){GLctx['clearStencil'](x0)}
+function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha);}
+function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader]);}
+function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx['compressedTexImage2D'](target,level,internalFormat,width,height,border,data?HEAPU8.subarray((data),(data+imageSize)):null);}
+function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx['compressedTexSubImage2D'](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray((data),(data+imageSize)):null);}
+function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx['copyTexImage2D'](x0,x1,x2,x3,x4,x5,x6,x7)}
+function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx['copyTexSubImage2D'](x0,x1,x2,x3,x4,x5,x6,x7)}
+function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id;}
+function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id;}
+function _emscripten_glCullFace(x0){GLctx['cullFace'](x0)}
+function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i>2)];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GL.currArrayBuffer)GL.currArrayBuffer=0;if(id==GL.currElementArrayBuffer)GL.currElementArrayBuffer=0;}}
+function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2)];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null;}}
+function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(0x501);return;}
+GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null;}
+function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i>2)];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt['deleteQueryEXT'](query);GL.timerQueriesEXT[id]=null;}}
+function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i>2)];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null;}}
+function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(0x501);return;}
+GLctx.deleteShader(shader);GL.shaders[id]=null;}
+function _emscripten_glDeleteTextures(n,textures){for(var i=0;i>2)];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null;}}
+function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i>2)];GLctx['deleteVertexArray'](GL.vaos[id]);GL.vaos[id]=null;}}
+function _emscripten_glDepthFunc(x0){GLctx['depthFunc'](x0)}
+function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag);}
+function _emscripten_glDepthRangef(x0,x1){GLctx['depthRange'](x0,x1)}
+function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader]);}
+function _emscripten_glDisable(x0){GLctx['disable'](x0)}
+function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index);}
+function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count);}
+function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx['drawArraysInstanced'](mode,first,count,primcount);}
+var __tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=__tempFixedLengthArray[n];for(var i=0;i>2)];}
+GLctx['drawBuffers'](bufArray);}
+function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices);}
+function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx['drawElementsInstanced'](mode,count,type,indices,primcount);}
+function _emscripten_glEnable(x0){GLctx['enable'](x0)}
+function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index);}
+function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt['endQueryEXT'](target);}
+function _emscripten_glFinish(){GLctx['finish']()}
+function _emscripten_glFlush(){GLctx['flush']()}
+function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer]);}
+function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level);}
+function _emscripten_glFrontFace(x0){GLctx['frontFace'](x0)}
+function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2)]=id;}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,'createBuffer',GL.buffers);}
+function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,'createFramebuffer',GL.framebuffers);}
+function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i>2)]=0;return;}
+var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[(((ids)+(i*4))>>2)]=id;}}
+function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,'createRenderbuffer',GL.renderbuffers);}
+function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,'createTexture',GL.textures);}
+function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,'createVertexArray',GL.vaos);}
+function _emscripten_glGenerateMipmap(x0){GLctx['generateMipmap'](x0)}
+function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx.getActiveAttrib(program,index);if(!info)return;var numBytesWrittenExclNull=(bufSize>0&&name)?stringToUTF8(info.name,name,bufSize):0;if(length)HEAP32[((length)>>2)]=numBytesWrittenExclNull;if(size)HEAP32[((size)>>2)]=info.size;if(type)HEAP32[((type)>>2)]=info.type;}
+function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx.getActiveUniform(program,index);if(!info)return;var numBytesWrittenExclNull=(bufSize>0&&name)?stringToUTF8(info.name,name,bufSize):0;if(length)HEAP32[((length)>>2)]=numBytesWrittenExclNull;if(size)HEAP32[((size)>>2)]=info.size;if(type)HEAP32[((type)>>2)]=info.type;}
+function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount;}
+HEAP32[((count)>>2)]=len;for(var i=0;i>2)]=id;}}
+function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));}
+function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296;}
+function readI53FromU64(ptr){return HEAPU32[ptr>>2]+HEAPU32[ptr+4>>2]*4294967296;}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296;var deserialized=(num>=0)?readI53FromU64(ptr):readI53FromI64(ptr);if(deserialized!=num)warnOnce('writeI53ToI64() out of range: serialized JS Number '+num+' to Wasm heap as bytes lo=0x'+HEAPU32[ptr>>2].toString(16)+', hi=0x'+HEAPU32[ptr+4>>2].toString(16)+', which deserializes back to '+deserialized+' instead!');}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(0x501);return;}
+var ret=undefined;switch(name_){case 0x8DFA:ret=1;break;case 0x8DF8:if(type!=0&&type!=1){GL.recordError(0x500);}
+return;case 0x8DF9:ret=0;break;case 0x86A2:var formats=GLctx.getParameter(0x86A3);ret=formats?formats.length:0;break;}
+if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof(result)){case "number":ret=result;break;case "boolean":ret=result?1:0;break;case "string":GL.recordError(0x500);return;case "object":if(result===null){switch(name_){case 0x8894:case 0x8B8D:case 0x8895:case 0x8CA6:case 0x8CA7:case 0x8069:case 0x85B5:case 0x8514:{ret=0;break;}
+default:{GL.recordError(0x500);return;}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2)]=result[i];break;case 2:HEAPF32[(((p)+(i*4))>>2)]=result[i];break;case 4:HEAP8[(((p)+(i))>>0)]=result[i]?1:0;break;}}
+return;}else{try{ret=result.name|0;}catch(e){GL.recordError(0x500);err('GL_INVALID_ENUM in glGet'+type+'v: Unknown object returned from WebGL getParameter('+name_+')! (error: '+e+')');return;}}
+break;default:GL.recordError(0x500);err('GL_INVALID_ENUM in glGet'+type+'v: Native code calling glGet'+type+'v('+name_+') and it returns '+result+' of type '+typeof(result)+'!');return;}}
+switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[((p)>>2)]=ret;break;case 2:HEAPF32[((p)>>2)]=ret;break;case 4:HEAP8[((p)>>0)]=ret?1:0;break;}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4);}
+function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(0x501);return;}
+HEAP32[((data)>>2)]=GLctx.getBufferParameter(target,value);}
+function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error;}
+function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2);}
+function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0;}
+HEAP32[((params)>>2)]=result;}
+function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0);}
+function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log='(unknown error)';var numBytesWrittenExclNull=(maxLength>0&&infoLog)?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[((length)>>2)]=numBytesWrittenExclNull;}
+function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(0x501);return;}
+if(program>=GL.counter){GL.recordError(0x501);return;}
+var ptable=GL.programInfos[program];if(!ptable){GL.recordError(0x502);return;}
+if(pname==0x8B84){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log='(unknown error)';HEAP32[((p)>>2)]=log.length+1;}else if(pname==0x8B87){HEAP32[((p)>>2)]=ptable.maxUniformLength;}else if(pname==0x8B8A){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,0x8B89);ptable.maxAttributeLength=0;for(var i=0;i>2)]=ptable.maxAttributeLength;}else if(pname==0x8A35){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,0x8A36);ptable.maxUniformBlockNameLength=0;for(var i=0;i>2)]=ptable.maxUniformBlockNameLength;}else{HEAP32[((p)>>2)]=GLctx.getProgramParameter(GL.programs[program],pname);}}
+function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(0x501);return;}
+var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt['getQueryObjectEXT'](query,pname);var ret;if(typeof param=='boolean'){ret=param?1:0;}else{ret=param;}
+writeI53ToI64(params,ret);}
+function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(0x501);return;}
+var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt['getQueryObjectEXT'](query,pname);var ret;if(typeof param=='boolean'){ret=param?1:0;}else{ret=param;}
+HEAP32[((params)>>2)]=ret;}
+function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(0x501);return;}
+var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt['getQueryObjectEXT'](query,pname);var ret;if(typeof param=='boolean'){ret=param?1:0;}else{ret=param;}
+writeI53ToI64(params,ret);}
+function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(0x501);return;}
+var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt['getQueryObjectEXT'](query,pname);var ret;if(typeof param=='boolean'){ret=param?1:0;}else{ret=param;}
+HEAP32[((params)>>2)]=ret;}
+function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(0x501);return;}
+HEAP32[((params)>>2)]=GLctx.disjointTimerQueryExt['getQueryEXT'](target,pname);}
+function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(0x501);return;}
+HEAP32[((params)>>2)]=GLctx.getRenderbufferParameter(target,pname);}
+function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log='(unknown error)';var numBytesWrittenExclNull=(maxLength>0&&infoLog)?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[((length)>>2)]=numBytesWrittenExclNull;}
+function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[((range)>>2)]=result.rangeMin;HEAP32[(((range)+(4))>>2)]=result.rangeMax;HEAP32[((precision)>>2)]=result.precision;}
+function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=(bufSize>0&&source)?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[((length)>>2)]=numBytesWrittenExclNull;}
+function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(0x501);return;}
+if(pname==0x8B84){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log='(unknown error)';HEAP32[((p)>>2)]=log.length+1;}else if(pname==0x8B88){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=(source===null||source.length==0)?0:source.length+1;HEAP32[((p)>>2)]=sourceLength;}else{HEAP32[((p)>>2)]=GLctx.getShaderParameter(GL.shaders[shader],pname);}}
+function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString;}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 0x1F03:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return "GL_"+e;}));ret=stringToNewUTF8(exts.join(' '));break;case 0x1F00:case 0x1F01:case 0x9245:case 0x9246:var s=GLctx.getParameter(name_);if(!s){GL.recordError(0x500);}
+ret=stringToNewUTF8(s);break;case 0x1F02:var glVersion=GLctx.getParameter(0x1F02);{glVersion='OpenGL ES 2.0 ('+glVersion+')';}
+ret=stringToNewUTF8(glVersion);break;case 0x8B8C:var glslVersion=GLctx.getParameter(0x8B8C);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+'0';glslVersion='OpenGL ES GLSL ES '+ver_num[1]+' ('+glslVersion+')';}
+ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(0x500);return 0;}
+GL.stringCache[name_]=ret;return ret;}
+function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(0x501);return;}
+HEAPF32[((params)>>2)]=GLctx.getTexParameter(target,pname);}
+function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(0x501);return;}
+HEAP32[((params)>>2)]=GLctx.getTexParameter(target,pname);}
+function jstoi_q(str){return parseInt(str,undefined);}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]==']'){var leftBrace=name.lastIndexOf('[');arrayIndex=name[leftBrace+1]!=']'?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace);}
+var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex>2)]=data;break;case 2:HEAPF32[((params)>>2)]=data;break;default:throw 'internal emscriptenWebGLGetUniform() error, bad type: '+type;}}else{for(var i=0;i>2)]=data[i];break;case 2:HEAPF32[(((params)+(i*4))>>2)]=data[i];break;default:throw 'internal emscriptenWebGLGetUniform() error, bad type: '+type;}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2);}
+function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0);}
+function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(0x501);return;}
+HEAP32[((pointer)>>2)]=GLctx.getVertexAttribOffset(index,pname);}
+function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(0x501);return;}
+var data=GLctx.getVertexAttrib(index,pname);if(pname==0x889F){HEAP32[((params)>>2)]=data["name"];}else if(typeof data=='number'||typeof data=='boolean'){switch(type){case 0:HEAP32[((params)>>2)]=data;break;case 2:HEAPF32[((params)>>2)]=data;break;case 5:HEAP32[((params)>>2)]=Math.fround(data);break;default:throw 'internal emscriptenWebGLGetVertexAttrib() error, bad type: '+type;}}else{for(var i=0;i>2)]=data[i];break;case 2:HEAPF32[(((params)+(i*4))>>2)]=data[i];break;case 5:HEAP32[(((params)+(i*4))>>2)]=Math.fround(data[i]);break;default:throw 'internal emscriptenWebGLGetVertexAttrib() error, bad type: '+type;}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2);}
+function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5);}
+function _emscripten_glHint(x0,x1){GLctx['hint'](x0,x1)}
+function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b);}
+function _emscripten_glIsEnabled(x0){return GLctx['isEnabled'](x0)}
+function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb);}
+function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program);}
+function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt['isQueryEXT'](query);}
+function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb);}
+function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s);}
+function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture);}
+function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx['isVertexArray'](vao);}
+function _emscripten_glLineWidth(x0){GLctx['lineWidth'](x0)}
+function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program);}
+function _emscripten_glPixelStorei(pname,param){if(pname==0xCF5){GL.unpackAlignment=param;}
+GLctx.pixelStorei(pname,param);}
+function _emscripten_glPolygonOffset(x0,x1){GLctx['polygonOffset'](x0,x1)}
+function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt['queryCounterEXT'](GL.timerQueriesEXT[id],target);}
+function __computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return(x+y-1)&-y;}
+var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize;}
+function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4,};return colorChannels[format-0x1902]||1;}
+function __heapObjectForWebGLType(type){type-=0x1400;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)
+return HEAPU32;return HEAPU16;}
+function __heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT);}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=__heapObjectForWebGLType(type);var shift=__heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift);}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(0x500);return;}
+GLctx.readPixels(x,y,width,height,format,type,pixelData);}
+function _emscripten_glReleaseShaderCompiler(){}
+function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx['renderbufferStorage'](x0,x1,x2,x3)}
+function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert);}
+function _emscripten_glScissor(x0,x1,x2,x3){GLctx['scissor'](x0,x1,x2,x3)}
+function _emscripten_glShaderBinary(){GL.recordError(0x500);}
+function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source);}
+function _emscripten_glStencilFunc(x0,x1,x2){GLctx['stencilFunc'](x0,x1,x2)}
+function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx['stencilFuncSeparate'](x0,x1,x2,x3)}
+function _emscripten_glStencilMask(x0){GLctx['stencilMask'](x0)}
+function _emscripten_glStencilMaskSeparate(x0,x1){GLctx['stencilMaskSeparate'](x0,x1)}
+function _emscripten_glStencilOp(x0,x1,x2){GLctx['stencilOp'](x0,x1,x2)}
+function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx['stencilOpSeparate'](x0,x1,x2,x3)}
+function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null);}
+function _emscripten_glTexParameterf(x0,x1,x2){GLctx['texParameterf'](x0,x1,x2)}
+function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[((params)>>2)];GLctx.texParameterf(target,pname,param);}
+function _emscripten_glTexParameteri(x0,x1,x2){GLctx['texParameteri'](x0,x1,x2)}
+function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[((params)>>2)];GLctx.texParameteri(target,pname,param);}
+function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData);}
+function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0);}
+function _emscripten_glUniform1fv(location,count,value){if(count<=GL.MINI_TEMP_BUFFER_SIZE){var view=GL.miniTempBufferFloatViews[count-1];for(var i=0;i>2)];}}else
+{var view=HEAPF32.subarray((value)>>2,(value+count*4)>>2);}
+GLctx.uniform1fv(GL.uniforms[location],view);}
+function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0);}
+function _emscripten_glUniform1iv(location,count,value){if(count<=GL.MINI_TEMP_BUFFER_SIZE){var view=GL.miniTempBufferIntViews[count-1];for(var i=0;i>2)];}}else
+{var view=HEAP32.subarray((value)>>2,(value+count*4)>>2);}
+GLctx.uniform1iv(GL.uniforms[location],view);}
+function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1);}
+function _emscripten_glUniform2fv(location,count,value){if(2*count<=GL.MINI_TEMP_BUFFER_SIZE){var view=GL.miniTempBufferFloatViews[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[(((value)+(4*i))>>2)];view[i+1]=HEAPF32[(((value)+(4*i+4))>>2)];}}else
+{var view=HEAPF32.subarray((value)>>2,(value+count*8)>>2);}
+GLctx.uniform2fv(GL.uniforms[location],view);}
+function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1);}
+function _emscripten_glUniform2iv(location,count,value){if(2*count<=GL.MINI_TEMP_BUFFER_SIZE){var view=GL.miniTempBufferIntViews[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[(((value)+(4*i))>>2)];view[i+1]=HEAP32[(((value)+(4*i+4))>>2)];}}else
+{var view=HEAP32.subarray((value)>>2,(value+count*8)>>2);}
+GLctx.uniform2iv(GL.uniforms[location],view);}
+function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2);}
+function _emscripten_glUniform3fv(location,count,value){if(3*count<=GL.MINI_TEMP_BUFFER_SIZE){var view=GL.miniTempBufferFloatViews[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[(((value)+(4*i))>>2)];view[i+1]=HEAPF32[(((value)+(4*i+4))>>2)];view[i+2]=HEAPF32[(((value)+(4*i+8))>>2)];}}else
+{var view=HEAPF32.subarray((value)>>2,(value+count*12)>>2);}
+GLctx.uniform3fv(GL.uniforms[location],view);}
+function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2);}
+function _emscripten_glUniform3iv(location,count,value){if(3*count<=GL.MINI_TEMP_BUFFER_SIZE){var view=GL.miniTempBufferIntViews[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[(((value)+(4*i))>>2)];view[i+1]=HEAP32[(((value)+(4*i+4))>>2)];view[i+2]=HEAP32[(((value)+(4*i+8))>>2)];}}else
+{var view=HEAP32.subarray((value)>>2,(value+count*12)>>2);}
+GLctx.uniform3iv(GL.uniforms[location],view);}
+function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3);}
+function _emscripten_glUniform4fv(location,count,value){if(4*count<=GL.MINI_TEMP_BUFFER_SIZE){var view=GL.miniTempBufferFloatViews[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];}}else
+{var view=HEAPF32.subarray((value)>>2,(value+count*16)>>2);}
+GLctx.uniform4fv(GL.uniforms[location],view);}
+function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3);}
+function _emscripten_glUniform4iv(location,count,value){if(4*count<=GL.MINI_TEMP_BUFFER_SIZE){var view=GL.miniTempBufferIntViews[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[(((value)+(4*i))>>2)];view[i+1]=HEAP32[(((value)+(4*i+4))>>2)];view[i+2]=HEAP32[(((value)+(4*i+8))>>2)];view[i+3]=HEAP32[(((value)+(4*i+12))>>2)];}}else
+{var view=HEAP32.subarray((value)>>2,(value+count*16)>>2);}
+GLctx.uniform4iv(GL.uniforms[location],view);}
+function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(4*count<=GL.MINI_TEMP_BUFFER_SIZE){var view=GL.miniTempBufferFloatViews[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[(((value)+(4*i))>>2)];view[i+1]=HEAPF32[(((value)+(4*i+4))>>2)];view[i+2]=HEAPF32[(((value)+(4*i+8))>>2)];view[i+3]=HEAPF32[(((value)+(4*i+12))>>2)];}}else
+{var view=HEAPF32.subarray((value)>>2,(value+count*16)>>2);}
+GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view);}
+function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(9*count<=GL.MINI_TEMP_BUFFER_SIZE){var view=GL.miniTempBufferFloatViews[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[(((value)+(4*i))>>2)];view[i+1]=HEAPF32[(((value)+(4*i+4))>>2)];view[i+2]=HEAPF32[(((value)+(4*i+8))>>2)];view[i+3]=HEAPF32[(((value)+(4*i+12))>>2)];view[i+4]=HEAPF32[(((value)+(4*i+16))>>2)];view[i+5]=HEAPF32[(((value)+(4*i+20))>>2)];view[i+6]=HEAPF32[(((value)+(4*i+24))>>2)];view[i+7]=HEAPF32[(((value)+(4*i+28))>>2)];view[i+8]=HEAPF32[(((value)+(4*i+32))>>2)];}}else
+{var view=HEAPF32.subarray((value)>>2,(value+count*36)>>2);}
+GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view);}
+function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(16*count<=GL.MINI_TEMP_BUFFER_SIZE){var view=GL.miniTempBufferFloatViews[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15];}}else
+{var view=HEAPF32.subarray((value)>>2,(value+count*64)>>2);}
+GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view);}
+function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program]);}
+function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program]);}
+function _emscripten_glVertexAttrib1f(x0,x1){GLctx['vertexAttrib1f'](x0,x1)}
+function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2]);}
+function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx['vertexAttrib2f'](x0,x1,x2)}
+function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2]);}
+function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx['vertexAttrib3f'](x0,x1,x2,x3)}
+function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2]);}
+function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx['vertexAttrib4f'](x0,x1,x2,x3,x4)}
+function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2]);}
+function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx['vertexAttribDivisor'](index,divisor);}
+function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr);}
+function _emscripten_glViewport(x0,x1,x2,x3){GLctx['viewport'](x0,x1,x2,x3)}
+function _emscripten_has_asyncify(){return 0;}
+function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num);}
+function __emscripten_do_request_fullscreen(target,strategy){if(!JSEvents.fullscreenEnabled())return-1;target=__findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3;}
+var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(_JSEvents_requestFullscreen,1,[target,strategy]);return 1;}else{return-2;}}
+return _JSEvents_requestFullscreen(target,strategy);}function _emscripten_request_fullscreen_strategy(target,deferUntilInEventHandler,fullscreenStrategy){var strategy={scaleMode:HEAP32[((fullscreenStrategy)>>2)],canvasResolutionScaleMode:HEAP32[(((fullscreenStrategy)+(4))>>2)],filteringMode:HEAP32[(((fullscreenStrategy)+(8))>>2)],deferUntilInEventHandler:deferUntilInEventHandler,canvasResizedCallback:HEAP32[(((fullscreenStrategy)+(12))>>2)],canvasResizedCallbackUserData:HEAP32[(((fullscreenStrategy)+(16))>>2)]};__currentFullscreenStrategy=strategy;return __emscripten_do_request_fullscreen(target,strategy);}
+function _emscripten_request_pointerlock(target,deferUntilInEventHandler){target=__findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock&&!target.msRequestPointerLock){return-1;}
+var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(__requestPointerLock,2,[target]);return 1;}else{return-2;}}
+return __requestPointerLock(target);}
+function _emscripten_get_heap_size(){return HEAPU8.length;}
+function abortOnCannotGrowMemory(requestedSize){abort('Cannot enlarge memory arrays to size '+requestedSize+' bytes (OOM). Either (1) compile with -s INITIAL_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);}
+function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=(navigator.getGamepads?navigator.getGamepads():(navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)))?0:-1;}
+function __registerBeforeUnloadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString){var beforeUnloadEventHandlerFunc=function(ev){var e=ev||event;var confirmationMessage=dynCall_iiii(callbackfunc,eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=UTF8ToString(confirmationMessage);}
+if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage;}};var eventHandler={target:__findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler);}function _emscripten_set_beforeunload_callback_on_thread(userData,callbackfunc,targetThread){if(typeof onbeforeunload==='undefined')return-1;if(targetThread!==1)return-5;__registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload");return 0;}
+function __registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(ev){var e=ev||event;var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:'';var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(dynCall_iiii(callbackfunc,eventTypeId,focusEvent,userData))e.preventDefault();};var eventHandler={target:__findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler);}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);return 0;}
+function _emscripten_set_element_css_size(target,width,height){target=__findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0;}
+function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);return 0;}
+function __fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[((eventStruct)>>2)]=isFullscreen;HEAP32[(((eventStruct)+(4))>>2)]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=(reportedElement&&reportedElement.id)?reportedElement.id:'';stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[(((eventStruct)+(264))>>2)]=reportedElement?reportedElement.clientWidth:0;HEAP32[(((eventStruct)+(268))>>2)]=reportedElement?reportedElement.clientHeight:0;HEAP32[(((eventStruct)+(272))>>2)]=screen.width;HEAP32[(((eventStruct)+(276))>>2)]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement;}}function __registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;__fillFullscreenChangeEventData(fullscreenChangeEvent);if(dynCall_iiii(callbackfunc,eventTypeId,fullscreenChangeEvent,userData))e.preventDefault();};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler);}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=__findEventTarget(target);if(!target)return-4;__registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);__registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0;}
+function __registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;__fillGamepadEventData(gamepadEvent,e["gamepad"]);if(dynCall_iiii(callbackfunc,eventTypeId,gamepadEvent,userData))e.preventDefault();};var eventHandler={target:__findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler);}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;__registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0;}
+function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;__registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0;}
+function __registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(ev){var e=ev||event;var keyEventData=JSEvents.keyEvent;stringToUTF8(e.key?e.key:"",keyEventData+0,32);stringToUTF8(e.code?e.code:"",keyEventData+32,32);HEAP32[(((keyEventData)+(64))>>2)]=e.location;HEAP32[(((keyEventData)+(68))>>2)]=e.ctrlKey;HEAP32[(((keyEventData)+(72))>>2)]=e.shiftKey;HEAP32[(((keyEventData)+(76))>>2)]=e.altKey;HEAP32[(((keyEventData)+(80))>>2)]=e.metaKey;HEAP32[(((keyEventData)+(84))>>2)]=e.repeat;stringToUTF8(e.locale?e.locale:"",keyEventData+88,32);stringToUTF8(e.char?e.char:"",keyEventData+120,32);HEAP32[(((keyEventData)+(152))>>2)]=e.charCode;HEAP32[(((keyEventData)+(156))>>2)]=e.keyCode;HEAP32[(((keyEventData)+(160))>>2)]=e.which;if(dynCall_iiii(callbackfunc,eventTypeId,keyEventData,userData))e.preventDefault();};var eventHandler={target:__findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler);}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0;}
+function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0;}
+function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0;}
+function __fillMouseEventData(eventStruct,e,target){HEAP32[((eventStruct)>>2)]=e.screenX;HEAP32[(((eventStruct)+(4))>>2)]=e.screenY;HEAP32[(((eventStruct)+(8))>>2)]=e.clientX;HEAP32[(((eventStruct)+(12))>>2)]=e.clientY;HEAP32[(((eventStruct)+(16))>>2)]=e.ctrlKey;HEAP32[(((eventStruct)+(20))>>2)]=e.shiftKey;HEAP32[(((eventStruct)+(24))>>2)]=e.altKey;HEAP32[(((eventStruct)+(28))>>2)]=e.metaKey;HEAP16[(((eventStruct)+(32))>>1)]=e.button;HEAP16[(((eventStruct)+(34))>>1)]=e.buttons;var movementX=e["movementX"]||(e.screenX-JSEvents.previousScreenX);var movementY=e["movementY"]||(e.screenY-JSEvents.previousScreenY);HEAP32[(((eventStruct)+(36))>>2)]=movementX;HEAP32[(((eventStruct)+(40))>>2)]=movementY;var rect=__getBoundingClientRect(target);HEAP32[(((eventStruct)+(44))>>2)]=e.clientX-rect.left;HEAP32[(((eventStruct)+(48))>>2)]=e.clientY-rect.top;if(e.type!=='wheel'&&e.type!=='mousewheel'){JSEvents.previousScreenX=e.screenX;JSEvents.previousScreenY=e.screenY;}}function __registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=__findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;__fillMouseEventData(JSEvents.mouseEvent,e,target);if(dynCall_iiii(callbackfunc,eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault();};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!='mousemove'&&eventTypeString!='mouseenter'&&eventTypeString!='mouseleave',eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler);}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0;}
+function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0;}
+function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0;}
+function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0;}
+function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0;}
+function __fillPointerlockChangeEventData(eventStruct){var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[((eventStruct)>>2)]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=(pointerLockElement&&pointerLockElement.id)?pointerLockElement.id:'';stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128);}function __registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=function(ev){var e=ev||event;var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;__fillPointerlockChangeEventData(pointerlockChangeEvent);if(dynCall_iiii(callbackfunc,eventTypeId,pointerlockChangeEvent,userData))e.preventDefault();};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler);}
+function _emscripten_set_pointerlockchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!document||!document.body||(!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock)){return-1;}
+target=__findEventTarget(target);if(!target)return-4;__registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread);__registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);__registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);__registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return 0;}
+function __registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=__findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||event;if(e.target!=target){return;}
+var uiEvent=JSEvents.uiEvent;var b=document.body;HEAP32[((uiEvent)>>2)]=e.detail;HEAP32[(((uiEvent)+(4))>>2)]=b.clientWidth;HEAP32[(((uiEvent)+(8))>>2)]=b.clientHeight;HEAP32[(((uiEvent)+(12))>>2)]=innerWidth;HEAP32[(((uiEvent)+(16))>>2)]=innerHeight;HEAP32[(((uiEvent)+(20))>>2)]=outerWidth;HEAP32[(((uiEvent)+(24))>>2)]=outerHeight;HEAP32[(((uiEvent)+(28))>>2)]=pageXOffset;HEAP32[(((uiEvent)+(32))>>2)]=pageYOffset;if(dynCall_iiii(callbackfunc,eventTypeId,uiEvent,userData))e.preventDefault();};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler);}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0;}
+function __registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=__findEventTarget(target);var touchEventHandlerFunc=function(ev){var e=ev||event;var touches={};for(var i=0;i>2)]=e.ctrlKey;HEAP32[(((ptr)+(8))>>2)]=e.shiftKey;HEAP32[(((ptr)+(12))>>2)]=e.altKey;HEAP32[(((ptr)+(16))>>2)]=e.metaKey;ptr+=20;var targetRect=__getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[((ptr)>>2)]=t.identifier;HEAP32[(((ptr)+(4))>>2)]=t.screenX;HEAP32[(((ptr)+(8))>>2)]=t.screenY;HEAP32[(((ptr)+(12))>>2)]=t.clientX;HEAP32[(((ptr)+(16))>>2)]=t.clientY;HEAP32[(((ptr)+(20))>>2)]=t.pageX;HEAP32[(((ptr)+(24))>>2)]=t.pageY;HEAP32[(((ptr)+(28))>>2)]=t.changed;HEAP32[(((ptr)+(32))>>2)]=t.onTarget;HEAP32[(((ptr)+(36))>>2)]=t.clientX-targetRect.left;HEAP32[(((ptr)+(40))>>2)]=t.clientY-targetRect.top;ptr+=52;if(++numTouches>=32){break;}}
+HEAP32[((touchEvent)>>2)]=numTouches;if(dynCall_iiii(callbackfunc,eventTypeId,touchEvent,userData))e.preventDefault();};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=='touchstart'||eventTypeString=='touchend',eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler);}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0;}
+function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0;}
+function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0;}
+function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0;}
+function __fillVisibilityChangeEventData(eventStruct){var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[((eventStruct)>>2)]=document.hidden;HEAP32[(((eventStruct)+(4))>>2)]=visibilityState;}function __registerVisibilityChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=function(ev){var e=ev||event;var visibilityChangeEvent=JSEvents.visibilityChangeEvent;__fillVisibilityChangeEventData(visibilityChangeEvent);if(dynCall_iiii(callbackfunc,eventTypeId,visibilityChangeEvent,userData))e.preventDefault();};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler);}function _emscripten_set_visibilitychange_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!__specialEventTargets[1]){return-4;}
+__registerVisibilityChangeEventCallback(__specialEventTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread);return 0;}
+function __registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(96);var wheelHandlerFunc=function(ev){var e=ev||event;var wheelEvent=JSEvents.wheelEvent;__fillMouseEventData(wheelEvent,e,target);HEAPF64[(((wheelEvent)+(64))>>3)]=e["deltaX"];HEAPF64[(((wheelEvent)+(72))>>3)]=e["deltaY"];HEAPF64[(((wheelEvent)+(80))>>3)]=e["deltaZ"];HEAP32[(((wheelEvent)+(88))>>2)]=e["deltaMode"];if(dynCall_iiii(callbackfunc,eventTypeId,wheelEvent,userData))e.preventDefault();};var mouseWheelHandlerFunc=function(ev){var e=ev||event;__fillMouseEventData(JSEvents.wheelEvent,e,target);HEAPF64[(((JSEvents.wheelEvent)+(64))>>3)]=e["wheelDeltaX"]||0;var wheelDeltaY=-(e["wheelDeltaY"]||e["wheelDelta"])
+HEAPF64[(((JSEvents.wheelEvent)+(72))>>3)]=wheelDeltaY;HEAPF64[(((JSEvents.wheelEvent)+(80))>>3)]=0;HEAP32[(((JSEvents.wheelEvent)+(88))>>2)]=0;var shouldCancel=dynCall_iiii(callbackfunc,eventTypeId,JSEvents.wheelEvent,userData);if(shouldCancel){e.preventDefault();}};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:(eventTypeString=='wheel')?wheelHandlerFunc:mouseWheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler);}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=__findEventTarget(target);if(typeof target.onwheel!=='undefined'){__registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0;}else if(typeof target.onmousewheel!=='undefined'){__registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"mousewheel",targetThread);return 0;}else{return-1;}}
+function _emscripten_sleep(){throw 'Please compile your program with async support in order to use asynchronous operations like emscripten_sleep';}
+var ENV={};function __getExecutableName(){return thisProgram||'./this.program';}function _emscripten_get_environ(){if(!_emscripten_get_environ.strings){var env={'USER':'web_user','LOGNAME':'web_user','PATH':'/','PWD':'/','HOME':'/home/web_user','LANG':((typeof navigator==='object'&&navigator.languages&&navigator.languages[0])||'C').replace('-','_')+'.UTF-8','_':__getExecutableName()};for(var x in ENV){env[x]=ENV[x];}
+var strings=[];for(var x in env){strings.push(x+'='+env[x]);}
+_emscripten_get_environ.strings=strings;}
+return _emscripten_get_environ.strings;}function _environ_get(__environ,environ_buf){var strings=_emscripten_get_environ();var bufSize=0;strings.forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[(((__environ)+(i*4))>>2)]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1;});return 0;}
+function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=_emscripten_get_environ();HEAP32[((penviron_count)>>2)]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1;});HEAP32[((penviron_buf_size)>>2)]=bufSize;return 0;}
+function _exit(status){exit(status);}
+function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0;}catch(e){if(typeof FS==='undefined'||!(e instanceof FS.ErrnoError))abort(e);return e.errno;}}
+function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[((pnum)>>2)]=num
+return 0;}catch(e){if(typeof FS==='undefined'||!(e instanceof FS.ErrnoError))abort(e);return e.errno;}}
+function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=0x100000000;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=0x20000000000000;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61;}
+FS.llseek(stream,offset,whence);(tempI64=[stream.position>>>0,(tempDouble=stream.position,(+(Math_abs(tempDouble)))>=1.0?(tempDouble>0.0?((Math_min((+(Math_floor((tempDouble)/4294967296.0))),4294967295.0))|0)>>>0:(~~((+(Math_ceil((tempDouble-+(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0):0)],HEAP32[((newOffset)>>2)]=tempI64[0],HEAP32[(((newOffset)+(4))>>2)]=tempI64[1]);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0;}catch(e){if(typeof FS==='undefined'||!(e instanceof FS.ErrnoError))abort(e);return e.errno;}}
+function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[((pnum)>>2)]=num
+return 0;}catch(e){if(typeof FS==='undefined'||!(e instanceof FS.ErrnoError))abort(e);return e.errno;}}
+function _gettimeofday(ptr){var now=Date.now();HEAP32[((ptr)>>2)]=(now/1000)|0;HEAP32[(((ptr)+(4))>>2)]=((now%1000)*1000)|0;return 0;}
+function _glActiveTexture(x0){GLctx['activeTexture'](x0)}
+function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader]);}
+function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer]);}
+function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture]);}
+function _glBlendFunc(x0,x1){GLctx['blendFunc'](x0,x1)}
+function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage);}
+function _glClear(x0){GLctx['clear'](x0)}
+function _glClearColor(x0,x1,x2,x3){GLctx['clearColor'](x0,x1,x2,x3)}
+function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader]);}
+function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id;}
+function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id;}
+function _glDepthFunc(x0){GLctx['depthFunc'](x0)}
+function _glDepthMask(flag){GLctx.depthMask(!!flag);}
+function _glDisable(x0){GLctx['disable'](x0)}
+function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index);}
+function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count);}
+function _glEnable(x0){GLctx['enable'](x0)}
+function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index);}
+function _glGenBuffers(n,buffers){__glGenObject(n,buffers,'createBuffer',GL.buffers);}
+function _glGenTextures(n,textures){__glGenObject(n,textures,'createTexture',GL.textures);}
+function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));}
+function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log='(unknown error)';var numBytesWrittenExclNull=(maxLength>0&&infoLog)?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[((length)>>2)]=numBytesWrittenExclNull;}
+function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(0x501);return;}
+if(pname==0x8B84){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log='(unknown error)';HEAP32[((p)>>2)]=log.length+1;}else if(pname==0x8B88){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=(source===null||source.length==0)?0:source.length+1;HEAP32[((p)>>2)]=sourceLength;}else{HEAP32[((p)>>2)]=GLctx.getShaderParameter(GL.shaders[shader],pname);}}
+function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]==']'){var leftBrace=name.lastIndexOf('[');arrayIndex=name[leftBrace+1]!=']'?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace);}
+var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex>2)];var nanoseconds=HEAP32[(((rqtp)+(4))>>2)];if(nanoseconds<0||nanoseconds>999999999||seconds<0){___setErrNo(28);return-1;}
+if(rmtp!==0){HEAP32[((rmtp)>>2)]=0;HEAP32[(((rmtp)+(4))>>2)]=0;}
+return _usleep((seconds*1e6)+(nanoseconds/1000));}
+function _setTempRet0($i){setTempRet0(($i)|0);}
+function _sigaction(signum,act,oldact){err('Calling stub instead of sigaction()');return 0;}
+var __sigalrm_handler=0;function _signal(sig,func){if(sig==14){__sigalrm_handler=func;}else{err('Calling stub instead of signal()');}
+return 0;}
+function readAsmConstArgs(sigPtr,buf){if(!readAsmConstArgs.array){readAsmConstArgs.array=[];}
+var args=readAsmConstArgs.array;args.length=0;var ch;while(ch=HEAPU8[sigPtr++]){if(ch===100||ch===102){buf=(buf+7)&~7;args.push(HEAPF64[(buf>>3)]);buf+=8;}else
+if(ch===105)
+{buf=(buf+3)&~3;args.push(HEAP32[(buf>>2)]);buf+=4;}
+else abort("unexpected char in asm const signature "+ch);}
+return args;}
+var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this;}
+this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode;},set:function(val){val?this.mode|=readMode:this.mode&=~readMode;}},write:{get:function(){return(this.mode&writeMode)===writeMode;},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode;}},isFolder:{get:function(){return FS.isDir(this.mode);}},isDevice:{get:function(){return FS.isChrdev(this.mode);}}});FS.FSNode=FSNode;FS.staticInit();;Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestFullScreen"]=function Module_requestFullScreen(){Browser.requestFullScreen()};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()}
+Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};var GLctx;GL.init();for(var i=0;i<32;i++)__tempFixedLengthArray.push(new Array(i));;var ASSERTIONS=true;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array;}
+function intArrayToString(array){var ret=[];for(var i=0;i0xFF){if(ASSERTIONS){assert(false,'Character code '+chr+' ('+String.fromCharCode(chr)+') at offset '+i+' not in 0x00-0xFF.');}
+chr&=0xFF;}
+ret.push(String.fromCharCode(chr));}
+return ret.join('');}
+var asmGlobalArg={};var asmLibraryArg={"__assert_fail":___assert_fail,"__handle_stack_overflow":___handle_stack_overflow,"__syscall221":___syscall221,"__syscall5":___syscall5,"__syscall54":___syscall54,"abort":_abort,"atexit":_atexit,"clock_gettime":_clock_gettime,"dlclose":_dlclose,"dlerror":_dlerror,"dlsym":_dlsym,"eglBindAPI":_eglBindAPI,"eglChooseConfig":_eglChooseConfig,"eglCreateContext":_eglCreateContext,"eglCreateWindowSurface":_eglCreateWindowSurface,"eglDestroyContext":_eglDestroyContext,"eglDestroySurface":_eglDestroySurface,"eglGetConfigAttrib":_eglGetConfigAttrib,"eglGetDisplay":_eglGetDisplay,"eglGetError":_eglGetError,"eglGetProcAddress":_eglGetProcAddress,"eglInitialize":_eglInitialize,"eglMakeCurrent":_eglMakeCurrent,"eglQueryString":_eglQueryString,"eglSwapBuffers":_eglSwapBuffers,"eglSwapInterval":_eglSwapInterval,"eglTerminate":_eglTerminate,"eglWaitGL":_eglWaitGL,"eglWaitNative":_eglWaitNative,"emscripten_asm_const_iii":_emscripten_asm_const_iii,"emscripten_exit_fullscreen":_emscripten_exit_fullscreen,"emscripten_exit_pointerlock":_emscripten_exit_pointerlock,"emscripten_get_device_pixel_ratio":_emscripten_get_device_pixel_ratio,"emscripten_get_element_css_size":_emscripten_get_element_css_size,"emscripten_get_gamepad_status":_emscripten_get_gamepad_status,"emscripten_get_num_gamepads":_emscripten_get_num_gamepads,"emscripten_get_sbrk_ptr":_emscripten_get_sbrk_ptr,"emscripten_glActiveTexture":_emscripten_glActiveTexture,"emscripten_glAttachShader":_emscripten_glAttachShader,"emscripten_glBeginQueryEXT":_emscripten_glBeginQueryEXT,"emscripten_glBindAttribLocation":_emscripten_glBindAttribLocation,"emscripten_glBindBuffer":_emscripten_glBindBuffer,"emscripten_glBindFramebuffer":_emscripten_glBindFramebuffer,"emscripten_glBindRenderbuffer":_emscripten_glBindRenderbuffer,"emscripten_glBindTexture":_emscripten_glBindTexture,"emscripten_glBindVertexArrayOES":_emscripten_glBindVertexArrayOES,"emscripten_glBlendColor":_emscripten_glBlendColor,"emscripten_glBlendEquation":_emscripten_glBlendEquation,"emscripten_glBlendEquationSeparate":_emscripten_glBlendEquationSeparate,"emscripten_glBlendFunc":_emscripten_glBlendFunc,"emscripten_glBlendFuncSeparate":_emscripten_glBlendFuncSeparate,"emscripten_glBufferData":_emscripten_glBufferData,"emscripten_glBufferSubData":_emscripten_glBufferSubData,"emscripten_glCheckFramebufferStatus":_emscripten_glCheckFramebufferStatus,"emscripten_glClear":_emscripten_glClear,"emscripten_glClearColor":_emscripten_glClearColor,"emscripten_glClearDepthf":_emscripten_glClearDepthf,"emscripten_glClearStencil":_emscripten_glClearStencil,"emscripten_glColorMask":_emscripten_glColorMask,"emscripten_glCompileShader":_emscripten_glCompileShader,"emscripten_glCompressedTexImage2D":_emscripten_glCompressedTexImage2D,"emscripten_glCompressedTexSubImage2D":_emscripten_glCompressedTexSubImage2D,"emscripten_glCopyTexImage2D":_emscripten_glCopyTexImage2D,"emscripten_glCopyTexSubImage2D":_emscripten_glCopyTexSubImage2D,"emscripten_glCreateProgram":_emscripten_glCreateProgram,"emscripten_glCreateShader":_emscripten_glCreateShader,"emscripten_glCullFace":_emscripten_glCullFace,"emscripten_glDeleteBuffers":_emscripten_glDeleteBuffers,"emscripten_glDeleteFramebuffers":_emscripten_glDeleteFramebuffers,"emscripten_glDeleteProgram":_emscripten_glDeleteProgram,"emscripten_glDeleteQueriesEXT":_emscripten_glDeleteQueriesEXT,"emscripten_glDeleteRenderbuffers":_emscripten_glDeleteRenderbuffers,"emscripten_glDeleteShader":_emscripten_glDeleteShader,"emscripten_glDeleteTextures":_emscripten_glDeleteTextures,"emscripten_glDeleteVertexArraysOES":_emscripten_glDeleteVertexArraysOES,"emscripten_glDepthFunc":_emscripten_glDepthFunc,"emscripten_glDepthMask":_emscripten_glDepthMask,"emscripten_glDepthRangef":_emscripten_glDepthRangef,"emscripten_glDetachShader":_emscripten_glDetachShader,"emscripten_glDisable":_emscripten_glDisable,"emscripten_glDisableVertexAttribArray":_emscripten_glDisableVertexAttribArray,"emscripten_glDrawArrays":_emscripten_glDrawArrays,"emscripten_glDrawArraysInstancedANGLE":_emscripten_glDrawArraysInstancedANGLE,"emscripten_glDrawBuffersWEBGL":_emscripten_glDrawBuffersWEBGL,"emscripten_glDrawElements":_emscripten_glDrawElements,"emscripten_glDrawElementsInstancedANGLE":_emscripten_glDrawElementsInstancedANGLE,"emscripten_glEnable":_emscripten_glEnable,"emscripten_glEnableVertexAttribArray":_emscripten_glEnableVertexAttribArray,"emscripten_glEndQueryEXT":_emscripten_glEndQueryEXT,"emscripten_glFinish":_emscripten_glFinish,"emscripten_glFlush":_emscripten_glFlush,"emscripten_glFramebufferRenderbuffer":_emscripten_glFramebufferRenderbuffer,"emscripten_glFramebufferTexture2D":_emscripten_glFramebufferTexture2D,"emscripten_glFrontFace":_emscripten_glFrontFace,"emscripten_glGenBuffers":_emscripten_glGenBuffers,"emscripten_glGenFramebuffers":_emscripten_glGenFramebuffers,"emscripten_glGenQueriesEXT":_emscripten_glGenQueriesEXT,"emscripten_glGenRenderbuffers":_emscripten_glGenRenderbuffers,"emscripten_glGenTextures":_emscripten_glGenTextures,"emscripten_glGenVertexArraysOES":_emscripten_glGenVertexArraysOES,"emscripten_glGenerateMipmap":_emscripten_glGenerateMipmap,"emscripten_glGetActiveAttrib":_emscripten_glGetActiveAttrib,"emscripten_glGetActiveUniform":_emscripten_glGetActiveUniform,"emscripten_glGetAttachedShaders":_emscripten_glGetAttachedShaders,"emscripten_glGetAttribLocation":_emscripten_glGetAttribLocation,"emscripten_glGetBooleanv":_emscripten_glGetBooleanv,"emscripten_glGetBufferParameteriv":_emscripten_glGetBufferParameteriv,"emscripten_glGetError":_emscripten_glGetError,"emscripten_glGetFloatv":_emscripten_glGetFloatv,"emscripten_glGetFramebufferAttachmentParameteriv":_emscripten_glGetFramebufferAttachmentParameteriv,"emscripten_glGetIntegerv":_emscripten_glGetIntegerv,"emscripten_glGetProgramInfoLog":_emscripten_glGetProgramInfoLog,"emscripten_glGetProgramiv":_emscripten_glGetProgramiv,"emscripten_glGetQueryObjecti64vEXT":_emscripten_glGetQueryObjecti64vEXT,"emscripten_glGetQueryObjectivEXT":_emscripten_glGetQueryObjectivEXT,"emscripten_glGetQueryObjectui64vEXT":_emscripten_glGetQueryObjectui64vEXT,"emscripten_glGetQueryObjectuivEXT":_emscripten_glGetQueryObjectuivEXT,"emscripten_glGetQueryivEXT":_emscripten_glGetQueryivEXT,"emscripten_glGetRenderbufferParameteriv":_emscripten_glGetRenderbufferParameteriv,"emscripten_glGetShaderInfoLog":_emscripten_glGetShaderInfoLog,"emscripten_glGetShaderPrecisionFormat":_emscripten_glGetShaderPrecisionFormat,"emscripten_glGetShaderSource":_emscripten_glGetShaderSource,"emscripten_glGetShaderiv":_emscripten_glGetShaderiv,"emscripten_glGetString":_emscripten_glGetString,"emscripten_glGetTexParameterfv":_emscripten_glGetTexParameterfv,"emscripten_glGetTexParameteriv":_emscripten_glGetTexParameteriv,"emscripten_glGetUniformLocation":_emscripten_glGetUniformLocation,"emscripten_glGetUniformfv":_emscripten_glGetUniformfv,"emscripten_glGetUniformiv":_emscripten_glGetUniformiv,"emscripten_glGetVertexAttribPointerv":_emscripten_glGetVertexAttribPointerv,"emscripten_glGetVertexAttribfv":_emscripten_glGetVertexAttribfv,"emscripten_glGetVertexAttribiv":_emscripten_glGetVertexAttribiv,"emscripten_glHint":_emscripten_glHint,"emscripten_glIsBuffer":_emscripten_glIsBuffer,"emscripten_glIsEnabled":_emscripten_glIsEnabled,"emscripten_glIsFramebuffer":_emscripten_glIsFramebuffer,"emscripten_glIsProgram":_emscripten_glIsProgram,"emscripten_glIsQueryEXT":_emscripten_glIsQueryEXT,"emscripten_glIsRenderbuffer":_emscripten_glIsRenderbuffer,"emscripten_glIsShader":_emscripten_glIsShader,"emscripten_glIsTexture":_emscripten_glIsTexture,"emscripten_glIsVertexArrayOES":_emscripten_glIsVertexArrayOES,"emscripten_glLineWidth":_emscripten_glLineWidth,"emscripten_glLinkProgram":_emscripten_glLinkProgram,"emscripten_glPixelStorei":_emscripten_glPixelStorei,"emscripten_glPolygonOffset":_emscripten_glPolygonOffset,"emscripten_glQueryCounterEXT":_emscripten_glQueryCounterEXT,"emscripten_glReadPixels":_emscripten_glReadPixels,"emscripten_glReleaseShaderCompiler":_emscripten_glReleaseShaderCompiler,"emscripten_glRenderbufferStorage":_emscripten_glRenderbufferStorage,"emscripten_glSampleCoverage":_emscripten_glSampleCoverage,"emscripten_glScissor":_emscripten_glScissor,"emscripten_glShaderBinary":_emscripten_glShaderBinary,"emscripten_glShaderSource":_emscripten_glShaderSource,"emscripten_glStencilFunc":_emscripten_glStencilFunc,"emscripten_glStencilFuncSeparate":_emscripten_glStencilFuncSeparate,"emscripten_glStencilMask":_emscripten_glStencilMask,"emscripten_glStencilMaskSeparate":_emscripten_glStencilMaskSeparate,"emscripten_glStencilOp":_emscripten_glStencilOp,"emscripten_glStencilOpSeparate":_emscripten_glStencilOpSeparate,"emscripten_glTexImage2D":_emscripten_glTexImage2D,"emscripten_glTexParameterf":_emscripten_glTexParameterf,"emscripten_glTexParameterfv":_emscripten_glTexParameterfv,"emscripten_glTexParameteri":_emscripten_glTexParameteri,"emscripten_glTexParameteriv":_emscripten_glTexParameteriv,"emscripten_glTexSubImage2D":_emscripten_glTexSubImage2D,"emscripten_glUniform1f":_emscripten_glUniform1f,"emscripten_glUniform1fv":_emscripten_glUniform1fv,"emscripten_glUniform1i":_emscripten_glUniform1i,"emscripten_glUniform1iv":_emscripten_glUniform1iv,"emscripten_glUniform2f":_emscripten_glUniform2f,"emscripten_glUniform2fv":_emscripten_glUniform2fv,"emscripten_glUniform2i":_emscripten_glUniform2i,"emscripten_glUniform2iv":_emscripten_glUniform2iv,"emscripten_glUniform3f":_emscripten_glUniform3f,"emscripten_glUniform3fv":_emscripten_glUniform3fv,"emscripten_glUniform3i":_emscripten_glUniform3i,"emscripten_glUniform3iv":_emscripten_glUniform3iv,"emscripten_glUniform4f":_emscripten_glUniform4f,"emscripten_glUniform4fv":_emscripten_glUniform4fv,"emscripten_glUniform4i":_emscripten_glUniform4i,"emscripten_glUniform4iv":_emscripten_glUniform4iv,"emscripten_glUniformMatrix2fv":_emscripten_glUniformMatrix2fv,"emscripten_glUniformMatrix3fv":_emscripten_glUniformMatrix3fv,"emscripten_glUniformMatrix4fv":_emscripten_glUniformMatrix4fv,"emscripten_glUseProgram":_emscripten_glUseProgram,"emscripten_glValidateProgram":_emscripten_glValidateProgram,"emscripten_glVertexAttrib1f":_emscripten_glVertexAttrib1f,"emscripten_glVertexAttrib1fv":_emscripten_glVertexAttrib1fv,"emscripten_glVertexAttrib2f":_emscripten_glVertexAttrib2f,"emscripten_glVertexAttrib2fv":_emscripten_glVertexAttrib2fv,"emscripten_glVertexAttrib3f":_emscripten_glVertexAttrib3f,"emscripten_glVertexAttrib3fv":_emscripten_glVertexAttrib3fv,"emscripten_glVertexAttrib4f":_emscripten_glVertexAttrib4f,"emscripten_glVertexAttrib4fv":_emscripten_glVertexAttrib4fv,"emscripten_glVertexAttribDivisorANGLE":_emscripten_glVertexAttribDivisorANGLE,"emscripten_glVertexAttribPointer":_emscripten_glVertexAttribPointer,"emscripten_glViewport":_emscripten_glViewport,"emscripten_has_asyncify":_emscripten_has_asyncify,"emscripten_memcpy_big":_emscripten_memcpy_big,"emscripten_request_fullscreen_strategy":_emscripten_request_fullscreen_strategy,"emscripten_request_pointerlock":_emscripten_request_pointerlock,"emscripten_resize_heap":_emscripten_resize_heap,"emscripten_sample_gamepad_data":_emscripten_sample_gamepad_data,"emscripten_set_beforeunload_callback_on_thread":_emscripten_set_beforeunload_callback_on_thread,"emscripten_set_blur_callback_on_thread":_emscripten_set_blur_callback_on_thread,"emscripten_set_canvas_element_size":_emscripten_set_canvas_element_size,"emscripten_set_element_css_size":_emscripten_set_element_css_size,"emscripten_set_focus_callback_on_thread":_emscripten_set_focus_callback_on_thread,"emscripten_set_fullscreenchange_callback_on_thread":_emscripten_set_fullscreenchange_callback_on_thread,"emscripten_set_gamepadconnected_callback_on_thread":_emscripten_set_gamepadconnected_callback_on_thread,"emscripten_set_gamepaddisconnected_callback_on_thread":_emscripten_set_gamepaddisconnected_callback_on_thread,"emscripten_set_keydown_callback_on_thread":_emscripten_set_keydown_callback_on_thread,"emscripten_set_keypress_callback_on_thread":_emscripten_set_keypress_callback_on_thread,"emscripten_set_keyup_callback_on_thread":_emscripten_set_keyup_callback_on_thread,"emscripten_set_main_loop":_emscripten_set_main_loop,"emscripten_set_mousedown_callback_on_thread":_emscripten_set_mousedown_callback_on_thread,"emscripten_set_mouseenter_callback_on_thread":_emscripten_set_mouseenter_callback_on_thread,"emscripten_set_mouseleave_callback_on_thread":_emscripten_set_mouseleave_callback_on_thread,"emscripten_set_mousemove_callback_on_thread":_emscripten_set_mousemove_callback_on_thread,"emscripten_set_mouseup_callback_on_thread":_emscripten_set_mouseup_callback_on_thread,"emscripten_set_pointerlockchange_callback_on_thread":_emscripten_set_pointerlockchange_callback_on_thread,"emscripten_set_resize_callback_on_thread":_emscripten_set_resize_callback_on_thread,"emscripten_set_touchcancel_callback_on_thread":_emscripten_set_touchcancel_callback_on_thread,"emscripten_set_touchend_callback_on_thread":_emscripten_set_touchend_callback_on_thread,"emscripten_set_touchmove_callback_on_thread":_emscripten_set_touchmove_callback_on_thread,"emscripten_set_touchstart_callback_on_thread":_emscripten_set_touchstart_callback_on_thread,"emscripten_set_visibilitychange_callback_on_thread":_emscripten_set_visibilitychange_callback_on_thread,"emscripten_set_wheel_callback_on_thread":_emscripten_set_wheel_callback_on_thread,"emscripten_sleep":_emscripten_sleep,"environ_get":_environ_get,"environ_sizes_get":_environ_sizes_get,"exit":_exit,"fd_close":_fd_close,"fd_read":_fd_read,"fd_seek":_fd_seek,"fd_write":_fd_write,"gettimeofday":_gettimeofday,"glActiveTexture":_glActiveTexture,"glAttachShader":_glAttachShader,"glBindBuffer":_glBindBuffer,"glBindTexture":_glBindTexture,"glBlendFunc":_glBlendFunc,"glBufferData":_glBufferData,"glClear":_glClear,"glClearColor":_glClearColor,"glCompileShader":_glCompileShader,"glCreateProgram":_glCreateProgram,"glCreateShader":_glCreateShader,"glDepthFunc":_glDepthFunc,"glDepthMask":_glDepthMask,"glDisable":_glDisable,"glDisableVertexAttribArray":_glDisableVertexAttribArray,"glDrawArrays":_glDrawArrays,"glEnable":_glEnable,"glEnableVertexAttribArray":_glEnableVertexAttribArray,"glGenBuffers":_glGenBuffers,"glGenTextures":_glGenTextures,"glGetAttribLocation":_glGetAttribLocation,"glGetShaderInfoLog":_glGetShaderInfoLog,"glGetShaderiv":_glGetShaderiv,"glGetUniformLocation":_glGetUniformLocation,"glLinkProgram":_glLinkProgram,"glPolygonOffset":_glPolygonOffset,"glScissor":_glScissor,"glShaderSource":_glShaderSource,"glTexImage2D":_glTexImage2D,"glTexParameteri":_glTexParameteri,"glUniform1i":_glUniform1i,"glUseProgram":_glUseProgram,"glVertexAttribPointer":_glVertexAttribPointer,"glViewport":_glViewport,"memory":wasmMemory,"nanosleep":_nanosleep,"setTempRet0":_setTempRet0,"sigaction":_sigaction,"signal":_signal,"table":wasmTable};var asm=createWasm();Module["asm"]=asm;var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){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)');return Module["asm"]["__wasm_call_ctors"].apply(null,arguments)};var _memcpy=Module["_memcpy"]=function(){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)');return Module["asm"]["memcpy"].apply(null,arguments)};var _memset=Module["_memset"]=function(){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)');return Module["asm"]["memset"].apply(null,arguments)};var _malloc=Module["_malloc"]=function(){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)');return Module["asm"]["malloc"].apply(null,arguments)};var _free=Module["_free"]=function(){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)');return Module["asm"]["free"].apply(null,arguments)};var _main=Module["_main"]=function(){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)');return Module["asm"]["main"].apply(null,arguments)};var _strstr=Module["_strstr"]=function(){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)');return Module["asm"]["strstr"].apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){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)');return Module["asm"]["__errno_location"].apply(null,arguments)};var _fflush=Module["_fflush"]=function(){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)');return Module["asm"]["fflush"].apply(null,arguments)};var _emscripten_GetProcAddress=Module["_emscripten_GetProcAddress"]=function(){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)');return Module["asm"]["emscripten_GetProcAddress"].apply(null,arguments)};var ___set_stack_limit=Module["___set_stack_limit"]=function(){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)');return Module["asm"]["__set_stack_limit"].apply(null,arguments)};var stackSave=Module["stackSave"]=function(){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)');return Module["asm"]["stackSave"].apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){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)');return Module["asm"]["stackAlloc"].apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){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)');return Module["asm"]["stackRestore"].apply(null,arguments)};var __growWasmMemory=Module["__growWasmMemory"]=function(){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)');return Module["asm"]["__growWasmMemory"].apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){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)');return Module["asm"]["dynCall_i"].apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){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)');return Module["asm"]["dynCall_v"].apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){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)');return Module["asm"]["dynCall_iiii"].apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){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)');return Module["asm"]["dynCall_vi"].apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){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)');return Module["asm"]["dynCall_iii"].apply(null,arguments)};var dynCall_vd=Module["dynCall_vd"]=function(){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)');return Module["asm"]["dynCall_vd"].apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){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)');return Module["asm"]["dynCall_ii"].apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){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)');return Module["asm"]["dynCall_viii"].apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){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)');return Module["asm"]["dynCall_vii"].apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){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)');return Module["asm"]["dynCall_viiii"].apply(null,arguments)};var dynCall_d=Module["dynCall_d"]=function(){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)');return Module["asm"]["dynCall_d"].apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){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)');return Module["asm"]["dynCall_iiiii"].apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){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)');return Module["asm"]["dynCall_iiiiii"].apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){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)');return Module["asm"]["dynCall_jiji"].apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){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)');return Module["asm"]["dynCall_ji"].apply(null,arguments)};var dynCall_iiiiidii=Module["dynCall_iiiiidii"]=function(){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)');return Module["asm"]["dynCall_iiiiidii"].apply(null,arguments)};var dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=function(){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)');return Module["asm"]["dynCall_iiiiiiiiii"].apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){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)');return Module["asm"]["dynCall_iiiiiiiii"].apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){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)');return Module["asm"]["dynCall_viiiiiii"].apply(null,arguments)};var dynCall_viiiiiiiiiii=Module["dynCall_viiiiiiiiiii"]=function(){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)');return Module["asm"]["dynCall_viiiiiiiiiii"].apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){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)');return Module["asm"]["dynCall_iiiiiiii"].apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){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)');return Module["asm"]["dynCall_iidiiii"].apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){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)');return Module["asm"]["dynCall_viiiii"].apply(null,arguments)};var dynCall_vffff=Module["dynCall_vffff"]=function(){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)');return Module["asm"]["dynCall_vffff"].apply(null,arguments)};var dynCall_vf=Module["dynCall_vf"]=function(){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)');return Module["asm"]["dynCall_vf"].apply(null,arguments)};var dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=function(){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)');return Module["asm"]["dynCall_viiiiiiii"].apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){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)');return Module["asm"]["dynCall_viiiiiiiii"].apply(null,arguments)};var dynCall_vff=Module["dynCall_vff"]=function(){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)');return Module["asm"]["dynCall_vff"].apply(null,arguments)};var dynCall_vfi=Module["dynCall_vfi"]=function(){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)');return Module["asm"]["dynCall_vfi"].apply(null,arguments)};var dynCall_viif=Module["dynCall_viif"]=function(){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)');return Module["asm"]["dynCall_viif"].apply(null,arguments)};var dynCall_vif=Module["dynCall_vif"]=function(){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)');return Module["asm"]["dynCall_vif"].apply(null,arguments)};var dynCall_viff=Module["dynCall_viff"]=function(){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)');return Module["asm"]["dynCall_viff"].apply(null,arguments)};var dynCall_vifff=Module["dynCall_vifff"]=function(){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)');return Module["asm"]["dynCall_vifff"].apply(null,arguments)};var dynCall_viffff=Module["dynCall_viffff"]=function(){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)');return Module["asm"]["dynCall_viffff"].apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){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)');return Module["asm"]["dynCall_viiiiii"].apply(null,arguments)};Module['asm']=asm;if(!Object.getOwnPropertyDescriptor(Module,"intArrayFromString"))Module["intArrayFromString"]=function(){abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"intArrayToString"))Module["intArrayToString"]=function(){abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"ccall"))Module["ccall"]=function(){abort("'ccall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"cwrap"))Module["cwrap"]=function(){abort("'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"setValue"))Module["setValue"]=function(){abort("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"getValue"))Module["getValue"]=function(){abort("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"allocate"))Module["allocate"]=function(){abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!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")};if(!Object.getOwnPropertyDescriptor(Module,"UTF8ArrayToString"))Module["UTF8ArrayToString"]=function(){abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"UTF8ToString"))Module["UTF8ToString"]=function(){abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"stringToUTF8Array"))Module["stringToUTF8Array"]=function(){abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"stringToUTF8"))Module["stringToUTF8"]=function(){abort("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"lengthBytesUTF8"))Module["lengthBytesUTF8"]=function(){abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"stackTrace"))Module["stackTrace"]=function(){abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"addOnPreRun"))Module["addOnPreRun"]=function(){abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"addOnInit"))Module["addOnInit"]=function(){abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"addOnPreMain"))Module["addOnPreMain"]=function(){abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"addOnExit"))Module["addOnExit"]=function(){abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"addOnPostRun"))Module["addOnPostRun"]=function(){abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"writeStringToMemory"))Module["writeStringToMemory"]=function(){abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"writeArrayToMemory"))Module["writeArrayToMemory"]=function(){abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"writeAsciiToMemory"))Module["writeAsciiToMemory"]=function(){abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!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")};if(!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")};if(!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")};if(!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")};if(!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")};if(!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")};if(!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")};if(!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")};if(!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")};if(!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")};if(!Object.getOwnPropertyDescriptor(Module,"dynamicAlloc"))Module["dynamicAlloc"]=function(){abort("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"loadDynamicLibrary"))Module["loadDynamicLibrary"]=function(){abort("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"loadWebAssemblyModule"))Module["loadWebAssemblyModule"]=function(){abort("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"getLEB"))Module["getLEB"]=function(){abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"getFunctionTables"))Module["getFunctionTables"]=function(){abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"alignFunctionTables"))Module["alignFunctionTables"]=function(){abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"registerFunctions"))Module["registerFunctions"]=function(){abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"addFunction"))Module["addFunction"]=function(){abort("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"removeFunction"))Module["removeFunction"]=function(){abort("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"getFuncWrapper"))Module["getFuncWrapper"]=function(){abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"prettyPrint"))Module["prettyPrint"]=function(){abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"makeBigInt"))Module["makeBigInt"]=function(){abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"dynCall"))Module["dynCall"]=function(){abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"getCompilerSetting"))Module["getCompilerSetting"]=function(){abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"print"))Module["print"]=function(){abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"printErr"))Module["printErr"]=function(){abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"getTempRet0"))Module["getTempRet0"]=function(){abort("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"setTempRet0"))Module["setTempRet0"]=function(){abort("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};Module["callMain"]=callMain;if(!Object.getOwnPropertyDescriptor(Module,"abort"))Module["abort"]=function(){abort("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"stringToNewUTF8"))Module["stringToNewUTF8"]=function(){abort("'stringToNewUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"abortOnCannotGrowMemory"))Module["abortOnCannotGrowMemory"]=function(){abort("'abortOnCannotGrowMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"emscripten_realloc_buffer"))Module["emscripten_realloc_buffer"]=function(){abort("'emscripten_realloc_buffer' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"ENV"))Module["ENV"]=function(){abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"setjmpId"))Module["setjmpId"]=function(){abort("'setjmpId' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"ERRNO_CODES"))Module["ERRNO_CODES"]=function(){abort("'ERRNO_CODES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"ERRNO_MESSAGES"))Module["ERRNO_MESSAGES"]=function(){abort("'ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"DNS"))Module["DNS"]=function(){abort("'DNS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"GAI_ERRNO_MESSAGES"))Module["GAI_ERRNO_MESSAGES"]=function(){abort("'GAI_ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"Protocols"))Module["Protocols"]=function(){abort("'Protocols' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"Sockets"))Module["Sockets"]=function(){abort("'Sockets' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"UNWIND_CACHE"))Module["UNWIND_CACHE"]=function(){abort("'UNWIND_CACHE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"readAsmConstArgs"))Module["readAsmConstArgs"]=function(){abort("'readAsmConstArgs' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"jstoi_q"))Module["jstoi_q"]=function(){abort("'jstoi_q' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"jstoi_s"))Module["jstoi_s"]=function(){abort("'jstoi_s' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"PATH"))Module["PATH"]=function(){abort("'PATH' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"PATH_FS"))Module["PATH_FS"]=function(){abort("'PATH_FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"SYSCALLS"))Module["SYSCALLS"]=function(){abort("'SYSCALLS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"syscallMmap2"))Module["syscallMmap2"]=function(){abort("'syscallMmap2' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"syscallMunmap"))Module["syscallMunmap"]=function(){abort("'syscallMunmap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"JSEvents"))Module["JSEvents"]=function(){abort("'JSEvents' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"demangle"))Module["demangle"]=function(){abort("'demangle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"demangleAll"))Module["demangleAll"]=function(){abort("'demangleAll' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"jsStackTrace"))Module["jsStackTrace"]=function(){abort("'jsStackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"stackTrace"))Module["stackTrace"]=function(){abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"writeI53ToI64"))Module["writeI53ToI64"]=function(){abort("'writeI53ToI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"writeI53ToI64Clamped"))Module["writeI53ToI64Clamped"]=function(){abort("'writeI53ToI64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"writeI53ToI64Signaling"))Module["writeI53ToI64Signaling"]=function(){abort("'writeI53ToI64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"writeI53ToU64Clamped"))Module["writeI53ToU64Clamped"]=function(){abort("'writeI53ToU64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"writeI53ToU64Signaling"))Module["writeI53ToU64Signaling"]=function(){abort("'writeI53ToU64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"readI53FromI64"))Module["readI53FromI64"]=function(){abort("'readI53FromI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"readI53FromU64"))Module["readI53FromU64"]=function(){abort("'readI53FromU64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"convertI32PairToI53"))Module["convertI32PairToI53"]=function(){abort("'convertI32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"convertU32PairToI53"))Module["convertU32PairToI53"]=function(){abort("'convertU32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"Browser"))Module["Browser"]=function(){abort("'Browser' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"FS"))Module["FS"]=function(){abort("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"MEMFS"))Module["MEMFS"]=function(){abort("'MEMFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"TTY"))Module["TTY"]=function(){abort("'TTY' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"PIPEFS"))Module["PIPEFS"]=function(){abort("'PIPEFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"SOCKFS"))Module["SOCKFS"]=function(){abort("'SOCKFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"GL"))Module["GL"]=function(){abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"emscriptenWebGLGet"))Module["emscriptenWebGLGet"]=function(){abort("'emscriptenWebGLGet' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"emscriptenWebGLGetTexPixelData"))Module["emscriptenWebGLGetTexPixelData"]=function(){abort("'emscriptenWebGLGetTexPixelData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"emscriptenWebGLGetUniform"))Module["emscriptenWebGLGetUniform"]=function(){abort("'emscriptenWebGLGetUniform' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"emscriptenWebGLGetVertexAttrib"))Module["emscriptenWebGLGetVertexAttrib"]=function(){abort("'emscriptenWebGLGetVertexAttrib' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"AL"))Module["AL"]=function(){abort("'AL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"SDL"))Module["SDL"]=function(){abort("'SDL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"SDL_gfx"))Module["SDL_gfx"]=function(){abort("'SDL_gfx' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"GLUT"))Module["GLUT"]=function(){abort("'GLUT' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"EGL"))Module["EGL"]=function(){abort("'EGL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"GLFW_Window"))Module["GLFW_Window"]=function(){abort("'GLFW_Window' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"GLFW"))Module["GLFW"]=function(){abort("'GLFW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"GLEW"))Module["GLEW"]=function(){abort("'GLEW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"IDBStore"))Module["IDBStore"]=function(){abort("'IDBStore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"runAndAbortIfError"))Module["runAndAbortIfError"]=function(){abort("'runAndAbortIfError' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"warnOnce"))Module["warnOnce"]=function(){abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"stackSave"))Module["stackSave"]=function(){abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"stackRestore"))Module["stackRestore"]=function(){abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"stackAlloc"))Module["stackAlloc"]=function(){abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"AsciiToString"))Module["AsciiToString"]=function(){abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"stringToAscii"))Module["stringToAscii"]=function(){abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"UTF16ToString"))Module["UTF16ToString"]=function(){abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"stringToUTF16"))Module["stringToUTF16"]=function(){abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"lengthBytesUTF16"))Module["lengthBytesUTF16"]=function(){abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"UTF32ToString"))Module["UTF32ToString"]=function(){abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"stringToUTF32"))Module["stringToUTF32"]=function(){abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"lengthBytesUTF32"))Module["lengthBytesUTF32"]=function(){abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"allocateUTF8"))Module["allocateUTF8"]=function(){abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};if(!Object.getOwnPropertyDescriptor(Module,"allocateUTF8OnStack"))Module["allocateUTF8OnStack"]=function(){abort("'allocateUTF8OnStack' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")};Module["writeStackCookie"]=writeStackCookie;Module["checkStackCookie"]=checkStackCookie;Module["abortStackOverflow"]=abortStackOverflow;if(!Object.getOwnPropertyDescriptor(Module,"ALLOC_NORMAL"))Object.defineProperty(Module,"ALLOC_NORMAL",{configurable:true,get:function(){abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}});if(!Object.getOwnPropertyDescriptor(Module,"ALLOC_STACK"))Object.defineProperty(Module,"ALLOC_STACK",{configurable:true,get:function(){abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}});if(!Object.getOwnPropertyDescriptor(Module,"ALLOC_DYNAMIC"))Object.defineProperty(Module,"ALLOC_DYNAMIC",{configurable:true,get:function(){abort("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}});if(!Object.getOwnPropertyDescriptor(Module,"ALLOC_NONE"))Object.defineProperty(Module,"ALLOC_NONE",{configurable:true,get:function(){abort("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}});var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status;}
+var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller;};function callMain(args){assert(runDependencies==0,'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])');assert(__ATPRERUN__.length==0,'cannot call main when preRun functions remain to be called');var entryFunction=Module['_main'];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1]);}
+HEAP32[(argv>>2)+argc]=0;try{Module['___set_stack_limit'](STACK_MAX);var ret=entryFunction(argc,argv);exit(ret,true);}
+catch(e){if(e instanceof ExitStatus){return;}else if(e=='unwind'){noExitRuntime=true;return;}else{var toLog=e;if(e&&typeof e==='object'&&e.stack){toLog=[e,e.stack];}
+err('exception thrown: '+toLog);quit_(1,e);}}finally{calledMain=true;}}
+function run(args){args=args||arguments_;if(runDependencies>0){return;}
+writeStackCookie();preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module['calledRun']=true;if(ABORT)return;initRuntime();preMain();if(Module['onRuntimeInitialized'])Module['onRuntimeInitialized']();if(shouldRunNow)callMain(args);postRun();}
+if(Module['setStatus']){Module['setStatus']('Running...');setTimeout(function(){setTimeout(function(){Module['setStatus']('');},1);doRun();},1);}else
+{doRun();}
+checkStackCookie();}
+Module['run']=run;function checkUnflushedContent(){var print=out;var printErr=err;var has=false;out=err=function(x){has=true;}
+try{var flush=Module['_fflush'];if(flush)flush(0);['stdout','stderr'].forEach(function(name){var info=FS.analyzePath('/dev/'+name);if(!info)return;var stream=info.object;var rdev=stream.rdev;var tty=TTY.ttys[rdev];if(tty&&tty.output&&tty.output.length){has=true;}});}catch(e){}
+out=print;err=printErr;if(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.');}}
+function exit(status,implicit){checkUnflushedContent();if(implicit&&noExitRuntime&&status===0){return;}
+if(noExitRuntime){if(!implicit){err('program exited (with status: '+status+'), 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)');}}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module['onExit'])Module['onExit'](status);}
+quit_(status,new ExitStatus(status));}
+if(Module['preInit']){if(typeof Module['preInit']=='function')Module['preInit']=[Module['preInit']];while(Module['preInit'].length>0){Module['preInit'].pop()();}}
+var shouldRunNow=true;if(Module['noInitialRun'])shouldRunNow=false;noExitRuntime=true;run();
\ No newline at end of file
diff --git a/static/sm64/sm64.us.f3dex2e.wasm b/static/sm64/sm64.us.f3dex2e.wasm
new file mode 100644
index 0000000000000000000000000000000000000000..2d60386f8fa04f9d376425008fd1e609d60feafa
GIT binary patch
literal 15971301
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≶`6<^Q_e8Fk!eo@k7
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