From 759857889042aef85bd60558f3631abba9a8751c Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sun, 18 Jun 2023 07:54:42 -0500 Subject: [PATCH] Added emscripten auto-compile capabilities to Release builds. --- Crawler/Crawler.vcxproj | 21 +++++++++++++++++++++ Crawler/Version.h | 2 +- Crawler/emscripten_build.ps1 | 2 ++ Crawler/pge.data | Bin 155359 -> 155741 bytes Crawler/pge.js | 2 +- Crawler/pge.wasm | Bin 428901 -> 430535 bytes 6 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 Crawler/emscripten_build.ps1 diff --git a/Crawler/Crawler.vcxproj b/Crawler/Crawler.vcxproj index a84758f1..9dc9de45 100644 --- a/Crawler/Crawler.vcxproj +++ b/Crawler/Crawler.vcxproj @@ -5,6 +5,14 @@ Debug Win32 + + Emscripten + Win32 + + + Emscripten + x64 + Release Win32 @@ -52,6 +60,12 @@ true Unicode + + v143 + + + v143 + @@ -119,6 +133,10 @@ powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File update_version.ps1 "./version.h" + + + + @@ -139,6 +157,9 @@ powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File update_version.ps1 "./version.h" + + powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File emscripten_build.ps1 + diff --git a/Crawler/Version.h b/Crawler/Version.h index 8b9e754c..6a607d36 100644 --- a/Crawler/Version.h +++ b/Crawler/Version.h @@ -2,7 +2,7 @@ #define VERSION_MAJOR 0 #define VERSION_MINOR 2 #define VERSION_PATCH 0 -#define VERSION_BUILD 27 +#define VERSION_BUILD 31 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/Crawler/emscripten_build.ps1 b/Crawler/emscripten_build.ps1 new file mode 100644 index 00000000..fa08d3b2 --- /dev/null +++ b/Crawler/emscripten_build.ps1 @@ -0,0 +1,2 @@ +~\Documents\emsdk\emsdk_env.ps1 activate latest +em++ -std=c++17 -O2 -s ALLOW_MEMORY_GROWTH=1 -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_LIBPNG=1 $(Get-ChildItem *.cpp) -o pge.html --preload-file assets \ No newline at end of file diff --git a/Crawler/pge.data b/Crawler/pge.data index 8111b1ee221cafe162550b314e8cf568fed7a69b..1edeca8aaeafa1f0484c1e829326326a0d65dbaf 100644 GIT binary patch delta 311 zcmcb=m-Frc&JA-zRT&rYtTzBkLIJZdjK#oUCa5rUrnl5(FZMbJ$u>k`Rp@V<+4Ge$e8yJ4@H!yr)Z(w-9+`w>v mv4H^!fxZ;w0kJ`151JboCU1-sZr%{uz9E!x`-V^^eNF&JSSq9d delta 26 icmcb6fb;%d&JA-zC(mILZq^HL*9&Ldt{2Xv&j|paTnW7Z diff --git a/Crawler/pge.js b/Crawler/pge.js index a4cb351d..3c17931a 100644 --- a/Crawler/pge.js +++ b/Crawler/pge.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){if(Module["ENVIRONMENT_IS_PTHREAD"]||Module["$ww"])return;var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="pge.data";var REMOTE_PACKAGE_BASE="pge.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];function fetchRemotePackage(packageName,packageSize,callback,errback){if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){require("fs").readFile(packageName,function(err,contents){if(err){errback(err)}else{callback(contents.buffer)}});return}var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"](`Downloading data... (${loaded}/${total})`)}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","assets",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"](`fp ${this.name}`)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"](`fp ${that.name}`);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&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",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",reason=>{throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}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(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){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 addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="pge.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["memory"];updateMemoryViews();wasmTable=Module["asm"]["__indirect_function_table"];addOnInit(Module["asm"]["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={44396:()=>{window.onunload=Module._olc_OnPageUnload},44440:($0,$1)=>{Module.olc_AspectRatio=$0/$1;Module.olc_AssumeDefaultShells=document.querySelectorAll(".emscripten").length>=3?true:false;var olc_ResizeHandler=function(){let isFullscreen=document.fullscreenElement!=null;let width=isFullscreen?window.innerWidth:Module.canvas.parentNode.clientWidth;let height=isFullscreen?window.innerHeight:Module.canvas.parentNode.clientHeight;let viewWidth=width;let viewHeight=width/Module.olc_AspectRatio;if(viewHeight>height){viewWidth=height*Module.olc_AspectRatio;viewHeight=height}viewWidth=parseInt(viewWidth);viewHeight=parseInt(viewHeight);setTimeout(function(){if(Module.olc_AssumeDefaultShells)Module.canvas.parentNode.setAttribute("style","width: 100%; height: 70vh; margin-left: auto; margin-right: auto;");Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);Module.canvas.setAttribute("style",`width: ${viewWidth}px; height: ${viewHeight}px;`);Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus()},200)};var olc_Init=function(){if(Module.olc_AspectRatio===undefined){setTimeout(function(){Module.olc_Init()},50);return}let resizeObserver=new ResizeObserver(function(entries){Module.olc_ResizeHandler()}).observe(Module.canvas.parentNode);let mutationObserver=new MutationObserver(function(mutationsList,observer){setTimeout(function(){Module.olc_ResizeHandler()},200)}).observe(Module.canvas.parentNode,{attributes:false,childList:true,subtree:false});window.addEventListener("fullscreenchange",function(e){setTimeout(function(){Module.olc_ResizeHandler()},200)})};Module.olc_ResizeHandler=Module.olc_ResizeHandler!=undefined?Module.olc_ResizeHandler:olc_ResizeHandler;Module.olc_Init=Module.olc_Init!=undefined?Module.olc_Init:olc_Init;Module.olc_Init()}};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(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:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname: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:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}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.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(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;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}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}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;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)}},fsync: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)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}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;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{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}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath: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:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode: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:(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:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(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:(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:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(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}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open: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:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts: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:(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){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(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{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: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(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(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:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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=(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);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||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(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(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>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;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){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}};function ___syscall_fcntl64(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.createStream(stream,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 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(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:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_throw_longjmp(){throw Infinity}function _abort(){abort("")}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}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=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}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){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=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){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+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}out('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function safeSetTimeout(func,timeout){return setTimeout(()=>{callUserCallback(func)},timeout)}var Browser={mainLoop:{running:false,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;setMainLoop(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{assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;if(onload)onload(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};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"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});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",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:2};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(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"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/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)},safeSetTimeout:function(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},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;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}},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(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|8388608;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&~8388608;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==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAP32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}function webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);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;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _eglCreateContext(display,config,hmm,contextAttribs){if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);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(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}}function _eglCreateWindowSurface(display,config,win,attrib_list){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006}function _eglDestroyContext(display,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1}function _eglDestroySurface(display,surface){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1}function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglInitialize(display,majorVersion,minorVersion){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}function _eglMakeCurrent(display,draw,read,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1}function _eglSwapBuffers(dpy,surface){if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0}function _eglSwapInterval(display,interval){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1}function _eglTerminate(display){if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_cancel_main_loop(){Browser.mainLoop.pause();Browser.mainLoop.func=null}function _emscripten_date_now(){return Date.now()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,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.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(e=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(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread)}function findCanvasEventTarget(target){return findEventTarget(target)}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 _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread)}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread)}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function fillMouseEventData(eventStruct,e,target){HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-rect.left;HEAP32[idx+14]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(e=event){fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(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};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread)}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread)}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread)}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread)}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread)}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(e=event){var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}}function _emscripten_set_window_title(title){setWindowTitle(UTF8ToString(title))}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>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.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])}var _glBindVertexArrayOES=_glBindVertexArray;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}function _glBufferData(target,size,data,usage){if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{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;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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 _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glEnable(x0){GLctx.enable(x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _glGenVertexArraysOES=_glGenVertexArrays;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 _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}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,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)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 _glReadPixels(x,y,width,height,format,type,pixels){if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}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.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};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 preloadedImages={};var preloadedAudios={};var GLctx;var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){return}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();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}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;run(); +var Module=typeof Module!="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){if(Module["ENVIRONMENT_IS_PTHREAD"]||Module["$ww"])return;var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="pge.data";var REMOTE_PACKAGE_BASE="pge.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];function fetchRemotePackage(packageName,packageSize,callback,errback){if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){require("fs").readFile(packageName,function(err,contents){if(err){errback(err)}else{callback(contents.buffer)}});return}var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"](`Downloading data... (${loaded}/${total})`)}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","assets",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"](`fp ${this.name}`)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"](`fp ${that.name}`);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&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",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",reason=>{throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}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(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){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 addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="pge.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["memory"];updateMemoryViews();wasmTable=Module["asm"]["__indirect_function_table"];addOnInit(Module["asm"]["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={44396:()=>{window.onunload=Module._olc_OnPageUnload},44440:($0,$1)=>{Module.olc_AspectRatio=$0/$1;Module.olc_AssumeDefaultShells=document.querySelectorAll(".emscripten").length>=3?true:false;var olc_ResizeHandler=function(){let isFullscreen=document.fullscreenElement!=null;let width=isFullscreen?window.innerWidth:Module.canvas.parentNode.clientWidth;let height=isFullscreen?window.innerHeight:Module.canvas.parentNode.clientHeight;let viewWidth=width;let viewHeight=width/Module.olc_AspectRatio;if(viewHeight>height){viewWidth=height*Module.olc_AspectRatio;viewHeight=height}viewWidth=parseInt(viewWidth);viewHeight=parseInt(viewHeight);setTimeout(function(){if(Module.olc_AssumeDefaultShells)Module.canvas.parentNode.setAttribute("style","width: 100%; height: 70vh; margin-left: auto; margin-right: auto;");Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);Module.canvas.setAttribute("style",`width: ${viewWidth}px; height: ${viewHeight}px;`);Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus()},200)};var olc_Init=function(){if(Module.olc_AspectRatio===undefined){setTimeout(function(){Module.olc_Init()},50);return}let resizeObserver=new ResizeObserver(function(entries){Module.olc_ResizeHandler()}).observe(Module.canvas.parentNode);let mutationObserver=new MutationObserver(function(mutationsList,observer){setTimeout(function(){Module.olc_ResizeHandler()},200)}).observe(Module.canvas.parentNode,{attributes:false,childList:true,subtree:false});window.addEventListener("fullscreenchange",function(e){setTimeout(function(){Module.olc_ResizeHandler()},200)})};Module.olc_ResizeHandler=Module.olc_ResizeHandler!=undefined?Module.olc_ResizeHandler:olc_ResizeHandler;Module.olc_Init=Module.olc_Init!=undefined?Module.olc_Init:olc_Init;Module.olc_Init()}};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(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:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname: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:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}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.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(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;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}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}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;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)}},fsync: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)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}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;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{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}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath: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:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode: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:(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:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(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:(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:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(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}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open: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:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts: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:(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){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(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{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: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(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(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:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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=(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);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||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(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(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>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;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){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}};function ___syscall_fcntl64(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.createStream(stream,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 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(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:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_throw_longjmp(){throw Infinity}function _abort(){abort("")}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}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=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}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){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=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){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+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}out('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function safeSetTimeout(func,timeout){return setTimeout(()=>{callUserCallback(func)},timeout)}var Browser={mainLoop:{running:false,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;setMainLoop(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{assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;if(onload)onload(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};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"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});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",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:2};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(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"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/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)},safeSetTimeout:function(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},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;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}},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(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|8388608;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&~8388608;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==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAP32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}function webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);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;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _eglCreateContext(display,config,hmm,contextAttribs){if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);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(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}}function _eglCreateWindowSurface(display,config,win,attrib_list){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006}function _eglDestroyContext(display,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1}function _eglDestroySurface(display,surface){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1}function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglInitialize(display,majorVersion,minorVersion){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}function _eglMakeCurrent(display,draw,read,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1}function _eglSwapBuffers(dpy,surface){if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0}function _eglSwapInterval(display,interval){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1}function _eglTerminate(display){if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_cancel_main_loop(){Browser.mainLoop.pause();Browser.mainLoop.func=null}function _emscripten_date_now(){return Date.now()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,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.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(e=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(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread)}function findCanvasEventTarget(target){return findEventTarget(target)}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 _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread)}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread)}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function fillMouseEventData(eventStruct,e,target){HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-rect.left;HEAP32[idx+14]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(e=event){fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(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};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread)}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread)}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread)}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread)}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread)}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(e=event){var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}}function _emscripten_set_window_title(title){setWindowTitle(UTF8ToString(title))}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>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.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])}var _glBindVertexArrayOES=_glBindVertexArray;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}function _glBufferData(target,size,data,usage){if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{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;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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 _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glEnable(x0){GLctx.enable(x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _glGenVertexArraysOES=_glGenVertexArrays;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 _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}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,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)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 _glReadPixels(x,y,width,height,format,type,pixels){if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}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.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};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 preloadedImages={};var preloadedAudios={};var GLctx;var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){return}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();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}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;run(); diff --git a/Crawler/pge.wasm b/Crawler/pge.wasm index 60eb944e669faf32fef8c1ba28a79d53506a3338..36b2190413699d5f204ce10bdeebc55eb1ec5dac 100644 GIT binary patch delta 67544 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 C7VLZg delta 65853 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