use-rhino-loader
Version:
React hook for loading Rhino .3dm files with three.js and Rhino3dmLoader
1 lines • 128 kB
JavaScript
var rhino3dm=(()=>{var _scriptDir="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return"undefined"!=typeof __filename&&(_scriptDir=_scriptDir||__filename),function(config){var readyPromiseResolve,readyPromiseReject,fs,nodePath,read_,readBinary,readAsync,config=config||{},Module=void 0!==config?config:{},moduleOverrides=(Module.ready=new Promise(function(resolve,reject){readyPromiseResolve=resolve,readyPromiseReject=reject}),Object.assign({},Module)),thisProgram="./this.program",ENVIRONMENT_IS_WEB="object"==typeof window,ENVIRONMENT_IS_WORKER="function"==typeof importScripts,ENVIRONMENT_IS_NODE="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,scriptDirectory="";ENVIRONMENT_IS_NODE?(fs=require("fs"),nodePath=require("path"),scriptDirectory=ENVIRONMENT_IS_WORKER?nodePath.dirname(scriptDirectory)+"/":__dirname+"/",read_=(filename,binary)=>(filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename),fs.readFileSync(filename,binary?void 0:"utf8")),readBinary=filename=>{filename=read_(filename,!0);return filename=filename.buffer?filename:new Uint8Array(filename)},readAsync=(filename,onload,onerror)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename),fs.readFile(filename,function(err,data){err?onerror(err):onload(data.buffer)})},1<process.argv.length&&(thisProgram=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",function(reason){throw reason}),Module.inspect=function(){return"[Emscripten Module object]"}):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:"undefined"!=typeof document&&document.currentScript&&(scriptDirectory=document.currentScript.src),scriptDirectory=0!==(scriptDirectory=_scriptDir?_scriptDir:scriptDirectory).indexOf("blob:")?scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1):"",read_=url=>{var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=url=>{var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=()=>{200==xhr.status||0==xhr.status&&xhr.response?onload(xhr.response):onerror()},xhr.onerror=onerror,xhr.send(null)});var wasmBinary,wasmMemory,out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console),POINTER_SIZE=(Object.assign(Module,moduleOverrides),Module.arguments&&Module.arguments,Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&Module.quit,4),ABORT=(Module.wasmBinary&&(wasmBinary=Module.wasmBinary),Module.noExitRuntime,"object"!=typeof WebAssembly&&abort("no native wasm support detected"),!1);function assert(condition,text){condition||abort(text)}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64,UTF8Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){for(var endIdx=idx+maxBytesToRead,endPtr=idx;heapOrArray[endPtr]&&!(endIdx<=endPtr);)++endPtr;if(16<endPtr-idx&&heapOrArray.buffer&&UTF8Decoder)return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr));for(var str="";idx<endPtr;){var u2,u1,u0=heapOrArray[idx++];128&u0?(u1=63&heapOrArray[idx++],192==(224&u0)?str+=String.fromCharCode((31&u0)<<6|u1):(u2=63&heapOrArray[idx++],(u0=224==(240&u0)?(15&u0)<<12|u1<<6|u2:(7&u0)<<18|u1<<12|u2<<6|63&heapOrArray[idx++])<65536?str+=String.fromCharCode(u0):(u1=u0-65536,str+=String.fromCharCode(55296|u1>>10,56320|1023&u1)))):str+=String.fromCharCode(u0)}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(0<maxBytesToWrite))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i<str.length;++i){var u=str.charCodeAt(i);if((u=55296<=u&&u<=57343?65536+((1023&u)<<10)|1023&str.charCodeAt(++i):u)<=127){if(endIdx<=outIdx)break;heap[outIdx++]=u}else{if(u<=2047){if(endIdx<=outIdx+1)break;heap[outIdx++]=192|u>>6}else{if(u<=65535){if(endIdx<=outIdx+2)break;heap[outIdx++]=224|u>>12}else{if(endIdx<=outIdx+3)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63}heap[outIdx++]=128|u>>6&63}heap[outIdx++]=128|63&u}}return heap[outIdx]=0,outIdx-startIdx}function lengthBytesUTF8(str){for(var len=0,i=0;i<str.length;++i){var c=str.charCodeAt(i);c<=127?len++:c<=2047?len+=2:55296<=c&&c<=57343?(len+=4,++i):len+=3}return len}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)}Module.INITIAL_MEMORY;var wasmTable,__ATPRERUN__=[],__ATINIT__=[],__ATPOSTRUN__=[];function preRun(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)cb=Module.preRun.shift(),__ATPRERUN__.unshift(cb);var cb;callRuntimeCallbacks(__ATPRERUN__)}function postRun(){if(Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)cb=Module.postRun.shift(),__ATPOSTRUN__.unshift(cb);var cb;callRuntimeCallbacks(__ATPOSTRUN__)}var runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(){var callback;runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)&&(callback=dependenciesFulfilled,dependenciesFulfilled=null,callback())}function abort(what){Module.onAbort&&Module.onAbort(what),err(what="Aborted("+what+")"),ABORT=!0,what+=". Build with -sASSERTIONS for more info.";what=new WebAssembly.RuntimeError(what);throw readyPromiseReject(what),what}var wasmBinaryFile,tempDouble,tempI64;function isDataURI(filename){return filename.startsWith("data:application/octet-stream;base64,")}function isFileURI(filename){return filename.startsWith("file://")}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 ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}function callRuntimeCallbacks(callbacks){for(;0<callbacks.length;)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_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount},this.set_caught=function(caught){HEAP8[this.ptr+12>>0]=caught=caught?1:0},this.get_caught=function(){return 0!=HEAP8[this.ptr+12>>0]},this.set_rethrown=function(rethrown){HEAP8[this.ptr+13>>0]=rethrown=rethrown?1:0},this.get_rethrown=function(){return 0!=HEAP8[this.ptr+13>>0]},this.init=function(type,destructor){this.set_adjusted_ptr(0),this.set_type(type),this.set_destructor(destructor),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1},this.release_ref=function(){var prev=HEAP32[this.ptr>>2];return HEAP32[this.ptr>>2]=prev-1,1===prev},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 adjusted;return ___cxa_is_pointer_type(this.get_type())?HEAPU32[this.excPtr>>2]:0!==(adjusted=this.get_adjusted_ptr())?adjusted:this.excPtr}}isDataURI(wasmBinaryFile="rhino3dm.wasm")||(moduleOverrides=wasmBinaryFile,wasmBinaryFile=Module.locateFile?Module.locateFile(moduleOverrides,scriptDirectory):scriptDirectory+moduleOverrides);var PATH={isAbs:path=>"/"===path.charAt(0),splitPath:filename=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(filename).slice(1),normalizeArray:(parts,allowAboveRoot)=>{for(var up=0,i=parts.length-1;0<=i;i--){var last=parts[i];"."===last?parts.splice(i,1):".."===last?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash="/"===path.substr(-1);return(path=(path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/"))||isAbsolute?path:".")&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:path=>{var path=PATH.splitPath(path),root=path[0],path=path[1];return root||path?root+(path=path&&path.substr(0,path.length-1)):"."},basename:path=>{var lastSlash;return"/"===path?"/":-1===(lastSlash=(path=(path=PATH.normalize(path)).replace(/\/$/,"")).lastIndexOf("/"))?path:path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>PATH.normalize(l+"/"+r)},PATH_FS={resolve:function(){for(var resolvedPath="",resolvedAbsolute=!1,i=arguments.length-1;-1<=i&&!resolvedAbsolute;i--){var path=0<=i?arguments[i]:FS.cwd();if("string"!=typeof path)throw new TypeError("Arguments to path.resolve must be strings");if(!path)return"";resolvedPath=path+"/"+resolvedPath,resolvedAbsolute=PATH.isAbs(path)}return(resolvedAbsolute?"/":"")+(resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/"))||"."},relative:(from,to)=>{function trim(arr){for(var start=0;start<arr.length&&""===arr[start];start++);for(var end=arr.length-1;0<=end&&""===arr[end];end--);return end<start?[]:arr.slice(start,end-start+1)}from=PATH_FS.resolve(from).substr(1),to=PATH_FS.resolve(to).substr(1);for(var fromParts=trim(from.split("/")),toParts=trim(to.split("/")),length=Math.min(fromParts.length,toParts.length),samePartsLength=length,i=0;i<length;i++)if(fromParts[i]!==toParts[i]){samePartsLength=i;break}for(var outputParts=[],i=samePartsLength;i<fromParts.length;i++)outputParts.push("..");return(outputParts=outputParts.concat(toParts.slice(samePartsLength))).join("/")}};function intArrayFromString(stringy,dontAddNull,length){length=0<length?length:lengthBytesUTF8(stringy)+1,length=new Array(length),stringy=stringToUTF8Array(stringy,length,0,length.length);return dontAddNull&&(length.length=stringy),length}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=!1},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);for(var result,bytesRead=0,i=0;i<length;i++){try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(void 0===result&&0===bytesRead)throw new FS.ErrnoError(6);if(null==result)break;bytesRead++,buffer[offset+i]=result}return bytesRead&&(stream.node.timestamp=Date.now()),bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char)throw new FS.ErrnoError(60);try{for(var i=0;i<length;i++)stream.tty.ops.put_char(stream.tty,buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}return length&&(stream.node.timestamp=Date.now()),i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var buf=Buffer.alloc(256),bytesRead=0;try{bytesRead=fs.readSync(process.stdin.fd,buf,0,256,-1)}catch(e){if(!e.toString().includes("EOF"))throw e;bytesRead=0}result=0<bytesRead?buf.slice(0,bytesRead).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(result=window.prompt("Input: "))&&(result+="\n"):"function"==typeof readline&&null!==(result=readline())&&(result+="\n");if(!result)return null;tty.input=intArrayFromString(result,!0)}return tty.input.shift()},put_char:function(tty,val){null===val||10===val?(out(UTF8ArrayToString(tty.output,0)),tty.output=[]):0!=val&&tty.output.push(val)},fsync:function(tty){tty.output&&0<tty.output.length&&(out(UTF8ArrayToString(tty.output,0)),tty.output=[])}},default_tty1_ops:{put_char:function(tty,val){null===val||10===val?(err(UTF8ArrayToString(tty.output,0)),tty.output=[]):0!=val&&tty.output.push(val)},fsync:function(tty){tty.output&&0<tty.output.length&&(err(UTF8ArrayToString(tty.output,0)),tty.output=[])}}};function mmapAlloc(){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16895,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode))throw new FS.ErrnoError(63);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}});mode=FS.createNode(parent,name,mode,dev);return FS.isDir(mode.mode)?(mode.node_ops=MEMFS.ops_table.dir.node,mode.stream_ops=MEMFS.ops_table.dir.stream,mode.contents={}):FS.isFile(mode.mode)?(mode.node_ops=MEMFS.ops_table.file.node,mode.stream_ops=MEMFS.ops_table.file.stream,mode.usedBytes=0,mode.contents=null):FS.isLink(mode.mode)?(mode.node_ops=MEMFS.ops_table.link.node,mode.stream_ops=MEMFS.ops_table.link.stream):FS.isChrdev(mode.mode)&&(mode.node_ops=MEMFS.ops_table.chrdev.node,mode.stream_ops=MEMFS.ops_table.chrdev.stream),mode.timestamp=Date.now(),parent&&(parent.contents[name]=mode,parent.timestamp=mode.timestamp),mode},getFileDataAsTypedArray:function(node){return node.contents?node.contents.subarray?node.contents.subarray(0,node.usedBytes):new Uint8Array(node.contents):new Uint8Array(0)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;newCapacity<=prevCapacity||(newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<1048576?2:1.125)>>>0),0!=prevCapacity&&(newCapacity=Math.max(newCapacity,256)),prevCapacity=node.contents,node.contents=new Uint8Array(newCapacity),0<node.usedBytes&&node.contents.set(prevCapacity.subarray(0,node.usedBytes),0))},resizeFileStorage:function(node,newSize){var oldContents;node.usedBytes!=newSize&&(0==newSize?(node.contents=null,node.usedBytes=0):(oldContents=node.contents,node.contents=new Uint8Array(newSize),oldContents&&node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes))),node.usedBytes=newSize))},node_ops:{getattr:function(node){var attr={};return 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,FS.isDir(node.mode)?attr.size=4096:FS.isFile(node.mode)?attr.size=node.usedBytes:FS.isLink(node.mode)?attr.size=node.link.length: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),attr},setattr:function(node,attr){void 0!==attr.mode&&(node.mode=attr.mode),void 0!==attr.timestamp&&(node.timestamp=attr.timestamp),void 0!==attr.size&&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){for(var i in FS.lookupNode(parent,name).contents)throw new FS.ErrnoError(55);delete parent.contents[name],parent.timestamp=Date.now()},readdir:function(node){var key,entries=[".",".."];for(key in node.contents)node.contents.hasOwnProperty(key)&&entries.push(key);return entries},symlink:function(parent,newname,oldpath){parent=MEMFS.createNode(parent,newname,41471,0);return parent.link=oldpath,parent},readlink:function(node){if(FS.isLink(node.mode))return node.link;throw new FS.ErrnoError(28)}},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(8<size&&contents.subarray)buffer.set(contents.subarray(position,position+size),offset);else for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i];return size},write:function(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer&&(canOwn=!1),!length)return 0;var node=stream.node;if(node.timestamp=Date.now(),buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn)return node.contents=buffer.subarray(offset,offset+length),node.usedBytes=length;if(0===node.usedBytes&&0===position)return node.contents=buffer.slice(offset,offset+length),node.usedBytes=length;if(position+length<=node.usedBytes)return node.contents.set(buffer.subarray(offset,offset+length),position),length}if(MEMFS.expandFileStorage(node,position+length),node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else for(var i=0;i<length;i++)node.contents[position+i]=buffer[offset+i];return node.usedBytes=Math.max(node.usedBytes,position+length),length},llseek:function(stream,offset,whence){if(1===whence?offset+=stream.position:2===whence&&FS.isFile(stream.node.mode)&&(offset+=stream.node.usedBytes),offset<0)throw new FS.ErrnoError(28);return offset},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length),stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode))throw new FS.ErrnoError(43);var ptr,allocated,stream=stream.node.contents;if(2&flags||stream.buffer!==HEAP8.buffer){if((0<position||position+length<stream.length)&&(stream=stream.subarray?stream.subarray(position,position+length):Array.prototype.slice.call(stream,position,position+length)),allocated=!0,!(ptr=mmapAlloc()))throw new FS.ErrnoError(48);HEAP8.set(stream,ptr)}else allocated=!1,ptr=stream.byteOffset;return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){return MEMFS.stream_ops.write(stream,buffer,0,length,offset,!1),0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{if(!(path=PATH_FS.resolve(path)))return{path:"",node:null};if(8<(opts=Object.assign({follow_mount:!0,recurse_count:0},opts)).recurse_count)throw new FS.ErrnoError(32);for(var parts=path.split("/").filter(p=>!!p),current=FS.root,current_path="/",i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent)break;if(current=FS.lookupNode(current,parts[i]),current_path=PATH.join2(current_path,parts[i]),!FS.isMountpoint(current)||islast&&!opts.follow_mount||(current=current.mounted.root),!islast||opts.follow)for(var count=0;FS.isLink(current.mode);){var link=FS.readlink(current_path),current_path=PATH_FS.resolve(PATH.dirname(current_path),link),current=FS.lookupPath(current_path,{recurse_count:opts.recurse_count+1}).node;if(40<count++)throw new FS.ErrnoError(32)}}return{path:current_path,node:current}},getPath:node=>{for(var path,mount;;){if(FS.isRoot(node))return mount=node.mount.mountpoint,path?"/"!==mount[mount.length-1]?mount+"/"+path:mount+path:mount;path=path?node.name+"/"+path:node.name,node=node.parent}},hashName:(parentid,name)=>{for(var hash=0,i=0;i<name.length;i++)hash=(hash<<5)-hash+name.charCodeAt(i)|0;return(parentid+hash>>>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 for(var current=FS.nameTable[hash];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);for(var errCode=FS.hashName(parent.id,name),node=FS.nameTable[errCode];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)=>{parent=new FS.FSNode(parent,name,mode,rdev);return FS.hashAddNode(parent),parent},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>node===node.parent,isMountpoint:node=>!!node.mounted,isFile:mode=>32768==(61440&mode),isDir:mode=>16384==(61440&mode),isLink:mode=>40960==(61440&mode),isChrdev:mode=>8192==(61440&mode),isBlkdev:mode=>24576==(61440&mode),isFIFO:mode=>4096==(61440&mode),isSocket:mode=>49152==(49152&mode),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(void 0===flags)throw new Error("Unknown file open mode: "+str);return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][3&flag];return 512&flag&&(perms+="w"),perms},nodePermissions:(node,perms)=>FS.ignorePermissions||(!perms.includes("r")||292&node.mode)&&(!perms.includes("w")||146&node.mode)&&(!perms.includes("x")||73&node.mode)?0:2,mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");return errCode||(dir.node_ops.lookup?0:2)},mayCreate:(dir,name)=>{try{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}name=FS.nodePermissions(dir,"wx");if(name)return name;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)=>node?FS.isLink(node.mode)?32:FS.isDir(node.mode)&&("r"!==FS.flagsToPermissionString(flags)||512&flags)?31:FS.nodePermissions(node,FS.flagsToPermissionString(flags)):44,MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++)if(!FS.streams[fd])return fd;throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{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 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},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);fd_start=FS.nextfd(fd_start,fd_end);return stream.fd=fd_start,FS.streams[fd_start]=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,stream.stream_ops.open&&stream.stream_ops.open(stream)},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>255&dev,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{for(var mounts=[],check=[mount];check.length;){var m=check.pop();mounts.push(m),check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{"function"==typeof populate&&(callback=populate,populate=!1),FS.syncFSRequests++,1<FS.syncFSRequests&&err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var mounts=FS.getMounts(FS.root.mount),completed=0;function doCallback(errCode){return FS.syncFSRequests--,callback(errCode)}function done(errCode){if(errCode)return done.errored?void 0:(done.errored=!0,doCallback(errCode));++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 node,root="/"===mountpoint,pseudo=!mountpoint;if(root&&FS.root)throw new FS.ErrnoError(10);if(!root&&!pseudo){pseudo=FS.lookupPath(mountpoint,{follow_mount:!1});if(mountpoint=pseudo.path,FS.isMountpoint(node=pseudo.node))throw new FS.ErrnoError(10);if(!FS.isDir(node.mode))throw new FS.ErrnoError(54)}pseudo={type:type,opts:opts,mountpoint:mountpoint,mounts:[]},opts=type.mount(pseudo);return(opts.mount=pseudo).root=opts,root?FS.root=opts:node&&(node.mounted=pseudo,node.mount)&&node.mount.mounts.push(pseudo),opts},unmount:mountpoint=>{mountpoint=FS.lookupPath(mountpoint,{follow_mount:!1});if(!FS.isMountpoint(mountpoint.node))throw new FS.ErrnoError(28);var mountpoint=mountpoint.node,mount=mountpoint.mounted,mounts=FS.getMounts(mount),mount=(Object.keys(FS.nameTable).forEach(hash=>{for(var current=FS.nameTable[hash];current;){var next=current.name_next;mounts.includes(current.mount)&&FS.destroyNode(current),current=next}}),mountpoint.mounted=null,mountpoint.mount.mounts.indexOf(mount));mountpoint.mount.mounts.splice(mount,1)},lookup:(parent,name)=>parent.node_ops.lookup(parent,name),mknod:(path,mode,dev)=>{var parent=FS.lookupPath(path,{parent:!0}).node,path=PATH.basename(path);if(!path||"."===path||".."===path)throw new FS.ErrnoError(28);var errCode=FS.mayCreate(parent,path);if(errCode)throw new FS.ErrnoError(errCode);if(parent.node_ops.mknod)return parent.node_ops.mknod(parent,path,mode,dev);throw new FS.ErrnoError(63)},create:(path,mode)=>FS.mknod(path,mode=(mode=void 0!==mode?mode:438)&4095|32768,0),mkdir:(path,mode)=>FS.mknod(path,mode=(mode=void 0!==mode?mode:511)&1023|16384,0),mkdirTree:(path,mode)=>{for(var dirs=path.split("/"),d="",i=0;i<dirs.length;++i)if(dirs[i]){d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(20!=e.errno)throw e}}},mkdev:(path,mode,dev)=>(void 0===dev&&(dev=mode,mode=438),FS.mknod(path,mode|=8192,dev)),symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath))throw new FS.ErrnoError(44);var parent=FS.lookupPath(newpath,{parent:!0}).node;if(!parent)throw new FS.ErrnoError(44);var newpath=PATH.basename(newpath),errCode=FS.mayCreate(parent,newpath);if(errCode)throw new FS.ErrnoError(errCode);if(parent.node_ops.symlink)return parent.node_ops.symlink(parent,newpath,oldpath);throw new FS.ErrnoError(63)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path),new_dirname=PATH.dirname(new_path),old_name=PATH.basename(old_path),new_name=PATH.basename(new_path),lookup=FS.lookupPath(old_path,{parent:!0}),lookup=lookup.node,new_dir=FS.lookupPath(new_path,{parent:!0}).node;if(!lookup||!new_dir)throw new FS.ErrnoError(44);if(lookup.mount!==new_dir.mount)throw new FS.ErrnoError(75);var new_node,old_node=FS.lookupNode(lookup,old_name),old_path=PATH_FS.relative(old_path,new_dirname);if("."!==old_path.charAt(0))throw new FS.ErrnoError(28);if("."!==(old_path=PATH_FS.relative(new_path,old_dirname)).charAt(0))throw new FS.ErrnoError(55);try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node!==new_node){new_dirname=FS.isDir(old_node.mode),new_path=FS.mayDelete(lookup,old_name,new_dirname);if(new_path)throw new FS.ErrnoError(new_path);if(new_path=new_node?FS.mayDelete(new_dir,new_name,new_dirname):FS.mayCreate(new_dir,new_name))throw new FS.ErrnoError(new_path);if(!lookup.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!==lookup&&(new_path=FS.nodePermissions(lookup,"w")))throw new FS.ErrnoError(new_path);FS.hashRemoveNode(old_node);try{lookup.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}}},rmdir:path=>{var parent=FS.lookupPath(path,{parent:!0}).node,path=PATH.basename(path),node=FS.lookupNode(parent,path),errCode=FS.mayDelete(parent,path,!0);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,path),FS.destroyNode(node)},readdir:path=>{path=FS.lookupPath(path,{follow:!0}).node;if(path.node_ops.readdir)return path.node_ops.readdir(path);throw new FS.ErrnoError(54)},unlink:path=>{var parent=FS.lookupPath(path,{parent:!0}).node;if(!parent)throw new FS.ErrnoError(44);var path=PATH.basename(path),node=FS.lookupNode(parent,path),errCode=FS.mayDelete(parent,path,!1);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,path),FS.destroyNode(node)},readlink:path=>{path=FS.lookupPath(path).node;if(!path)throw new FS.ErrnoError(44);if(path.node_ops.readlink)return PATH_FS.resolve(FS.getPath(path.parent),path.node_ops.readlink(path));throw new FS.ErrnoError(28)},stat:(path,dontFollow)=>{path=FS.lookupPath(path,{follow:!dontFollow}).node;if(!path)throw new FS.ErrnoError(44);if(path.node_ops.getattr)return path.node_ops.getattr(path);throw new FS.ErrnoError(63)},lstat:path=>FS.stat(path,!0),chmod:(path,mode,dontFollow)=>{if(!(dontFollow="string"==typeof path?FS.lookupPath(path,{follow:!dontFollow}).node:path).node_ops.setattr)throw new FS.ErrnoError(63);dontFollow.node_ops.setattr(dontFollow,{mode:4095&mode|-4096&dontFollow.mode,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,!0)},fchmod:(fd,mode)=>{fd=FS.getStream(fd);if(!fd)throw new FS.ErrnoError(8);FS.chmod(fd.node,mode)},chown:(path,uid,gid,dontFollow)=>{if(!(dontFollow="string"==typeof path?FS.lookupPath(path,{follow:!dontFollow}).node:path).node_ops.setattr)throw new FS.ErrnoError(63);dontFollow.node_ops.setattr(dontFollow,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,!0)},fchown:(fd,uid,gid)=>{fd=FS.getStream(fd);if(!fd)throw new FS.ErrnoError(8);FS.chown(fd.node,uid,gid)},truncate:(path,len)=>{if(len<0)throw new FS.ErrnoError(28);if(!(path="string"==typeof path?FS.lookupPath(path,{follow:!0}).node:path).node_ops.setattr)throw new FS.ErrnoError(63);if(FS.isDir(path.mode))throw new FS.ErrnoError(31);if(!FS.isFile(path.mode))throw new FS.ErrnoError(28);var errCode=FS.nodePermissions(path,"w");if(errCode)throw new FS.ErrnoError(errCode);path.node_ops.setattr(path,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{fd=FS.getStream(fd);if(!fd)throw new FS.ErrnoError(8);if(0==(2097155&fd.flags))throw new FS.ErrnoError(28);FS.truncate(fd.node,len)},utime:(path,atime,mtime)=>{path=FS.lookupPath(path,{follow:!0}).node;path.node_ops.setattr(path,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(""===path)throw new FS.ErrnoError(44);if(mode=void 0===mode?438:mode,mode=64&(flags="string"==typeof flags?FS.modeStringToFlags(flags):flags)?4095&mode|32768:0,"object"==typeof path)node=path;else{path=PATH.normalize(path);try{var node=FS.lookupPath(path,{follow:!(131072&flags)}).node}catch(e){}}var created=!1;if(64&flags)if(node){if(128&flags)throw new FS.ErrnoError(20)}else node=FS.mknod(path,mode,0),created=!0;if(!node)throw new FS.ErrnoError(44);if(FS.isChrdev(node.mode)&&(flags&=-513),65536&flags&&!FS.isDir(node.mode))throw new FS.ErrnoError(54);if(!created){mode=FS.mayOpen(node,flags);if(mode)throw new FS.ErrnoError(mode)}512&flags&&!created&&FS.truncate(node,0),flags&=-131713;mode=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:!0,position:0,stream_ops:node.stream_ops,ungotten:[],error:!1});return mode.stream_ops.open&&mode.stream_ops.open(mode),!Module.logReadFiles||1&flags||(FS.readFiles||(FS.readFiles={}),path in FS.readFiles)||(FS.readFiles[path]=1),mode},close:stream=>{if(FS.isClosed(stream))throw new FS.ErrnoError(8);stream.getdents&&(stream.getdents=null);try{stream.stream_ops.close&&stream.stream_ops.close(stream)}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>null===stream.fd,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(0!=whence&&1!=whence&&2!=whence)throw new FS.ErrnoError(28);return stream.position=stream.stream_ops.llseek(stream,offset,whence),stream.ungotten=[],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(1==(2097155&stream.flags))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=void 0!==position;if(seeking){if(!stream.seekable)throw new FS.ErrnoError(70)}else position=stream.position;buffer=stream.stream_ops.read(stream,buffer,offset,length,position);return seeking||(stream.position+=buffer),buffer},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(0==(2097155&stream.flags))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);stream.seekable&&1024&stream.flags&&FS.llseek(stream,0,2);var seeking=void 0!==position;if(seeking){if(!stream.seekable)throw new FS.ErrnoError(70)}else position=stream.position;buffer=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);return seeking||(stream.position+=buffer),buffer},allocate:(stream,offset,length)=>{if(FS.isClosed(stream))throw new FS.ErrnoError(8);if(offset<0||length<=0)throw new FS.ErrnoError(28);if(0==(2097155&stream.flags))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(0!=(2&prot)&&0==(2&flags)&&2!=(2097155&stream.flags))throw new FS.ErrnoError(2);if(1==(2097155&stream.flags))throw new FS.ErrnoError(2);if(stream.stream_ops.mmap)return stream.stream_ops.mmap(stream,length,position,prot,flags);throw new FS.ErrnoError(43)},msync:(stream,buffer,offset,length,mmapFlags)=>stream.stream_ops.msync?stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags):0,munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(stream.stream_ops.ioctl)return stream.stream_ops.ioctl(stream,cmd,arg);throw new FS.ErrnoError(59)},readFile:(path,opts={})=>{if(opts.flags=opts.flags||0,opts.encoding=opts.encoding||"binary","utf8"!==opts.encoding&&"binary"!==opts.encoding)throw new Error('Invalid encoding type "'+opts.encoding+'"');var ret,stream=FS.open(path,opts.flags),path=FS.stat(path).size,buf=new Uint8Array(path);return FS.read(stream,buf,0,path,0),"utf8"===opts.encoding?ret=UTF8ArrayToString(buf,0):"binary"===opts.encoding&&(ret=buf),FS.close(stream),ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;path=FS.open(path,opts.flags,opts.mode);if("string"==typeof data){var buf=new Uint8Array(lengthBytesUTF8(data)+1),actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(path,buf,0,actualNumBytes,void 0,opts.canOwn)}else{if(!ArrayBuffer.isView(data))throw new Error("Unsupported data type");FS.write(path,data,0,data.byteLength,void 0,opts.canOwn)}FS.close(path)},cwd:()=>FS.currentPath,chdir:path=>{path=FS.lookupPath(path,{follow:!0});if(null===path.node)throw new FS.ErrnoError(44);if(!FS.isDir(path.node.mode))throw new FS.ErrnoError(54);var errCode=FS.nodePermissions(path.node,"x");if(errCode)throw new FS.ErrnoError(errCode);FS.currentPath=path.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 random_device=(()=>{var randomBuffer;if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return randomBuffer=new Uint8Array(1),()=>(crypto.getRandomValues(randomBuffer),randomBuffer[0]);if(ENVIRONMENT_IS_NODE)try{var crypto_module=require("crypto");return()=>crypto_module.randomBytes(1)[0]}catch(e){}return()=>abort("randomDevice")})();FS.createDevice("/dev","random",random_device),FS.createDevice("/dev","urandom",random_device),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",16895,73);return node.node_ops={lookup:(parent,name)=>{var stream=FS.getStream(+name);if(stream)return(name={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}}).parent=name;throw new FS.ErrnoError(8)}},node}},{},"/proc/self/fd")},createStandardStreams:()=>{Module.stdin?FS.createDevice("/dev","stdin",Module.stdin):FS.symlink("/dev/tty","/dev/stdin"),Module.stdout?FS.createDevice("/dev","stdout",null,Module.stdout):FS.symlink("/dev/tty","/dev/stdout"),Module.stderr?FS.createDevice("/dev","stderr",null,Module.stderr):FS.symlink("/dev/tty1","/dev/stderr");FS.open("/dev/stdin",0),FS.open("/dev/stdout",1),FS.open("/dev/stderr",1)},ensureErrnoError:()=>{FS.ErrnoError||(FS.ErrnoError=function(errno,node){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="<generic error, no 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=!0,FS.ensureErrnoError(),Module.stdin=input||Module.stdin,Module.stdout=output||Module.stdout,Module.stderr=error||Module.stderr,FS.createStandardStreams()},quit:()=>{FS.init.initialized=!1;for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];stream&&FS.close(stream)}},getMode:(canRead,canWrite)=>{var mode=0;return canRead&&(mode|=365),canWrite&&(mode|=146),mode},findObject:(path,dontResolveLastLink)=>{path=FS.analyzePath(path,dontResolveLastLink);return path.exists?path.object:null},analyzePath:(path,dontResolveLastLink)=>{try{path=(lookup=FS.lookupPath(path,{follow:!dontResolveLastLink})).path}catch(e){}var ret={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:!0});ret.parentExists=!0,ret.parentPath=lookup.path,ret.parentObject=lookup.node,ret.name=PATH.basename(path),lookup=FS.lookupPath(path,{follow:!dontResolveLastLink}),ret.exists=!0,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="string"==typeof parent?parent:FS.getPath(parent);for(var parts=path.split("/").reverse();parts.length;){var part=parts.pop();if(part){var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}}return current},createFile:(parent,name,properties,canRead,canWrite)=>{parent=PATH.join2("string"==typeof parent?parent:FS.getPath(parent),name),name=FS.getMode(canRead,canWrite);return FS.create(parent,name)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name,name=(parent&&(parent="string"==typeof parent?parent:FS.getPath(parent),path=name?PATH.join2(parent,name):parent),FS.getMode(canRead,canWrite)),parent=FS.create(path,name);if(data){if("string"==typeof data){for(var arr=new Array(data.length),i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(parent,146|name);canRead=FS.open(parent,577);FS.write(canRead,data,0,data.length,0,canOwn),FS.close(canRead),FS.chmod(parent,name)}return parent},createDevice:(parent,name,input,output)=>{var parent=PATH.join2("string"==typeof parent?parent:FS.getPath(parent),name),name=FS.getMode(!!input,!!output),dev=(FS.createDevice.major||(FS.createDevice.major=64),FS.makedev(FS.createDevice.major++,0));return FS.registerDevice(dev,{open:stream=>{stream.seekable=!1},close:stream=>{output&&output.buffer&&output.buffer.length&&output(10)},read:(stream,buffer,offset,length,pos)=>{for(var result,bytesRead=0,i=0;i<length;i++){try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(void 0===result&&0===bytesRead)throw new FS.ErrnoError(6);if(null==result)break;bytesRead++,buffer[offset+i]=result}return bytesRead&&(stream.node.timestamp=Date.now()),bytesRead},write:(stream,buffer,offset,length,pos)=>{for(var i=0;i<length;i++)try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}return length&&(stream.node.timestamp=Date.now()),i}}),FS.mkdev(parent,name,dev)},forceLoadFile:obj=>{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return!0;if("undefined"!=typeof XMLHttpRequest)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.");if(!read_)throw new Error("Cannot load without read() or XMLHttpRequest.");try{obj.contents=intArrayFromString(read_(obj.url),!0),obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=!1,this.chunks=[]}if(LazyUint8Array.prototype.get=function(idx){var chunkOffset;if(!(idx>this.length-1||idx<0))return chunkOffset=idx%this.chunkSize,idx=idx/this.chunkSize|0,this.getter(idx)[chunkOffset]},LazyUint8Array.prototype.setDataGetter=function(getter){this.getter=getter},LazyUint8Array.prototype.cacheLength=function(){var xhr=new XMLHttpRequest;if(xhr.open("HEAD",url,!1),xhr.send(null),!(200<=xhr.status&&xhr.status<300||304===xhr.status))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var header,datalength=Number(xhr.getResponseHeader("Content-length")),hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&"bytes"===header,xhr=(header=xhr.getResponseHeader("Content-Encoding"))&&"gzip"===header,chunkSize=1048576,lazyArray=(hasByteServing||(chunkSize=datalength),this);lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize,end=(chunkNum+1)*chunkSize-1,end=Math.min(end,datalength-1);if(void 0===lazyArray.chunks[chunkNum]&&(lazyArray.chunks[chunkNum]=((from,to)=>{if(to<from)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(datalength-1<to)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;if(xhr.open("GET",url,!1),datalength!==chunkSize&&xhr.setRequestHeader("Range","bytes="+from+"-"+to),xhr.responseType="arraybuffer",xhr.overrideMimeType&&xhr.overrideMimeType("text/plain; charset=x-user-defined"),xhr.send(null),200<=xhr.status&&xhr.status<300||304===xhr.status)return void 0!==xhr.response?new Uint8Array(xhr.response||[]):intArrayFromString(xhr.responseText||"",!0);throw new Error("Couldn't load "+url+". Status: "+xhr.status)})(start,end)),void 0===lazyArray.chunks[chunkNum])throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}),!xhr&&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=!0},"undefined"!=typeof XMLHttpRequest){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,lazyArray=(Object.defineProperties(lazyArray,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}}),{isDevice:!1,contents:lazyArray})}else lazyArray={isDevice:!1,url:url};var node=FS.createFile(parent,name,lazyArray,canRead,canWrite),stream_ops=(lazyArray.contents?node.contents=lazyArray.contents:lazyArray.url&&(node.contents=null,node.url=lazyArray.url),Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}}),{});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<size;i++)buffer[offset+i]=contents[position+i];else for(i=0;i<size;i++)buffer[offset+i]=contents.get(position+i);return size}return Object.keys(node.stream_ops).forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function(){return FS.forceLoadFile(node),fn.apply(null,arguments)}}),stream_ops.read=(stream,buffer,offset,length,position)=>(FS.forceLoadFile(node),writeChunks(stream,buffer,offset,length,position)),stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);mmapAlloc();throw new FS.ErrnoError(48)},node.stream_ops=stream_ops,node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;function processData(byteArray){function finish(byteArray){preFinish&&preFinish(),dontCreateFile||FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn),onload&&onload(),removeRunDependency()}Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror&&onerror(),removeRunDependency()})||finish(byteArray)}addRunDependency(),"string"==typeof url?((url,onload,onerror,noRunDep)=>{var dep=noRunDep?"":"al "+url;readAsync(url,arrayBuffer=>{assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).'),onload(new Uint8Array(arrayBuffer)),dep&&removeRunDependency()},event=>{if(!onerror)throw'Loading data file "'+url+'" failed.';onerror()}),dep&&addRunDependency()})(url,byteArray=>processData(byteArray),onerror):processData(url)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{}),onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db"),openRequest.result.createObjectStore(FS.DB_STORE_NAME)},openRequest.onsuccess=()=>{var transaction=openRequest.result.transaction([FS.DB_STORE_NAME],"readwrite"),files=transaction.objectStore(FS.DB_STORE_NAME),ok=0,fail=0,total=paths.length;function finish(){(0==fail?onload:onerror)()}paths.forEach(path=>{path=files.put(FS.analyzePath(path).object.contents,path);path.onsuccess=()=>{++ok+fail==total&&finish()},path.onerror=()=>{ok+ ++fail==total&&finish()}}),transaction.onerror=onerror},openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{}),onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror,openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){return void onerror(e)}var files=transaction.objectStore(FS.DB_STORE_NAME),ok=0,fail=0,total=paths.length;function finish(){(0==fail?onload:onerror)()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{FS.analyzePath(path).exists&&FS.unlink(path),FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,!0,!0,!0),++ok+fail==total&&finish()},getRequest.onerror=()=>{ok+ ++fail==total&&finish()}}),transaction.onerror=onerror},openRequest.onerror=onerror}},SOCKFS={mount:function(mount){return Module.websocket=Module.websocket&&"object"==typeof Module.websocket?Module.websocket:{},Module.websocket._callbacks={},Module.websocket.on=function(event,callback){return"function"==typeof callback&&(this._callbacks[event]=callback),this},Module.websocket.emit=function(event,param){"function"==typeof this._callbacks[event]&&this._callbacks[event].call(this,param)},FS.createNode(null,"/",16895,0)},createSocket:function(family,type,protocol){if(1==(type&=-526337)&&protocol&&6!=protocol)throw new FS.ErrnoError(66);family={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops},type=SOCKFS.nextname(),protocol=FS.createNode(SOCKFS.root,type,49152,0),protocol.sock=family,type=FS.createStream({path:type,node:protocol,flags:2,seekable:!1,stream_ops:SOCKFS.stream_ops});return family.stream=type,family},getSocket:function(fd){fd=FS.getStream(fd);return fd&&FS.isSocket(fd.node.mode)?fd.node.sock:null},stream_ops:{poll:function(stream){stream=stream.node.sock;return stream.sock_ops.poll(stream)},ioctl:function(stream,request,varargs){stream=stream.node.sock;return stream.sock_ops.ioctl(stream,request,varargs)},read:function(stream,buffer,offset,length,position){stream=stream.node.sock,stream=stream.sock_ops.recvmsg(stream,length);return stream?(buffer.set(stream.buffer,offset),stream.buffer.length):0},write:function(stream,buffer,offset,length,position){stream=stream.node.sock;return stream.sock_ops.sendmsg(stream,buffer,offset,length)},close:function(stream){stream=stream.node.sock;stream.sock_ops.close(stream)}},nextname:function(){return SOCKFS.nextname.current||(SOCKFS.nextname.current=0),"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer:function(sock,addr,port){var ws;if("object"==typeof addr&&(ws=addr,port=addr=null),ws)if(ws._socket)addr=ws._socket.remoteAddress,port=ws._socket.remotePort;else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result)throw new Error("WebSocket URL must be in the format ws(s)://address:port");addr=result[1],port=parseInt(result[2],10)}else try{var parts,runtimeConfig=Module.websocket&&"object"==typeof Module.websocket,url="ws:#".replace("#","//"),subProtocols=("ws://"!==(url=runtimeConfig&&"string"==typeof Module.websocket.url?Module.websocket.url:url)&&"wss://"!==url||(url=url+(parts=addr.split("/"))[0]+":"+port+"/"+parts.slice(1).join("/")),"binary"),opts=(runtimeConfig&&"string"==typeof Module.websocket.subprotocol&&(subProtocols=Module.websocket.subprotocol),void 0);"null"!==subProtocols&&(opts=subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */)),runtimeConfig&&null===Module.websocket.subprotocol&&(subProtocols="null",opts=void 0),(ws=new(ENVIRONMENT_IS_NODE?require("ws"):WebSocket)(url,opts)).binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}result={addr:addr,port:port,socket:ws,dgram_send_queue:[]};return SOCKFS.websocket_sock_ops.addPeer(sock,result),SOCKFS.websocket_sock_ops.handlePeerEvents(sock,result),2===sock.type&&void 0!==sock.sport&&result.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(65280&sock.sport)>>8,255&sock.sport])),result},getPeer:function(sock,addr,port){return sock.peers[addr+":"+port]},addPeer:function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer:function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents:function(sock,peer){function handleOpen(){Module.websocket.emit("open",sock.stream.fd);try{for(var queued=peer.dgram_send_queue.shift();queued;)peer.socket.send(queued),queued=peer.dgram_send_queue.shift()}catch(e){peer.socket.close()}}var first=!0;function handleMessage(data){if("string"==typeof data)data=(new TextEncoder).encode(data);else{if(assert(void 0!==data.byteLength),0==data.byteLength)return;data=new Uint8Array(data)}var wasfirst=first;first=!1,wasfirst&&10===data.length&&255===data[0]&&255===data[1]&&255===data[2]&&255===data[3]&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)?(wasfirst=data[8]<<8|data[9],SOCKFS.websocket_sock_ops.removePeer(sock,peer),peer.port=wasfirst,SOCKFS.websocket_sock_ops.addPeer(sock,peer)):(sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data}),Module.websocket.emit("message",sock.stream.fd))}ENVIRONMENT_IS_NODE?(peer.socket.on("open",handleOpen),peer.socket.on("message",function(data,isBinary){isBinary&&handleMessage(new Uint8Array(data).buffer)}),peer.socket.on("close",function(){Module.websocket.emit("close",sock.stream.fd)}),peer.socket.on("error",function(error){sock.error=14,Module.websocket.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})):(peer.socket.onopen=handleOpen,peer.socket.onclose=function(){Module.websocket.emit("close",sock.stream.fd)},peer.socket.onmessage=function(event){handleMessage(event.data)},peer.socket.onerror=function(error){sock.error=14,Module.websocket.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})},poll:function(sock){var mask,dest;return 1===sock.type&&sock.server?sock.pending.length?65:0:(mask=0,dest=1===sock.type?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null,(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED)&&(mask|=65),dest&&dest.socket.readyState!==dest.socket.OPEN||(mask|=4),(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED)&&(mask|=16),mask)},ioctl:function(sock,request,arg){return 21531!==request?28:(request=0,sock.recv_queue.length&&(request=sock.recv_queue[0].data.length),HEAP32[arg>>2]=request,0)},close:function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}for(var peers=Object.keys(sock.peers),i=0;i<peers.length;i++){var peer=sock.peers[peers[i]];try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0},bind:function(sock,addr,port){if(void 0!==sock.saddr||void 0!==sock.sport)throw new FS.ErrnoError(28);if(sock.saddr=addr,sock.sport=port,2===sock.type){sock.server&&(sock.server.close(),sock.server=null);try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e instanceof FS.ErrnoError))throw e;if(138!==e.errno)throw e}}},connect:function(sock,addr,port){if(sock.server)throw new FS.ErrnoError(138);if(void 0!==sock.daddr&&void 0!==sock.dport){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest)throw dest.socket.readyState===dest.socket.CONNECTING?new FS.ErrnoError(7):new FS.ErrnoError(30)}dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);throw sock.daddr=dest.addr,sock.dport=dest.port,new FS.ErrnoError(26)},listen:function(sock,backlog){if(!ENVIRONMENT_IS_NODE)throw new FS.ErrnoError(138);if(sock.server)throw new FS.ErrnoError(28);var WebSocketServer=require("ws").Server,host=sock.saddr;sock.server=new WebSocketServer({host:host,port:sock.sport}),Module.websocket.emit("listen",sock.stream.fd),sock.server.on("connection",function(ws){var newsock,peer;1===sock.type?(newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol),peer=SOCKFS.websocket_sock_ops.createPeer(newsock,ws),newsock.daddr=peer.addr,newsock.dport=peer.port,sock.pending.push(newsock),Module.websocket.emit("connection",newsock.stream.fd)):(SOCKFS.websocket_sock_ops.createPeer(sock,ws),Module.websocket.emit("connection",sock.stream.fd))}),sock.server.on("close",function(){Module.websocket.emit("close",sock.stream.fd),sock.server=null}),sock.server.on("error",function(error){sock.error=23,Module.websocket.emit("error",[sock.stream.fd,sock.error,"EHOSTUNREACH: Host is unreachable"])})},accept:function(listensock){var newsock;if(listensock.server&&listensock.pending.length)return(newsock=listensock.pending.shift()).stream.flags=listensock.stream.flags,newsock;throw new FS.ErrnoError(28)},getname:function(sock,peer){var addr,port;if(peer){if(void 0===sock.daddr||void 0===sock.dport)throw new FS.ErrnoError(53);addr=sock.daddr,port=sock.dport}else addr=sock.saddr||0,port=sock.sport||0;return{addr:addr,port:port}},sendmsg:function(sock,buffer,offset,length,addr,port){if(2===sock.type){if(void 0!==addr&&void 0!==port||(addr=sock.daddr,port=sock.dport),void 0===addr||void 0===port)throw new FS.ErrnoError(17)}else addr=sock.daddr,port=sock.dport;var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(1===sock.type){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED)throw new FS.ErrnoError(53);if(dest.socket.readyState===dest.socket.CONNECTING)throw new FS.ErrnoError(6)}if(ArrayBuffer.isView(buffer)&&(offset+=buffer.byteOffset,buffer=buffer.buffer),buffer=buffer.slice(offset,offset+length),2===sock.type&&(!dest||dest.socket.readyState!==dest.socket.OPEN))return(dest=dest&&dest.socket.readyState!==dest.socket.CLOSING&&dest.socket.readyState!==dest.socket.CLOSED?dest:SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)).dgram_send_queue.push(buffer),length;try{return dest.socket.send(buffer),length}catch(e){throw new FS.ErrnoError(28)}},recvmsg:function(sock,length){if(1===sock.type&&sock.server)throw new FS.ErrnoError(53);var queuedLength,queuedOffset,res,queued=sock.recv_queue.shift();if(queued)return queuedLength=queued.data.byteLength||queued.data.length,queuedOffset=queued.data.byteOffset||0,queuedBuffer=queued.data.buffer||queued.data,length=Math.min(length,queuedLength),res={buffer:new Uint8Array(queuedBuffer,queuedOffset,length),addr:queued.addr,port:queued.port},1===sock.type&&length<queuedLength&&(queued.data=new Uint8Array(queuedBuffer,queuedOffset+length,queuedLength-length),sock.recv_queue.unshift(queued)),res;if(1===sock.type){var queuedBuffer=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!queuedBuffer)throw new FS.ErrnoError(53);if(queuedBuffer.socket.readyState===queuedBuffer.socket.CLOSING||queuedBuffer.socket.readyState===queuedBuffer.socket.CLOSED)return null}throw new FS.ErrnoError(6)}}};function inetNtop4(addr){return(255&addr)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)}function readSockaddr(sa,salen){var addr,family=HEAP16[sa>>1],port=_ntohs(HEAPU16[sa+2>>1]);switch(family){case 2:if(16!==salen)return{errno:28};addr=inetNtop4(addr=HEAP32[sa+4>>2]);break;case 10:if(28!==salen)return{errno:28};addr=(ints=>{for(var str="",word=0,longest=0,lastzero=0,zstart=0,len=0,i=0,parts=[65535&ints[0],ints[0]>>16,65535&ints[1],ints[1]>>16,65535&ints[2],ints[2]>>16,65535&ints[3],ints[3]>>16],hasipv4=!0,ints="",i=0;i<5;i++)if(0!==parts[i]){hasipv4=!1;break}if(hasipv4){if(ints=inetNtop4(parts[6]|parts[7]<<16),-1===parts[5])return str="::ffff:",str+=ints;if(0===parts[5])return str="::",str+=ints="0.0.0.1"===(ints="0.0.0.0"===ints?"":ints)?"1":ints}for(word=0;word<8;word++)0===parts[word]&&(1<word-lastzero&&(len=0),lastzero=word,len++),longest<len&&(zstart=word-(longest=len)+1);for(word=0;word<8;word++)1<longest&&0===parts[word]&&zstart<=word&&word<zstart+longest?word===zstart&&(str+=":",0===zstart)&&(str+=":"):str=str+Number(_ntohs(65535&parts[word])).toString(16)+(word<7?":":"");return str})(addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]]);break;default:return{errno:5}}return{family:family,addr:addr,port:port}}function jstoi_q(str){return parseInt(str)}var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name:function(name){var addr,id;return null!==(str=>{for(var b=str.split("."),i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0})(name)||null!==(str=>{var words,w,offset,z,parts=[];if(!/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i.test(str))return null;if("::"===str)return[0,0,0,0,0,0,0,0];for(words=0<(str=str.startsWith("::")?str.replace("::","Z:"):str.replace("::",":Z:")).indexOf(".")?((words=(str=str.replace(new RegExp("[.]","g"),":")).split(":"))[words.length-4]=jstoi_q(words[words.length-4])+256*jstoi_q(words[words.length-3]),words[words.length-3]=jstoi_q(words[words.length-2])+256*jstoi_q(words[words.length-1]),words.slice(0,words.length-2)):str.split(":"),w=z=offset=0;w<words.length;w++)if("string"==typeof words[w])if("Z"===words[w]){for(z=0;z<8-words.length+1;z++)parts[w+z]=0;offset=z-1}else parts[w+offset]=_htons(parseInt(words[w],16));else parts[w+offset]=words[w];return[parts[1]<<16|parts[0],parts[3]<<16|parts[2],parts[5]<<16|parts[4],parts[7]<<16|parts[6]]})(name)?name:(DNS.address_map.addrs[name]?addr=DNS.address_map.addrs[name]:(assert((id=DNS.address_map.id++)<65535,"exceeded max address mappings of 65535"),DNS.address_map.names[addr="172.29."+(255&id)+"."+(65280&id)]=name,DNS.address_map.addrs[name]=addr),addr)},lookup_addr:function(addr){return DNS.address_map.names[addr]||null}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path))return path;if(dirfd=-100===dirfd?FS.cwd():SYSCALLS.getStreamFromFD(dirfd).path,0!=path.length)return PATH.join2(dirfd,path);if(allowEmpty)return dirfd;throw new FS.ErrnoError(44)},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,1<=+Math.abs(tempDouble)?0<tempDouble?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>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 func=stat.atime.getTime(),path=stat.mtime.getTime(),ctime=stat.ctime.getTime();return tempI64=[Math.floor(func/1e3)>>>0,(tempDouble=Math.floor(func/1e3),1<=+Math.abs(tempDouble)?0<tempDouble?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>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]=func%1e3*1e3,tempI64=[Math.floor(path/1e3)>>>0,(tempDouble=Math.floor(path/1e3),1<=+Math.abs(tempDouble)?0<tempDouble?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>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]=path%1e3*1e3,tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),1<=+Math.abs(tempDouble)?0<tempDouble?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>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,1<=+Math.abs(tempDouble)?0<tempDouble?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1],0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode))throw new FS.ErrnoError(43);if(2&flags)return 0;addr=HEAPU8.slice(addr,addr+len);FS.msync(stream,addr,offset,len,flags)},varargs:void 0,get:function(){return SYSCALLS.varargs+=4,HEAP32[SYSCALLS.varargs-4>>2]},getStr:function(ptr){return UTF8ToString(ptr)},getStreamFromFD:function(fd){fd=FS.getStream(fd);if(fd)return fd;throw new FS.ErrnoError(8)}};function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+4294967296*hi:NaN}var tupleRegistrations={};function runDestructors(destructors){for(;destructors.length;){var ptr=destructors.pop();destructors.pop()(ptr)}}function simpleReadValueFromPointer(pointer){return this.fromWireType(HEAP32[pointer>>2])}var awaitingDependencies={},registeredTypes={},typeDependencies={},char_0=48,char_9=57;function makeLegalFunctionName(name){var f;return void 0===name?"_unknown":(f=(name=name.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0),char_0<=f&&f<=char_9?"_"+name:name)}function createNamedFunction(name,body){return name=makeLegalFunctionName(name),new Function("body","return function "+name+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName,this.message=message;message=new Error(message).stack;void 0!==message&&(this.stack=this.toString()+"\n"+message.replace(/^Error(:[^\n]*)?\n/,""))});return errorClass.prototype=Object.create(baseErrorType.prototype),(errorClass.prototype.constructor=errorClass).prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},errorClass}var InternalError=void 0;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);myTypeConverters.length!==myTypes.length&&throwInternalError("Mismatched type converter count");for(var i=0;i<myTypes.length;++i)registerType(myTypes[i],myTypeConverters[i])}myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});var typeConverters=new Array(dependentTypes.length),unregisteredTypes=[],registered=0;dependentTypes.forEach((dt,i)=>{registeredTypes.hasOwnProperty(dt)?typeConverters[i]=registeredTypes[dt]:(unregisteredTypes.push(dt),awaitingDependencies.hasOwnProperty(dt)||(awaitingDependencies[dt]=[]),awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt],++registered===unregisteredTypes.length&&onComplete(typeConverters)}))}),0===unregisteredTypes.length&&onComplete(typeConverters)}var structRegistrations={};function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}var embind_charCodes=void 0;function readLatin1String(ptr){for(var ret="",c=ptr;HEAPU8[c];)ret+=embind_charCodes[HEAPU8[c++]];return ret}var BindingError=void 0;function throwBindingError(message){throw new BindingError(message)}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance))throw new TypeError("registerType registeredInstance requires argPackAdvance");var name=registeredInstance.name;if(rawType||throwBindingError('type "'+name+'" must have a positive integer typeid pointer'),registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations)return;throwBindingError("Cannot register type '"+name+"' twice")}registeredTypes[rawType]=registeredInstance,delete typeDependencies[rawType],awaitingDependencies.hasOwnProperty(rawType)&&(options=awaitingDependencies[rawType],delete awaitingDependencies[rawType],options.forEach(cb=>cb()))}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle))return!1;if(!(other instanceof ClassHandle))return!1;for(var leftClass=this.$$.ptrType.registeredClass,left=this.$$.ptr,rightClass=other.$$.ptrType.registeredClass,right=other.$$.ptr;leftClass.baseClass;)left=leftClass.upcast(left),leftClass=leftClass.baseClass;for(;rightClass.baseClass;)right=rightClass.upcast(right),rightClass=rightClass.baseClass;return leftClass===rightClass&&left===right}function throwInstanceAlreadyDeleted(obj){throwBindingError(obj.$$.ptrType.registeredClass.name+" instance already deleted")}var finalizationRegistry=!1;function detachFinalizer(handle){}function releaseClassHandle($$){--$$.count.value,0===$$.count.value&&($$=>{$$.smartPtr?$$.smartPtrType.rawDestructor($$.smartPtr):$$.ptrType.registeredClass.rawDestructor($$.ptr)})($$)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var k,rv=[];for(k in registeredInstances)registeredInstances.hasOwnProperty(k)&&rv.push(registeredInstances[k]);return rv}var deletionQueue=[];function flushPendingDeletes(){for(;deletionQueue.length;){var obj=deletionQueue.pop();obj.$$.deleteScheduled=!1,obj.delete()}}var delayFunction=void 0;function setDelayFunction(fn){delayFunction=fn,deletionQueue.length&&delayFunction&&delayFunction(flushPendingDeletes)}var registeredInstances={};function getInheritedInstance(class_,ptr){return ptr=((class_,ptr)=>{for(void 0===ptr&&throwBindingError("ptr should not be undefined");class_.baseClass;)ptr=class_.upcast(ptr),class_=class_.baseClass;return ptr})(class_,ptr),registeredInstances[ptr]}function makeClassHandle(prototype,record){return record.ptrType&&record.ptr||throwInternalError("makeClassHandle requires ptr and ptrType"),!!record.smartPtrType!=!!record.smartPtr&&throwInternalError("Both smartPtrType and smartPtr must be specified"),record.count={value:1},attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var registeredInstance,dp,rawPointer=this.getPointee(ptr);return rawPointer?void 0!==(registeredInstance=getInheritedInstance(this.registeredClass,rawPointer))?0===registeredInstance.$$.count.value?(registeredInstance.$$.ptr=rawPointer,registeredInstance.$$.smartPtr=ptr,registeredInstance.clone()):(registeredInstance=registeredInstance.clone(),this.destructor(ptr),registeredInstance):(registeredInstance=this.registeredClass.getActualType(rawPointer),!(registeredInstance=registeredPointers[registeredInstance])||(registeredInstance=this.isConst?registeredInstance.constPointerType:registeredInstance.pointerType,null===(dp=function downcastPointer(ptr,ptrClass,desiredClass){return ptrClass===desiredClass?ptr:void 0===desiredClass.baseClass||null===(ptr=downcastPointer(ptr,ptrClass,desiredClass.baseClass))?null:desiredClass.downcast(ptr)}(rawPointer,this.registeredClass,registeredInstance.registeredClass)))?makeDefaultHandle.call(this):this.isSmartPointer?makeClassHandle(registeredInstance.registeredClass.instancePrototype,{ptrType:registeredInstance,ptr:dp,smartPtrType:this,smartPtr:ptr}):makeClassHandle(registeredInstance.registeredClass.instancePrototype,{ptrType:registeredInstance,ptr:dp})):(this.destructor(ptr),null);function makeDefaultHandle(){return this.isSmartPointer?makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr}):makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}function attachFinalizer(handle){return"undefined"==typeof FinalizationRegistry?(attachFinalizer=handle=>handle,handle):(finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)}),detachFinalizer=handle=>finalizationRegistry.unregister(handle),(attachFinalizer=handle=>{var $$=handle.$$;return!!$$.smartPtr&&finalizationRegistry.register(handle,{$$:$$},handle),handle})(handle))}function ClassHandle_clone(){var o;return this.$$.ptr||throwInstanceAlreadyDeleted(this),this.$$.preservePointerOnDelete?(this.$$.count.value+=1,this):((o=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:{count:(o=this.$$).count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}}))).$$.count.value+=1,o.$$.deleteScheduled=!1,o)}function ClassHandle_delete(){this.$$.ptr||throwInstanceAlreadyDeleted(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&throwBindingError("Object already scheduled for deletion"),detachFinalizer(this),releaseClassHandle(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function ClassHandle_isDeleted(){return!this.$$.ptr}function ClassHandle_deleteLater(){return this.$$.ptr||throwInstanceAlreadyDeleted(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&throwBindingError("Object already scheduled for deletion"),deletionQueue.push(this),1===deletionQueue.length&&delayFunction&&delayFunction(flushPendingDeletes),this.$$.deleteScheduled=!0,this}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){var prevFunc;void 0===proto[methodName].overloadTable&&(prevFunc=proto[methodName],proto[methodName]=function(){return proto[methodName].overloadTable.hasOwnProperty(arguments.length)||throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!"),proto[methodName].overloadTable[arguments.length].apply(this,arguments)},proto[methodName].overloadTable=[],proto[methodName].overloadTable[prevFunc.argCount]=prevFunc)}function exposePublicSymbol(name,value,numArguments){Module.hasOwnProperty(name)?((void 0===numArguments||void 0!==Module[name].overloadTable&&void 0!==Module[name].overloadTable[numArguments])&&throwBindingError("Cannot register public name '"+name+"' twice"),ensureOverloadTable(Module,name,name),Module.hasOwnProperty(numArguments)&&throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!"),Module[name].overloadTable[numArguments]=value):(Module[name]=value,void 0!==numArguments&&(Module[name].numArguments=numArguments))}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name,this.constructor=constructor,this.instancePrototype=instancePrototype,this.rawDestructor=rawDestructor,this.baseClass=baseClass,this.getActualType=getActualType,this.upcast=upcast,this.downcast=downcast,this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){for(;ptrClass!==desiredClass;)ptrClass.upcast||throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name),ptr=ptrClass.upcast(ptr),ptrClass=ptrClass.baseClass;return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(null===handle)return this.isReference&&throwBindingError("null is not a valid "+this.name),0;handle.$$||throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name),handle.$$.ptr||throwBindingError("Cannot pass deleted object as a pointer of type "+this.name);var handleClass=handle.$$.ptrType.registeredClass;return upcastPointer(handle.$$.ptr,handleClass,this.registeredClass)}function genericPointerToWireType(destructors,handle){if(null===handle)return this.isReference&&throwBindingError("null is not a valid "+this.name),this.isSmartPointer?(ptr=this.rawConstructor(),null!==destructors&&destructors.push(this.rawDestructor,ptr),ptr):0;handle.$$||throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name),handle.$$.ptr||throwBindingError("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&handle.$$.ptrType.isConst&&throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType||handle.$$.ptrType).name+" to parameter type "+this.name);var clonedHandle,ptr,handleClass=handle.$$.ptrType.registeredClass;if(ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass),this.isSmartPointer)switch(void 0===handle.$$.smartPtr&&throwBindingError("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:handle.$$.smartPtrType===this?ptr=handle.$$.smartPtr:throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType||handle.$$.ptrType).name+" to parameter type "+this.name);break;case 1:ptr=handle.$$.smartPtr;break;case 2:handle.$$.smartPtrType===this?ptr=handle.$$.smartPtr:(clonedHandle=handle.clone(),ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle.delete()})),null!==destructors&&destructors.push(this.rawDestructor,ptr));break;default:throwBindingError("Unsupporting sharing policy")}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(null===handle)return this.isReference&&throwBindingError("null is not a valid "+this.name),0;handle.$$||throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name),handle.$$.ptr||throwBindingError("Cannot pass deleted object as a pointer of type "+this.name),handle.$$.ptrType.isConst&&throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name);var handleClass=handle.$$.ptrType.registeredClass;return upcastPointer(handle.$$.ptr,handleClass,this.registeredClass)}function RegisteredPointer_getPointee(ptr){return ptr=this.rawGetPointee?this.rawGetPointee(ptr):ptr}function RegisteredPointer_destructor(ptr){this.rawDestructor&&this.rawDestructor(ptr)}function RegisteredPointer_deleteObject(handle){null!==handle&&handle.delete()}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name,this.registeredClass=registeredClass,this.isReference=isReference,this.isConst=isConst,this.isSmartPointer=isSmartPointer,this.pointeeType=pointeeType,this.sharingPolicy=sharingPolicy,this.rawGetPointee=rawGetPointee,this.rawConstructor=rawConstructor,this.rawShare=rawShare,this.rawDestructor=rawDestructor,isSmartPointer||void 0!==registeredClass.baseClass?this.toWireType=genericPointerToWireType:(this.toWireType=isConst?constNoSmartPtrRawPointerToWireType:nonConstNoSmartPtrRawPointerToWireType,this.destructorFunction=null)}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function dynCall(sig,ptr,args){return sig.includes("j")?((sig,ptr,args)=>(sig=Module["dynCall_"+sig],args&&args.length?sig.apply(null,[ptr].concat(args)):sig.call(null,ptr)))(sig,ptr,args):getWasmTableEntry(ptr).apply(null,args)}function embind__requireFunction(signature,rawFunction){var sig,ptr,argCache,fp=(signature=readLatin1String(signature)).includes("j")?(sig=signature,ptr=rawFunction,argCache=[],function(){return argCache.length=0,Object.assign(argCache,arguments),dynCall(sig,ptr,argCache)}):getWasmTableEntry(rawFunction);return"function"!=typeof fp&&throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction),fp}var UnboundTypeError=void 0;function getTypeName(type){var type=___getTypeName(type),rv=readLatin1String(type);return _free(type),rv}function throwUnboundTypeError(message,types){var unboundTypes=[],seen={};throw types.forEach(function visit(type){seen[type]||registeredTypes[type]||(typeDependencies[type]?typeDependencies[type].forEach(visit):(unboundTypes.push(type),seen[type]=!0))}),new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function new_(constructor,argumentList){var dummy;if(constructor instanceof Function)return(dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){})).prototype=constructor.prototype,dummy=new dummy,(argumentList=constructor.apply(dummy,argumentList))instanceof Object?argumentList:dummy;throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){for(var argCount=argTypes.length,classType=(argCount<2&&throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!"),null!==argTypes[1]&&null!==classType),needsDestructorStack=!1,i=1;i<argTypes.length;++i)if(null!==argTypes[i]&&void 0===argTypes[i].destructorFunction){needsDestructorStack=!0;break}for(var returns="void"!==argTypes[0].name,argsList="",argsListWired="",i=0;i<argCount-2;++i)argsList+=(0!==i?", ":"")+"arg"+i,argsListWired+=(0!==i?", ":"")+"arg"+i+"Wired";var invokerFnBody="return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\nif (arguments.length !== "+(argCount-2)+") {\nthrowBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount-2)+" args!');\n}\n",dtorStack=(needsDestructorStack&&(invokerFnBody+="var destructors = [];\n"),needsDestructorStack?"destructors":"null"),args1=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],args2=[throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,argTypes[0],argTypes[1]];classType&&(invokerFnBody+="var thisWired = classParam.toWireType("+dtorStack+", this);\n");for(i=0;i<argCount-2;++i)invokerFnBody+="var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n",args1.push("argType"+i),args2.push(argTypes[i+2]);if(invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(0<(argsListWired=classType?"thisWired"+(0<argsListWired.length?", ":"")+argsListWired:argsListWired).length?", ":"")+argsListWired+");\n",needsDestructorStack)invokerFnBody+="runDestructors(destructors);\n";else for(i=classType?1:2;i<argTypes.length;++i){var paramName=1===i?"thisWired":"arg"+(i-2)+"Wired";null!==argTypes[i].destructorFunction&&(invokerFnBody+=paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n",args1.push(paramName+"_dtor"),args2.push(argTypes[i].destructorFunction))}return returns&&(invokerFnBody+="var ret = retType.fromWireType(rv);\nreturn ret;\n"),args1.push(invokerFnBody+="}\n"),new_(Function,args1).apply(null,args2)}function heap32VectorToArray(count,firstElement){for(var array=[],i=0;i<count;i++)array.push(HEAPU32[firstElement+4*i>>2]);return array}function validateThis(this_,classType,humanName){return this_ instanceof Object||throwBindingError(humanName+' with invalid "this": '+this_),this_ instanceof classType.registeredClass.constructor||throwBindingError(humanName+' incompatible with "this" of type '+this_.constructor.name),this_.$$.ptr||throwBindingError("cannot call emscripten binding method "+humanName+" on deleted object"),upcastPointer(this_.$$.ptr,this_.$$.ptrType.registeredClass,classType.registeredClass)}var emval_free_list=[],emval_handle_array=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function __emval_decref(handle){4<handle&&0==--emval_handle_array[handle].refcount&&(emval_handle_array[handle]=void 0,emval_free_list.push(handle))}function count_emval_handles(){for(var count=0,i=5;i<emval_handle_array.length;++i)void 0!==emval_handle_array[i]&&++count;return count}function get_first_emval(){for(var i=5;i<emval_handle_array.length;++i)if(void 0!==emval_handle_array[i])return emval_handle_array[i];return null}var Emval={toValue:handle=>(handle||throwBindingError("Cannot use deleted val. handle = "+handle),emval_handle_array[handle].value),toHandle:value=>{switch(value){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;return emval_handle_array[handle]={refcount:1,value:value},handle}}};function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];return void 0===impl&&throwBindingError(humanName+" has unknown type "+getTypeName(rawType)),impl}function embindRepr(v){var t;return null===v?"null":"object"==(t=typeof v)||"array"==t||"function"==t?v.toString():""+v}var UTF16Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function UTF16ToString(ptr,maxBytesToRead){for(var endPtr,idx=ptr>>1,maxIdx=idx+maxBytesToRead/2;!(maxIdx<=idx)&&HEAPU16[idx];)++idx;if(32<(endPtr=idx<<1)-ptr&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));for(var str="",i=0;!(maxBytesToRead/2<=i);++i){var codeUnit=HEAP16[ptr+2*i>>1];if(0==codeUnit)break;str+=String.fromCharCode(codeUnit)}return str}function stringToUTF16(str,outPtr,maxBytesToWrite){if((maxBytesToWrite=void 0===maxBytesToWrite?2147483647:maxBytesToWrite)<2)return 0;for(var startPtr=outPtr,numCharsToWrite=(maxBytesToWrite-=2)<2*str.length?maxBytesToWrite/2:str.length,i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit,outPtr+=2}return HEAP16[outPtr>>1]=0,outPtr-startPtr}function lengthBytesUTF16(str){return 2*str.length}function UTF32ToString(ptr,maxBytesToRead){for(var i=0,str="";!(maxBytesToRead/4<=i);){var ch,utf32=HEAP32[ptr+4*i>>2];if(0==utf32)break;++i,65536<=utf32?(ch=utf32-65536,str+=String.fromCharCode(55296|ch>>10,56320|1023&ch)):str+=String.fromCharCode(utf32)}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if((maxBytesToWrite=void 0===maxBytesToWrite?2147483647:maxBytesToWrite)<4)return 0;for(var startPtr=outPtr,endPtr=startPtr+maxBytesToWrite-4,i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(55296<=codeUnit&&codeUnit<=57343&&(codeUnit=65536+((1023&codeUnit)<<10)|1023&str.charCodeAt(++i)),HEAP32[outPtr>>2]=codeUnit,endPtr<(outPtr+=4)+4)break}return HEAP32[outPtr>>2]=0,outPtr-startPtr}function lengthBytesUTF32(str){for(var len=0,i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);55296<=codeUnit&&codeUnit<=57343&&++i,len+=4}return len}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];return void 0===symbol?readLatin1String(address):symbol}var emval_methodCallers=[];function emval_get_global(){return"object"==typeof globalThis?globalThis:Function("return this")()}var emval_registeredMethods=[];var emval_newers={};function readI53FromI64(ptr){return HEAPU32[ptr>>2]+4294967296*HEAP32[ptr+4>>2]}var __MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335],__MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];function __yday_from_date(date){var year;return((year=date.getFullYear())%4==0&&(year%100!=0||year%400==0)?__MONTH_DAYS_LEAP_CUMULATIVE:__MONTH_DAYS_REGULAR_CUMULATIVE)[date.getMonth()]+date.getDate()-1}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1,ret=_malloc(size);return ret&&stringToUTF8Array(str,HEAP8,ret,size),ret}var scriptDirectory=ENVIRONMENT_IS_NODE?()=>{var t=process.hrtime();return 1e3*t[0]+t[1]/1e6}:()=>performance.now(),ENV={};function getEnvStrings(){if(!getEnvStrings.strings){var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:thisProgram||"./this.program"};for(x in ENV)void 0===ENV[x]?delete env[x]:env[x]=ENV[x];var x,strings=[];for(x in env)strings.push(x+"="+env[x]);getEnvStrings.strings=strings}return getEnvStrings.strings}function FSNode(parent,name,mode,rdev){this.parent=parent=parent||this,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}Object.defineProperties(FSNode.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(val){val?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(val){val?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}}),FS.FSNode=FSNode,FS.staticInit();for(var InternalError=Module.InternalError=extendError(Error,"InternalError"),codes=new Array(256),i=0;i<256;++i)codes[i]=String.fromCharCode(i);embind_charCodes=codes,BindingError=Module.BindingError=extendError(Error,"BindingError"),ClassHandle.prototype.isAliasOf=ClassHandle_isAliasOf,ClassHandle.prototype.clone=ClassHandle_clone,ClassHandle.prototype.delete=ClassHandle_delete,ClassHandle.prototype.isDeleted=ClassHandle_isDeleted,ClassHandle.prototype.deleteLater=ClassHandle_deleteLater,Module.getInheritedInstanceCount=getInheritedInstanceCount,Module.getLiveInheritedInstances=getLiveInheritedInstances,Module.flushPendingDeletes=flushPendingDeletes,Module.setDelayFunction=setDelayFunction,RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee,RegisteredPointer.prototype.destructor=RegisteredPointer_destructor,RegisteredPointer.prototype.argPackAdvance=8,RegisteredPointer.prototype.readValueFromPointer=simpleReadValueFromPointer,RegisteredPointer.prototype.deleteObject=RegisteredPointer_deleteObject,RegisteredPointer.prototype.fromWireType=RegisteredPointer_fromWireType,UnboundTypeError=Module.UnboundTypeError=extendError(Error,"UnboundTypeError"),Module.count_emval_handles=count_emval_handles,Module.get_first_emval=get_first_emval;var calledRun,asmLibraryArg={v:function(ptr,type,destructor){throw new ExceptionInfo(ptr).init(type,destructor),ptr},V:function(fd,addr,addrlen){try{var sock=(fd=>{if(fd=SOCKFS.getSocket(fd))return fd;throw new FS.ErrnoError(8)})(fd),info=((addrp,addrlen,allowNull)=>{if(allowNull&&0===addrp)return null;if((allowNull=readSockaddr(addrp,addrlen)).errno)throw new FS.ErrnoError(allowNull.errno);return allowNull.addr=DNS.lookup_addr(allowNull.addr)||allowNull.addr,allowNull})(addr,addrlen);return sock.sock_ops.connect(sock,info.addr,info.port),0}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return-e.errno;throw e}},fa:function(dirfd,path,amode,flags){try{var node,perms;return(path=SYSCALLS.getStr(path),path=SYSCALLS.calculateAt(dirfd,path),-8&amode)?-28:(node=FS.lookupPath(path,{follow:!0}).node)?(perms="",4&amode&&(perms+="r"),2&amode&&(perms+="w"),1&amode&&(perms+="x"),perms&&FS.nodePermissions(node,perms)?-2:0):-44}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return-e.errno;throw e}},p:function(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:return(arg=SYSCALLS.get())<0?-28:FS.createStream(stream,arg).fd;case 1:case 2:return 0;case 3:return stream.flags;case 4:var arg=SYSCALLS.get();return stream.flags|=arg,0;case 5:arg=SYSCALLS.get();return HEAP16[arg+0>>1]=2,0;case 6:case 7:return 0;case 16:case 8:return-28;case 9:return value=28,HEAP32[___errno_location()>>2]=value,-1;default:return-28}}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return-e.errno;throw e}var value},_:function(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return-e.errno;throw e}},T:function(fd,length_low,length_high){try{var length=convertI32PairToI53Checked(length_low,length_high);return isNaN(length)?-61:(FS.ftruncate(fd,length),0)}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return-e.errno;throw e}},L:function(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:return stream.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return stream.tty?0:-59;case 21519:return stream.tty?(argp=SYSCALLS.get(),HEAP32[argp>>2]=0):-59;case 21520:return stream.tty?-28:-59;case 21531:var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp);case 21523:case 21524:return stream.tty?0:-59;default:return-28}}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return-e.errno;throw e}},X:function(path,buf){try{return path=SYSCALLS.getStr(path),SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return-e.errno;throw e}},Y:function(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=256&flags,allowEmpty=4096&flags;return flags&=-6401,path=SYSCALLS.calculateAt(dirfd,path,allowEmpty),SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return-e.errno;throw e}},H:function(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(void 0!==FS&&e instanceof FS.ErrnoError)return-e.errno;throw e}},G:function(domain,type,protocol){try{return SOCKFS.createSocket(domain,type,protocol).stream.fd}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return-e.errno;throw e}},Z:function(path,buf){try{return path=SYSCALLS.getStr(path),SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return-e.errno;throw e}},t:function(rawTupleType){var reg=tupleRegistrations[rawTupleType],elements=(delete tupleRegistrations[rawTupleType],reg.elements),elementsLength=elements.length,elementTypes=elements.map(function(elt){return elt.getterReturnType}).concat(elements.map(function(elt){return elt.setterArgumentType})),rawConstructor=reg.rawConstructor,rawDestructor=reg.rawDestructor;whenDependentTypesAreResolved([rawTupleType],elementTypes,function(elementTypes){return elements.forEach((elt,i)=>{var getterReturnType=elementTypes[i],getter=elt.getter,getterContext=elt.getterContext,setterArgumentType=elementTypes[i+elementsLength],setter=elt.setter,setterContext=elt.setterContext;elt.read=ptr=>getterReturnType.fromWireType(getter(getterContext,ptr)),elt.write=(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType.toWireType(destructors,o)),runDestructors(destructors)}}),[{name:reg.name,fromWireType:function(ptr){for(var rv=new Array(elementsLength),i=0;i<elementsLength;++i)rv[i]=elements[i].read(ptr);return rawDestructor(ptr),rv},toWireType:function(destructors,o){if(elementsLength!==o.length)throw new TypeError("Incorrect number of tuple elements for "+reg.name+": expected="+elementsLength+", actual="+o.length);for(var ptr=rawConstructor(),i=0;i<elementsLength;++i)elements[i].write(ptr,o[i]);return null!==destructors&&destructors.push(rawDestructor,ptr),ptr},argPackAdvance:8,readValueFromPointer:simpleReadValueFromPointer,destructorFunction:rawDestructor}]})},ma:function(structType){var reg=structRegistrations[structType],rawConstructor=(delete structRegistrations[structType],reg.rawConstructor),rawDestructor=reg.rawDestructor,fieldRecords=reg.fields;whenDependentTypesAreResolved([structType],fieldRecords.map(field=>field.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType)),fieldTypes=>{var fields={};return fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName,getterReturnType=fieldTypes[i],getter=field.getter,getterContext=field.getterContext,setterArgumentType=fieldTypes[i+fieldRecords.length],setter=field.setter,setterContext=field.setterContext;fields[fieldName]={read:ptr=>getterReturnType.fromWireType(getter(getterContext,ptr)),write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType.toWireType(destructors,o)),runDestructors(destructors)}}}),[{name:reg.name,fromWireType:function(ptr){var i,rv={};for(i in fields)rv[i]=fields[i].read(ptr);return rawDestructor(ptr),rv},toWireType:function(destructors,o){for(var fieldName in fields)if(!(fieldName in o))throw new TypeError('Missing field: "'+fieldName+'"');var ptr=rawConstructor();for(fieldName in fields)fields[fieldName].write(ptr,o[fieldName]);return null!==destructors&&destructors.push(rawDestructor,ptr),ptr},argPackAdvance:8,readValueFromPointer:simpleReadValueFromPointer,destructorFunction:rawDestructor}]})},U:function(primitiveType,name,size,minRange,maxRange){},ia:function(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);registerType(rawType,{name:name=readLatin1String(name),fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:8,readValueFromPointer:function(pointer){var heap;if(1===size)heap=HEAP8;else if(2===size)heap=HEAP16;else{if(4!==size)throw new TypeError("Unknown boolean type size: "+name);heap=HEAP32}return this.fromWireType(heap[pointer>>shift])},destructorFunction:null})},e:function(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name),getActualType=embind__requireFunction(getActualTypeSignature,getActualType),upcast=upcast&&embind__requireFunction(upcastSignature,upcast),downcast=downcast&&embind__requireFunction(downcastSignature,downcast),rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError("Cannot construct "+name+" due to unbound types",[baseClassRawType])}),whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0],base=baseClassRawType?(baseClass=base.registeredClass).instancePrototype:ClassHandle.prototype;var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype)throw new BindingError("Use 'new' to construct "+name);if(void 0===registeredClass.constructor_body)throw new BindingError(name+" has no accessible constructor");var body=registeredClass.constructor_body[arguments.length];if(void 0===body)throw new BindingError("Tried to invoke ctor of "+name+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(registeredClass.constructor_body).toString()+") parameters instead!");return body.apply(this,arguments)}),instancePrototype=Object.create(base,{constructor:{value:constructor}}),registeredClass=(constructor.prototype=instancePrototype,new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast)),base=new RegisteredPointer(name,registeredClass,!0,!1,!1),baseClass=new RegisteredPointer(name+"*",registeredClass,!1,!1,!1),constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,!1,!0,!1);return registeredPointers[rawType]={pointerType:baseClass,constPointerType:constPointerConverter},((name,value,numArguments)=>{Module.hasOwnProperty(name)||throwInternalError("Replacing nonexistant public symbol"),void 0!==Module[name].overloadTable&&void 0!==numArguments?Module[name].overloadTable[numArguments]=value:(Module[name]=value,Module[name].argCount=numArguments)})(legalFunctionName,constructor),[base,baseClass,constPointerConverter]})},f:function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,fn){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName),rawInvoker=embind__requireFunction(invokerSignature,rawInvoker),whenDependentTypesAreResolved([],[rawClassType],function(classType){var humanName=(classType=classType[0]).name+"."+methodName;function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}methodName.startsWith("@@")&&(methodName=Symbol[methodName.substring(2)]);var proto=classType.registeredClass.constructor;return void 0===proto[methodName]?(unboundTypesHandler.argCount=argCount-1,proto[methodName]=unboundTypesHandler):(ensureOverloadTable(proto,methodName,humanName),proto[methodName].overloadTable[argCount-1]=unboundTypesHandler),whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes=[argTypes[0],null].concat(argTypes.slice(1)),argTypes=craftInvokerFunction(humanName,argTypes,null,rawInvoker,fn);return void 0===proto[methodName].overloadTable?(argTypes.argCount=argCount-1,proto[methodName]=argTypes):proto[methodName].overloadTable[argCount-1]=argTypes,[]}),[]})},g:function(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(0<argCount);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker),whenDependentTypesAreResolved([],[rawClassType],function(classType){var humanName="constructor "+(classType=classType[0]).name;if(void 0===classType.registeredClass.constructor_body&&(classType.registeredClass.constructor_body=[]),void 0!==classType.registeredClass.constructor_body[argCount-1])throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)},whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){return argTypes.splice(1,0,null),classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor),[]}),[]})},b:function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName),rawInvoker=embind__requireFunction(invokerSignature,rawInvoker),whenDependentTypesAreResolved([],[rawClassType],function(classType){var humanName=(classType=classType[0]).name+"."+methodName;function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}methodName.startsWith("@@")&&(methodName=Symbol[methodName.substring(2)]),isPureVirtual&&classType.registeredClass.pureVirtualFunctions.push(methodName);var proto=classType.registeredClass.instancePrototype,method=proto[methodName];return void 0===method||void 0===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2?(unboundTypesHandler.argCount=argCount-2,unboundTypesHandler.className=classType.name,proto[methodName]=unboundTypesHandler):(ensureOverloadTable(proto,methodName,humanName),proto[methodName].overloadTable[argCount-2]=unboundTypesHandler),whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);return void 0===proto[methodName].overloadTable?(argTypes.argCount=argCount-2,proto[methodName]=argTypes):proto[methodName].overloadTable[argCount-2]=argTypes,[]}),[]})},a:function(classType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){fieldName=readLatin1String(fieldName),getter=embind__requireFunction(getterSignature,getter),whenDependentTypesAreResolved([],[classType],function(classType){var humanName=(classType=classType[0]).name+"."+fieldName,desc={get:function(){throwUnboundTypeError("Cannot access "+humanName+" due to unbound types",[getterReturnType,setterArgumentType])},enumerable:!0,configurable:!0};return desc.set=setter?()=>{throwUnboundTypeError("Cannot access "+humanName+" due to unbound types",[getterReturnType,setterArgumentType])}:v=>{throwBindingError(humanName+" is a read-only property")},Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc),whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],function(types){var setterArgumentType,getterReturnType=types[0],desc={get:function(){var ptr=validateThis(this,classType,humanName+" getter");return getterReturnType.fromWireType(getter(getterContext,ptr))},enumerable:!0};return setter&&(setter=embind__requireFunction(setterSignature,setter),setterArgumentType=types[1],desc.set=function(v){var ptr=validateThis(this,classType,humanName+" setter"),destructors=[];setter(setterContext,ptr,setterArgumentType.toWireType(destructors,v)),runDestructors(destructors)}),Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc),[]}),[]})},ha:function(name,type,value){name=readLatin1String(name),whenDependentTypesAreResolved([],[type],function(type){return type=type[0],Module[name]=type.fromWireType(value),[]})},ga:function(rawType,name){registerType(rawType,{name:name=readLatin1String(name),fromWireType:function(handle){var rv=Emval.toValue(handle);return __emval_decref(handle),rv},toWireType:function(destructors,value){return Emval.toHandle(value)},argPackAdvance:8,readValueFromPointer:simpleReadValueFromPointer,destructorFunction:null})},i:function(rawType,name,size,isSigned){function ctor(){}size=getShiftFromSize(size),name=readLatin1String(name),ctor.values={},registerType(rawType,{name:name,constructor:ctor,fromWireType:function(c){return this.constructor.values[c]},toWireType:function(destructors,c){return c.value},argPackAdvance:8,readValueFromPointer:((name,shift,signed)=>{switch(shift){case 0:return function(pointer){var heap=signed?HEAP8:HEAPU8;return this.fromWireType(heap[pointer])};case 1:return function(pointer){var heap=signed?HEAP16:HEAPU16;return this.fromWireType(heap[pointer>>1])};case 2:return function(pointer){var heap=signed?HEAP32:HEAPU32;return this.fromWireType(heap[pointer>>2])};default:throw new TypeError("Unknown integer type: "+name)}})(name,size,isSigned),destructorFunction:null}),exposePublicSymbol(name,ctor)},d:function(rawEnumType,name,enumValue){var rawEnumType=requireRegisteredType(rawEnumType,"enum"),Enum=(name=readLatin1String(name),rawEnumType.constructor),rawEnumType=Object.create(rawEnumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(rawEnumType.name+"_"+name,function(){})}});Enum.values[enumValue]=rawEnumType,Enum[name]=rawEnumType},N:function(rawType,name,size){size=getShiftFromSize(size),registerType(rawType,{name:name=readLatin1String(name),fromWireType:function(value){return value},toWireType:function(destructors,value){return value},argPackAdvance:8,readValueFromPointer:((name,shift)=>{switch(shift){case 2:return function(pointer){return this.fromWireType(HEAPF32[pointer>>2])};case 3:return function(pointer){return this.fromWireType(HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}})(name,size),destructorFunction:null})},r:function(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name),-1===maxRange&&(maxRange=4294967295);var bitshift,maxRange=getShiftFromSize(size),fromWireType=value=>value,size=(0===minRange&&(bitshift=32-8*size,fromWireType=value=>value<<bitshift>>>bitshift),name.includes("unsigned"));registerType(primitiveType,{name:name,fromWireType:fromWireType,toWireType:size=size?function(destructors,value){return this.name,value>>>0}:function(destructors,value){return this.name,value},argPackAdvance:8,readValueFromPointer:((name,shift,signed)=>{switch(shift){case 0:return signed?function(pointer){return HEAP8[pointer]}:function(pointer){return HEAPU8[pointer]};case 1:return signed?function(pointer){return HEAP16[pointer>>1]}:function(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function(pointer){return HEAP32[pointer>>2]}:function(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}})(name,maxRange,0!==minRange),destructorFunction:null})},m:function(rawType,dataTypeIndex,name){var TA=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][dataTypeIndex];function decodeMemoryView(handle){var heap=HEAPU32,size=heap[handle>>=2];return new TA(heap.buffer,heap[handle+1],size)}registerType(rawType,{name:name=readLatin1String(name),fromWireType:decodeMemoryView,argPackAdvance:8,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:!0})},M:function(rawType,name){var stdStringIsUTF8="std::string"===(name=readLatin1String(name));registerType(rawType,{name:name,fromWireType:function(value){var length=HEAPU32[value>>2],payload=value+4;if(stdStringIsUTF8)for(var decodeStartPtr=payload,i=0;i<=length;++i){var stringSegment,str,currentBytePtr=payload+i;i!=length&&0!=HEAPU8[currentBytePtr]||(stringSegment=UTF8ToString(decodeStartPtr,currentBytePtr-decodeStartPtr),str=void 0===str?stringSegment:str+String.fromCharCode(0)+stringSegment,decodeStartPtr=currentBytePtr+1)}else{for(var a=new Array(length),i=0;i<length;++i)a[i]=String.fromCharCode(HEAPU8[payload+i]);str=a.join("")}return _free(value),str},toWireType:function(destructors,value){var length,valueIsOfTypeString="string"==typeof(value=value instanceof ArrayBuffer?new Uint8Array(value):value),base=(valueIsOfTypeString||value instanceof Uint8Array||value instanceof Uint8ClampedArray||value instanceof Int8Array||throwBindingError("Cannot pass non-string to std::string"),length=stdStringIsUTF8&&valueIsOfTypeString?lengthBytesUTF8(value):value.length,_malloc(4+length+1)),ptr=base+4;if(HEAPU32[base>>2]=length,stdStringIsUTF8&&valueIsOfTypeString)stringToUTF8Array(value,HEAPU8,ptr,length+1);else if(valueIsOfTypeString)for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);255<charCode&&(_free(ptr),throwBindingError("String has UTF-16 code units that do not fit in 8 bits")),HEAPU8[ptr+i]=charCode}else for(i=0;i<length;++i)HEAPU8[ptr+i]=value[i];return null!==destructors&&destructors.push(_free,base),base},argPackAdvance:8,readValueFromPointer:simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})},C:function(rawType,charSize,name){var decodeString,encodeString,getHeap,lengthBytesUTF,shift;name=readLatin1String(name),2===charSize?(decodeString=UTF16ToString,encodeString=stringToUTF16,lengthBytesUTF=lengthBytesUTF16,getHeap=()=>HEAPU16,shift=1):4===charSize&&(decodeString=UTF32ToString,encodeString=stringToUTF32,lengthBytesUTF=lengthBytesUTF32,getHeap=()=>HEAPU32,shift=2),registerType(rawType,{name:name,fromWireType:function(value){for(var length=HEAPU32[value>>2],HEAP=getHeap(),decodeStartPtr=value+4,i=0;i<=length;++i){var stringSegment,str,currentBytePtr=value+4+i*charSize;i!=length&&0!=HEAP[currentBytePtr>>shift]||(stringSegment=decodeString(decodeStartPtr,currentBytePtr-decodeStartPtr),str=void 0===str?stringSegment:str+String.fromCharCode(0)+stringSegment,decodeStartPtr=currentBytePtr+charSize)}return _free(value),str},toWireType:function(destructors,value){"string"!=typeof value&&throwBindingError("Cannot pass non-string to C++ string type "+name);var length=lengthBytesUTF(value),ptr=_malloc(4+length+charSize);return HEAPU32[ptr>>2]=length>>shift,encodeString(value,ptr+4,length+charSize),null!==destructors&&destructors.push(_free,ptr),ptr},argPackAdvance:8,readValueFromPointer:simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})},s:function(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){tupleRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),elements:[]}},ka:function(rawTupleType,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){tupleRegistrations[rawTupleType].elements.push({getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})},la:function(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}},O:function(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})},ja:function(rawType,name){registerType(rawType,{isVoid:!0,name:name=readLatin1String(name),argPackAdvance:0,fromWireType:function(){},toWireType:function(destructors,o){}})},q:function(handle,returnType,destructorsRef){handle=Emval.toValue(handle),returnType=requireRegisteredType(returnType,"emval::as");var destructors=[],rd=Emval.toHandle(destructors);return HEAPU32[destructorsRef>>2]=rd,returnType.toWireType(destructors,handle)},Q:function(caller,handle,methodName,destructorsRef,args){return(caller=emval_methodCallers[caller])(handle=Emval.toValue(handle),methodName=getStringOrSymbol(methodName),(destructorsRef=>{var destructors=[];return HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors),destructors})(destructorsRef),args)},R:function(caller,handle,methodName,args){(caller=emval_methodCallers[caller])(handle=Emval.toValue(handle),methodName=getStringOrSymbol(methodName),null,args)},c:__emval_decref,F:function(first,second){return(first=Emval.toValue(first))==(second=Emval.toValue(second))},x:function(name){return 0===name?Emval.toHandle(emval_get_global()):(name=getStringOrSymbol(name),Emval.toHandle(emval_get_global()[name]))},z:function(argCount,argTypes){var types=((argCount,argTypes)=>{for(var a=new Array(argCount),i=0;i<argCount;++i)a[i]=requireRegisteredType(HEAPU32[argTypes+i*POINTER_SIZE>>2],"parameter "+i);return a})(argCount,argTypes),signatureName=(argTypes=types[0]).name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$",returnId=emval_registeredMethods[signatureName];if(void 0===returnId){for(var params=["retType"],args=[argTypes],argsList="",i=0;i<argCount-1;++i)argsList+=(0!==i?", ":"")+"arg"+i,params.push("argType"+i),args.push(types[1+i]);for(var functionBody="return function "+makeLegalFunctionName("methodCaller_"+signatureName)+"(handle, name, destructors, args) {\n",offset=0,i=0;i<argCount-1;++i)functionBody+=" var arg"+i+" = argType"+i+".readValueFromPointer(args"+(offset?"+"+offset:"")+");\n",offset+=types[i+1].argPackAdvance;functionBody+=" var rv = handle[name]("+argsList+");\n";for(i=0;i<argCount-1;++i)types[i+1].deleteObject&&(functionBody+=" argType"+i+".deleteObject(arg"+i+");\n");argTypes.isVoid||(functionBody+=" return retType.toWireType(destructors, rv);\n"),params.push(functionBody+="};\n");var id,argTypes=new_(Function,params).apply(null,args);id=emval_methodCallers.length,emval_methodCallers.push(argTypes),emval_registeredMethods[signatureName]=returnId=id}return returnId},E:function(name){return name=getStringOrSymbol(name),Emval.toHandle(Module[name])},w:function(handle,key){return handle=Emval.toValue(handle),key=Emval.toValue(key),Emval.toHandle(handle[key])},k:function(handle){4<handle&&(emval_handle_array[handle].refcount+=1)},D:function(object,constructor){return(object=Emval.toValue(object))instanceof(constructor=Emval.toValue(constructor))},oa:function(handle){return"number"==typeof(handle=Emval.toValue(handle))},na:function(handle){return"string"==typeof(handle=Emval.toValue(handle))},P:function(handle,argCount,argTypes,args){handle=Emval.toValue(handle);var newer=emval_newers[argCount];return newer||(newer=(argCount=>{for(var argsList="",i=0;i<argCount;++i)argsList+=(0!==i?", ":"")+"arg"+i;for(var functionBody="return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n var HEAPU32 = getMemory();\n",i=0;i<argCount;++i)functionBody+="var argType"+i+" = requireRegisteredType(HEAPU32[((argTypes)>>2)], 'parameter "+i+"');\nvar arg"+i+" = argType"+i+".readValueFromPointer(args);\nargs += argType"+i+"['argPackAdvance'];\nargTypes += 4;\n";return functionBody+="var obj = new constructor("+argsList+");\nreturn valueToHandle(obj);\n}\n",new Function("requireRegisteredType","Module","valueToHandle","getMemory",functionBody)(requireRegisteredType,Module,Emval.toHandle,()=>HEAPU32)})(argCount),emval_newers[argCount]=newer),newer(handle,argTypes,args)},n:function(){return Emval.toHandle([])},u:function(v){return Emval.toHandle(getStringOrSymbol(v))},j:function(){return Emval.toHandle({})},o:function(handle){runDestructors(Emval.toValue(handle)),__emval_decref(handle)},l:function(handle,key,value){handle=Emval.toValue(handle),key=Emval.toValue(key),value=Emval.toValue(value),handle[key]=value},h:function(type,arg){return type=(type=requireRegisteredType(type,"_emval_take_value")).readValueFromPointer(arg),Emval.toHandle(type)},ba:function(time,tmPtr){var time=new Date(1e3*readI53FromI64(time)),start=(HEAP32[tmPtr>>2]=time.getUTCSeconds(),HEAP32[tmPtr+4>>2]=time.getUTCMinutes(),HEAP32[tmPtr+8>>2]=time.getUTCHours(),HEAP32[tmPtr+12>>2]=time.getUTCDate(),HEAP32[tmPtr+16>>2]=time.getUTCMonth(),HEAP32[tmPtr+20>>2]=time.getUTCFullYear()-1900,HEAP32[tmPtr+24>>2]=time.getUTCDay(),Date.UTC(time.getUTCFullYear(),0,1,0,0,0,0)),time=(time.getTime()-start)/864e5|0;HEAP32[tmPtr+28>>2]=time},ca:function(time,tmPtr){var time=new Date(1e3*readI53FromI64(time)),yday=(HEAP32[tmPtr>>2]=time.getSeconds(),HEAP32[tmPtr+4>>2]=time.getMinutes(),HEAP32[tmPtr+8>>2]=time.getHours(),HEAP32[tmPtr+12>>2]=time.getDate(),HEAP32[tmPtr+16>>2]=time.getMonth(),HEAP32[tmPtr+20>>2]=time.getFullYear()-1900,HEAP32[tmPtr+24>>2]=time.getDay(),0|__yday_from_date(time)),yday=(HEAP32[tmPtr+28>>2]=yday,HEAP32[tmPtr+36>>2]=-60*time.getTimezoneOffset(),new Date(time.getFullYear(),0,1)),summerOffset=new Date(time.getFullYear(),6,1).getTimezoneOffset(),yday=yday.getTimezoneOffset(),time=0|(summerOffset!=yday&&time.getTimezoneOffset()==Math.min(yday,summerOffset));HEAP32[tmPtr+32>>2]=time},da:function(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0),dst=HEAP32[tmPtr+32>>2],guessedOffset=date.getTimezoneOffset(),start=new Date(date.getFullYear(),0,1),summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset(),start=start.getTimezoneOffset(),dstOffset=Math.min(start,summerOffset),dst=(dst<0?HEAP32[tmPtr+32>>2]=Number(summerOffset!=start&&dstOffset==guessedOffset):0<dst!=(dstOffset==guessedOffset)&&(start=Math.max(start,summerOffset),summerOffset=0<dst?dstOffset:start,date.setTime(date.getTime()+6e4*(summerOffset-guessedOffset))),HEAP32[tmPtr+24>>2]=date.getDay(),0|__yday_from_date(date));return HEAP32[tmPtr+28>>2]=dst,HEAP32[tmPtr>>2]=date.getSeconds(),HEAP32[tmPtr+4>>2]=date.getMinutes(),HEAP32[tmPtr+8>>2]=date.getHours(),HEAP32[tmPtr+12>>2]=date.getDate(),HEAP32[tmPtr+16>>2]=date.getMonth(),HEAP32[tmPtr+20>>2]=date.getYear(),date.getTime()/1e3|0},ea:function(timezone,daylight,tzname){var currentYear=(new Date).getFullYear(),winter=new Date(currentYear,0,1),currentYear=new Date(currentYear,6,1),winterOffset=winter.getTimezoneOffset(),summerOffset=currentYear.getTimezoneOffset(),stdTimezoneOffset=Math.max(winterOffset,summerOffset);function extractZone(date){date=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return date?date[1]:"GMT"}HEAPU32[timezone>>2]=60*stdTimezoneOffset,HEAP32[daylight>>2]=Number(winterOffset!=summerOffset),timezone=extractZone(winter),stdTimezoneOffset=extractZone(currentYear),daylight=allocateUTF8(timezone),winter=allocateUTF8(stdTimezoneOffset),summerOffset<winterOffset?(HEAPU32[tzname>>2]=daylight,HEAPU32[tzname+4>>2]=winter):(HEAPU32[tzname>>2]=winter,HEAPU32[tzname+4>>2]=daylight)},A:function(){abort("")},J:function(){return Date.now()},I:scriptDirectory,W:function(requestedSize){var oldSize=HEAPU8.length;if(!(2147483648<(requestedSize>>>=0)))for(var multiple,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown),overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);if((size=>{var b=wasmMemory.buffer;try{return wasmMemory.grow(size-b.byteLength+65535>>>16),updateMemoryViews(),1}catch(e){}})(Math.min(2147483648,(overGrownHeapSize=Math.max(requestedSize,overGrownHeapSize))+((multiple=65536)-overGrownHeapSize%multiple)%multiple)))return!0}return!1},$:function(__environ,environ_buf){var bufSize=0;return getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;((str,buffer,dontAddNull)=>{for(var i=0;i<str.length;++i)HEAP8[buffer++>>0]=str.charCodeAt(i);dontAddNull||(HEAP8[buffer>>0]=0)})(string,HEAPU32[__environ+4*i>>2]=ptr),bufSize+=string.length+1}),0},aa:function(penviron_count,penviron_buf_size){var strings=getEnvStrings(),bufSize=(HEAPU32[penviron_count>>2]=strings.length,0);return strings.forEach(function(string){bufSize+=string.length+1}),HEAPU32[penviron_buf_size>>2]=bufSize,0},y:function(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return FS.close(stream),0}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return e.errno;throw e}},K:function(fd,iov,iovcnt,pnum){try{var num=((stream,iov,iovcnt,offset)=>{for(var ret=0,i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2],len=HEAPU32[iov+4>>2],ptr=(iov+=8,FS.read(stream,HEAP8,ptr,len,offset));if(ptr<0)return-1;if(ret+=ptr,ptr<len)break;void 0!==offset&&(offset+=ptr)}return ret})(SYSCALLS.getStreamFromFD(fd),iov,iovcnt);return HEAPU32[pnum>>2]=num,0}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return e.errno;throw e}},S:function(fd,offset_low,offset_high,whence,newOffset){try{var stream,offset=convertI32PairToI53Checked(offset_low,offset_high);return isNaN(offset)?61:(stream=SYSCALLS.getStreamFromFD(fd),FS.llseek(stream,offset,whence),tempI64=[stream.position>>>0,(tempDouble=stream.position,1<=+Math.abs(tempDouble)?0<tempDouble?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1],stream.getdents&&0===offset&&0===whence&&(stream.getdents=null),0)}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return e.errno;throw e}},B:function(fd,iov,iovcnt,pnum){try{var num=((stream,iov,iovcnt,offset)=>{for(var ret=0,i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2],len=HEAPU32[iov+4>>2],ptr=(iov+=8,FS.write(stream,HEAP8,ptr,len,offset));if(ptr<0)return-1;ret+=ptr,void 0!==offset&&(offset+=ptr)}return ret})(SYSCALLS.getStreamFromFD(fd),iov,iovcnt);return HEAPU32[pnum>>2]=num,0}catch(e){if(void 0!==FS&&e instanceof FS.ErrnoError)return e.errno;throw e}}},_malloc=((()=>{var info={a:asmLibraryArg};function receiveInstance(instance,module){var instance=instance.exports;Module.asm=instance,wasmMemory=Module.asm.pa,updateMemoryViews(),wasmTable=Module.asm.ra,instance=Module.asm.qa,__ATINIT__.unshift(instance),removeRunDependency()}function receiveInstantiationResult(result){receiveInstance(result.instance)}function instantiateArrayBuffer(receiver){return(()=>{if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if("function"==typeof fetch&&!isFileURI(wasmBinaryFile))return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(response.ok)return response.arrayBuffer();throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}).catch(function(){return getBinary(wasmBinaryFile)});if(readAsync)return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})})().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}if(addRunDependency(),Module.instantiateWasm)try{return Module.instantiateWasm(info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e),readyPromiseReject(e)}(wasmBinary||"function"!=typeof WebAssembly.instantiateStreaming||isDataURI(wasmBinaryFile)||isFileURI(wasmBinaryFile)||ENVIRONMENT_IS_NODE||"function"!=typeof fetch?instantiateArrayBuffer(receiveInstantiationResult):fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){return WebAssembly.instantiateStreaming(response,info).then(receiveInstantiationResult,function(reason){return err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiationResult)})})).catch(readyPromiseReject)})(),Module.___wasm_call_ctors=function(){return(Module.___wasm_call_ctors=Module.asm.qa).apply(null,arguments)},Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.sa).apply(null,arguments)}),_free=Module._free=function(){return(_free=Module._free=Module.asm.ta).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.ua).apply(null,arguments)},___getTypeName=Module.___getTypeName=function(){return(___getTypeName=Module.___getTypeName=Module.asm.va).apply(null,arguments)},_htons=(Module.__embind_initialize_bindings=function(){return(Module.__embind_initialize_bindings=Module.asm.wa).apply(null,arguments)},Module._htons=function(){return(_htons=Module._htons=Module.asm.xa).apply(null,arguments)}),_ntohs=Module._ntohs=function(){return(_ntohs=Module._ntohs=Module.asm.ya).apply(null,arguments)},___cxa_is_pointer_type=Module.___cxa_is_pointer_type=function(){return(___cxa_is_pointer_type=Module.___cxa_is_pointer_type=Module.asm.za).apply(null,arguments)};Module.dynCall_ji=function(){return(Module.dynCall_ji=Module.asm.Aa).apply(null,arguments)},Module.dynCall_vij=function(){return(Module.dynCall_vij=Module.asm.Ba).apply(null,arguments)},Module.dynCall_jiji=function(){return(Module.dynCall_jiji=Module.asm.Ca).apply(null,arguments)};function run(){function doRun(){calledRun||(calledRun=!0,Module.calledRun=!0,ABORT)||(SOCKFS.root=FS.mount(SOCKFS,{},null),Module.noFSInit||FS.init.initialized||FS.init(),FS.ignorePermissions=!1,TTY.init(),callRuntimeCallbacks(__ATINIT__),readyPromiseResolve(Module),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun())}0<runDependencies||(preRun(),0<runDependencies)||(Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun())}if(dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)},Module.preInit)for("function"==typeof Module.preInit&&(Module.preInit=[Module.preInit]);0<Module.preInit.length;)Module.preInit.pop()();return run(),config.ready}})();"object"==typeof exports&&"object"==typeof module?module.exports=rhino3dm:"function"==typeof define&&define.amd?define([],function(){return rhino3dm}):"object"==typeof exports&&(exports.rhino3dm=rhino3dm);