From 0dab91d8d949ed7d008a3bb99f9cec451b4bda50 Mon Sep 17 00:00:00 2001 From: yhirose Date: Fri, 15 Jan 2021 20:18:19 -0500 Subject: [PATCH] Throw operator support --- docs/native.js | 2 +- docs/native.wasm | Bin 352750 -> 359037 bytes peglib.h | 22 ++++++-- test/test2.cc | 134 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 154 insertions(+), 4 deletions(-) diff --git a/docs/native.js b/docs/native.js index cf2f5ec..af2271e 100644 --- a/docs/native.js +++ b/docs/native.js @@ -1 +1 @@ -var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){err("no native wasm support detected")}var wasmMemory;var wasmTable=new WebAssembly.Table({"initial":775,"maximum":775+0,"element":"anyfunc"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0||i==maxBytesToRead/2)return str;++i;str+=String.fromCharCode(codeUnit)}}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var WASM_PAGE_SIZE=65536;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var DYNAMIC_BASE=5279680,DYNAMICTOP_PTR=36640;var INITIAL_INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,"maximum":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";out(what);err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="native.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function demangle(func){return func}function demangleAll(text){var regex=/\b_Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function ___cxa_allocate_exception(size){return _malloc(size)}var ___exception_infos={};var ___exception_last=0;function __ZSt18uncaught_exceptionv(){return __ZSt18uncaught_exceptionv.uncaught_exceptions>0}function ___cxa_throw(ptr,type,destructor){___exception_infos[ptr]={ptr:ptr,adjusted:[ptr],type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};___exception_last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exceptions=1}else{__ZSt18uncaught_exceptionv.uncaught_exceptions++}throw ptr}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___map_file(pathname,size){setErrNo(63);return-1}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>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;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function syscallMunmap(addr,len){if((addr|0)===-1||len===0){return-28}var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);if(info.prot&2){SYSCALLS.doMsync(addr,stream,len,info.flags,info.offset)}FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}function ___sys_munmap(addr,len){try{return syscallMunmap(addr,len)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}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)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return 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;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv},"toWireType":function(destructors,value){return __emval_register(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(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)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0||i==length){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(HEAP[currentBytePtr>>shift]==0||i==length){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value==="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var ENV={};function __getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8","_":__getExecutableName()};for(var x in ENV){env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"b":___assert_fail,"e":___cxa_allocate_exception,"d":___cxa_throw,"q":___map_file,"p":___sys_munmap,"k":__embind_register_bool,"j":__embind_register_emval,"i":__embind_register_float,"t":__embind_register_function,"c":__embind_register_integer,"a":__embind_register_memory_view,"g":__embind_register_std_string,"f":__embind_register_std_wstring,"l":__embind_register_void,"h":_abort,"m":_emscripten_memcpy_big,"n":_emscripten_resize_heap,"r":_environ_get,"s":_environ_sizes_get,"memory":wasmMemory,"o":_strftime_l,"table":wasmTable};var asm=createWasm();Module["asm"]=asm;var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["u"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["v"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["w"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["x"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["y"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["z"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["A"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["B"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["C"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["D"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["E"]).apply(null,arguments)};var dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=function(){return(dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=Module["asm"]["F"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["G"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["H"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["I"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["J"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["K"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["L"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["M"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["N"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["O"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["P"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["Q"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["R"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["S"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["T"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["U"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["V"]).apply(null,arguments)};Module["asm"]=asm;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); +var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){err("no native wasm support detected")}var wasmMemory;var wasmTable=new WebAssembly.Table({"initial":776,"maximum":776+0,"element":"anyfunc"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0||i==maxBytesToRead/2)return str;++i;str+=String.fromCharCode(codeUnit)}}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var WASM_PAGE_SIZE=65536;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var DYNAMIC_BASE=5280080,DYNAMICTOP_PTR=37040;var INITIAL_INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,"maximum":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";out(what);err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="native.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function demangle(func){return func}function demangleAll(text){var regex=/\b_Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function ___cxa_allocate_exception(size){return _malloc(size)}var ___exception_infos={};var ___exception_last=0;function __ZSt18uncaught_exceptionv(){return __ZSt18uncaught_exceptionv.uncaught_exceptions>0}function ___cxa_throw(ptr,type,destructor){___exception_infos[ptr]={ptr:ptr,adjusted:[ptr],type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};___exception_last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exceptions=1}else{__ZSt18uncaught_exceptionv.uncaught_exceptions++}throw ptr}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___map_file(pathname,size){setErrNo(63);return-1}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>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;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function syscallMunmap(addr,len){if((addr|0)===-1||len===0){return-28}var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);if(info.prot&2){SYSCALLS.doMsync(addr,stream,len,info.flags,info.offset)}FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}function ___sys_munmap(addr,len){try{return syscallMunmap(addr,len)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}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)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return 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;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv},"toWireType":function(destructors,value){return __emval_register(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(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)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0||i==length){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(HEAP[currentBytePtr>>shift]==0||i==length){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value==="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var ENV={};function __getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8","_":__getExecutableName()};for(var x in ENV){env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"b":___assert_fail,"e":___cxa_allocate_exception,"d":___cxa_throw,"q":___map_file,"p":___sys_munmap,"k":__embind_register_bool,"j":__embind_register_emval,"i":__embind_register_float,"t":__embind_register_function,"c":__embind_register_integer,"a":__embind_register_memory_view,"g":__embind_register_std_string,"f":__embind_register_std_wstring,"l":__embind_register_void,"h":_abort,"m":_emscripten_memcpy_big,"n":_emscripten_resize_heap,"r":_environ_get,"s":_environ_sizes_get,"memory":wasmMemory,"o":_strftime_l,"table":wasmTable};var asm=createWasm();Module["asm"]=asm;var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["u"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["v"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["w"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["x"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["y"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["z"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["A"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["B"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["C"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["D"]).apply(null,arguments)};var dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=function(){return(dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=Module["asm"]["E"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["F"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["G"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["H"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["I"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["J"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["K"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["L"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["M"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["N"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["O"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["P"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["Q"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["R"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["S"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["T"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["U"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["V"]).apply(null,arguments)};Module["asm"]=asm;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); diff --git a/docs/native.wasm b/docs/native.wasm index 1705f0c42e708a883ff6ce7601bc5d6ca90b5773..f6e54158139e78bff8ea54ceece75e4d3e0f8a1c 100644 GIT binary patch delta 62748 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 lgJ2mPtkx@7HG*?=K3>6m4M@Lxa4XT0JE0Ykv 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 diff --git a/peglib.h b/peglib.h index 620af68..675c7bd 100644 --- a/peglib.h +++ b/peglib.h @@ -2918,7 +2918,8 @@ private: opt(g["Instruction"]))); g["Expression"] <= seq(g["Sequence"], zom(seq(g["SLASH"], g["Sequence"]))); g["Sequence"] <= zom(g["Prefix"]); - g["Prefix"] <= seq(opt(cho(g["AND"], g["NOT"])), g["Suffix"]); + g["Prefix"] <= seq(opt(cho(g["AND"], g["NOT"])), g["SuffixWithLabel"]); + g["SuffixWithLabel"] <= seq(g["Suffix"], opt(seq(g["HAT"], g["Identifier"]))); g["Suffix"] <= seq(g["Primary"], opt(g["Loop"])); g["Loop"] <= cho(g["QUESTION"], g["STAR"], g["PLUS"], g["Repetition"]); g["Primary"] <= @@ -2991,6 +2992,7 @@ private: ~g["PIPE"] <= seq(chr('|'), g["Spacing"]); g["AND"] <= seq(chr('&'), g["Spacing"]); g["NOT"] <= seq(chr('!'), g["Spacing"]); + ~g["HAT"] <= seq(chr('^'), g["Spacing"]); g["QUESTION"] <= seq(chr('?'), g["Spacing"]); g["STAR"] <= seq(chr('*'), g["Spacing"]); g["PLUS"] <= seq(chr('+'), g["Spacing"]); @@ -3064,7 +3066,7 @@ private: void setup_actions() { g["Definition"] = [&](const SemanticValues &vs, std::any &dt) { - Data &data = *std::any_cast(dt); + auto &data = *std::any_cast(dt); auto is_macro = vs.choice() == 0; auto ignore = std::any_cast(vs[0]); @@ -3150,6 +3152,20 @@ private: return ope; }; + g["SuffixWithLabel"] = [&](const SemanticValues &vs, std::any &dt) { + auto ope = std::any_cast>(vs[0]); + if (vs.size() == 1) { + return ope; + } else { + assert(vs.size() == 2); + auto &data = *std::any_cast(dt); + const auto &ident = std::any_cast(vs[1]); + auto label = ref(*data.grammar, ident, vs.sv().data(), false, {}); + auto recovery = rec(ref(*data.grammar, RECOVER_DEFINITION_NAME, vs.sv().data(), true, {label})); + return cho(ope, recovery); + } + }; + struct Loop { enum class Type { opt = 0, zom, oom, rep }; Type type; @@ -3211,7 +3227,7 @@ private: }; g["Primary"] = [&](const SemanticValues &vs, std::any &dt) { - Data &data = *std::any_cast(dt); + auto &data = *std::any_cast(dt); switch (vs.choice()) { case 0: // Macro Reference diff --git a/test/test2.cc b/test/test2.cc index 934990f..0897544 100644 --- a/test/test2.cc +++ b/test/test2.cc @@ -1251,3 +1251,137 @@ R"(+ START + ITEM/2 )"); } + +TEST_CASE("Error recovery Java", "[error]") { + parser pg(R"( +Prog ← PUBLIC CLASS NAME LCUR PUBLIC STATIC VOID MAIN LPAR STRING LBRA RBRA NAME RPAR BlockStmt RCUR +BlockStmt ← LCUR (Stmt)* RCUR^rcblk +Stmt ← IfStmt / WhileStmt / PrintStmt / DecStmt / AssignStmt / BlockStmt +IfStmt ← IF LPAR Exp RPAR Stmt (ELSE Stmt)? +WhileStmt ← WHILE LPAR Exp RPAR Stmt +DecStmt ← INT NAME (ASSIGN Exp)? SEMI +AssignStmt ← NAME ASSIGN Exp SEMI^semia +PrintStmt ← PRINTLN LPAR Exp RPAR SEMI +Exp ← RelExp (EQ RelExp)* +RelExp ← AddExp (LT AddExp)* +AddExp ← MulExp ((PLUS / MINUS) MulExp)* +MulExp ← AtomExp ((TIMES / DIV) AtomExp)* +AtomExp ← LPAR Exp RPAR / NUMBER / NAME + +NUMBER ← < [0-9]+ > +NAME ← < [a-zA-Z_][a-zA-Z_0-9]* > + +~LPAR ← '(' +~RPAR ← ')' +~LCUR ← '{' +~RCUR ← '}' +~LBRA ← '[' +~RBRA ← ']' +~SEMI ← ';' + +~EQ ← '==' +~LT ← '<' +~ASSIGN ← '=' + +~IF ← 'if' +~ELSE ← 'else' +~WHILE ← 'while' + +PLUS ← '+' +MINUS ← '-' +TIMES ← '*' +DIV ← '/' + +CLASS ← 'class' +PUBLIC ← 'public' +STATIC ← 'static' + +VOID ← 'void' +INT ← 'int' + +MAIN ← 'main' +STRING ← 'String' +PRINTLN ← 'System.out.println' + +%whitespace ← [ \t\n]* +%word ← NAME + +# Throw operator labels +rcblk ← SkipToRCUR { message "missing end of block." } +semia ← '' { message "missing simicolon in assignment." } + +# Recovery expressions +SkipToRCUR ← (!RCUR (LCUR SkipToRCUR / .))* RCUR + )"); + + REQUIRE(!!pg); // OK + + std::vector errors{ + R"(8:5: missing simicolon in assignment.)", + R"(8:6: missing end of block.)", + }; + + size_t i = 0; + pg.log = [&](size_t ln, size_t col, const std::string &msg) { + std::stringstream ss; + ss << ln << ":" << col << ": " << msg; + REQUIRE(ss.str() == errors[i++]); + }; + + pg.enable_ast(); + + std::shared_ptr ast; + REQUIRE_FALSE(pg.parse(R"(public class Example { + public static void main(String[] args) { + int n = 5; + int f = 1; + while(0 < n) { + f = f * n; + n = n - 1 + }; + System.out.println(f); + } +} + )", ast)); + + ast = peg::AstOptimizer(true, {"ENTRIES"}).optimize(ast); + + REQUIRE(ast_to_s(ast) == +R"(+ Prog + - PUBLIC (public) + - CLASS (class) + - NAME (Example) + - PUBLIC (public) + - STATIC (static) + - VOID (void) + - MAIN (main) + - STRING (String) + - NAME (args) + + BlockStmt + + Stmt/3[DecStmt] + - INT (int) + - NAME (n) + - Exp/0[NUMBER] (5) + + Stmt/3[DecStmt] + - INT (int) + - NAME (f) + - Exp/0[NUMBER] (1) + + Stmt/1[WhileStmt] + + Exp/0[RelExp] + - AddExp/0[NUMBER] (0) + - AddExp/0[NAME] (n) + + Stmt/5[BlockStmt] + + Stmt/4[AssignStmt] + - NAME (f) + + Exp/0[MulExp] + - AtomExp/2[NAME] (f) + - TIMES (*) + - AtomExp/2[NAME] (n) + + Stmt/4[AssignStmt] + - NAME (n) + + Exp/0[AddExp] + - MulExp/0[NAME] (n) + - MINUS (-) + - MulExp/0[NUMBER] (1) +)"); +}