From 12c0e1a02f3cb595190a33921d7b1f2633455296 Mon Sep 17 00:00:00 2001 From: MITSUNARI Shigeo Date: Tue, 17 Oct 2017 10:58:11 +0900 Subject: [PATCH] [js] enc/dec for G1/G2/GT --- Makefile | 2 +- docs/demo/exported-she.js | 1 + docs/demo/mclshe.js | 2 +- docs/demo/mclshe.wasm | Bin 498210 -> 501199 bytes docs/demo/she-demo.js | 51 +++++++++++++++------------ docs/demo/she.html | 1 + docs/demo/she.js | 72 ++++++++++++++++++++++++++------------ docs/demo/style.css | 12 +++++++ include/mcl/she.h | 1 + src/she_c_impl.hpp | 5 +++ 10 files changed, 99 insertions(+), 48 deletions(-) create mode 100644 docs/demo/style.css diff --git a/Makefile b/Makefile index bceebaf..427b979 100644 --- a/Makefile +++ b/Makefile @@ -217,7 +217,7 @@ $(EXPORTED_SHE_JS): ./include/mcl/she.h EXPORTED_SHE=$(shell cat $(SHE_TXT)) -docs/demo/mclshe.js: src/fp.cpp src/she_c256.cpp $(SHE_TXT) $(EXPORTED_SHE_JS) +docs/demo/mclshe.js: src/fp.cpp src/she_c256.cpp $(SHE_TXT) $(EXPORTED_SHE_JS) src/she_c_impl.hpp include/mcl/she.hpp emcc -o $@ src/fp.cpp src/she_c256.cpp -I./include -I./src -I../cybozulib/include -s WASM=1 -s "MODULARIZE=1" -s "EXPORTED_FUNCTIONS=[$(EXPORTED_SHE)]" -O3 -DNDEBUG -DMCLBN_FP_UNIT_SIZE=4 -DMCL_MAX_BIT_SIZE=256 -s DISABLE_EXCEPTION_CATCHING=0 -s NO_EXIT_RUNTIME=1 -DMCLSHE_WIN_SIZE=8 demo: diff --git a/docs/demo/exported-she.js b/docs/demo/exported-she.js index 6e8ebe1..0eb9398 100644 --- a/docs/demo/exported-she.js +++ b/docs/demo/exported-she.js @@ -23,6 +23,7 @@ sheEnc32G1 = mod.cwrap('sheEnc32G1', 'number', ['number', 'number', 'number', ]) sheEnc32G2 = mod.cwrap('sheEnc32G2', 'number', ['number', 'number', 'number', ]) sheEnc32GT = mod.cwrap('sheEnc32GT', 'number', ['number', 'number', 'number', ]) _sheDecG1 = mod.cwrap('sheDecG1', 'number', ['number', 'number', 'number', ]) +_sheDecG2 = mod.cwrap('sheDecG2', 'number', ['number', 'number', 'number', ]) _sheDecGT = mod.cwrap('sheDecGT', 'number', ['number', 'number', 'number', ]) sheAddG1 = mod.cwrap('sheAddG1', 'number', ['number', 'number', 'number', ]) sheAddG2 = mod.cwrap('sheAddG2', 'number', ['number', 'number', 'number', ]) diff --git a/docs/demo/mclshe.js b/docs/demo/mclshe.js index de20e1a..1e5c2c6 100644 --- a/docs/demo/mclshe.js +++ b/docs/demo/mclshe.js @@ -2,7 +2,7 @@ var Module = function(Module) { Module = Module || {}; var Module = Module; -var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=console.log;if(!Module["printErr"])Module["printErr"]=console.warn;var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function shell_read(){throw"no read() available"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["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)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function shell_print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function shell_printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}if(!Module["quit"]){Module["quit"]=(function(status,toThrow){throw toThrow})}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value;return value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*4294967296:+(low>>>0)+ +(high|0)*4294967296;return ret}),GLOBAL_BASE:1024,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;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 if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"]||Module["__cxa_demangle"];if(__cxa_demangle_func){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}Module["stackTrace"]=stackTrace;var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}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)}Module["addOnPreRun"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;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}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var lastChar,end;if(dontAddNull){end=buffer+lengthBytesUTF8(string);lastChar=HEAP8[end]}stringToUTF8(string,buffer,Infinity);if(dontAddNull)HEAP8[end]=lastChar}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["fround"]){var froundBuffer=new Float32Array(1);Math["fround"]=(function(x){froundBuffer[0]=x;return froundBuffer[0]})}Math.fround=Math["fround"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;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["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;function integrateWasmJS(){var method=Module["wasmJSMethod"]||"native-wasm";Module["wasmJSMethod"]=method;var wasmTextFile=Module["wasmTextFile"]||"mclshe.wast";var wasmBinaryFile=Module["wasmBinaryFile"]||"mclshe.wasm";var asmjsCodeFile=Module["asmjsCodeFile"]||"mclshe.temp.asm.js";if(typeof Module["locateFile"]==="function"){wasmTextFile=Module["locateFile"](wasmTextFile);wasmBinaryFile=Module["locateFile"](wasmBinaryFile);asmjsCodeFile=Module["locateFile"](asmjsCodeFile)}var wasmPageSize=64*1024;var asm2wasmImports={"f64-rem":(function(x,y){return x%y}),"f64-to-int":(function(x){return x|0}),"i32s-div":(function(x,y){return(x|0)/(y|0)|0}),"i32u-div":(function(x,y){return(x>>>0)/(y>>>0)>>>0}),"i32s-rem":(function(x,y){return(x|0)%(y|0)|0}),"i32u-rem":(function(x,y){return(x>>>0)%(y>>>0)>>>0}),"debugger":(function(){debugger})};var info={"global":null,"env":null,"asm2wasm":asm2wasmImports,"parent":Module};var exports=null;function lookupImport(mod,base){var lookup=info;if(mod.indexOf(".")<0){lookup=(lookup||{})[mod]}else{var parts=mod.split(".");lookup=(lookup||{})[parts[0]];lookup=(lookup||{})[parts[1]]}if(base){lookup=(lookup||{})[base]}if(lookup===undefined){abort("bad lookupImport to ("+mod+")."+base)}return lookup}function mergeMemory(newBuffer){var oldBuffer=Module["buffer"];if(newBuffer.byteLength=0||Module["wasmJSMethod"].indexOf("interpret-asm2wasm")>=0?"mclshe.js.mem":null;var STATIC_BUMP=34128;Module["STATIC_BASE"]=STATIC_BASE;Module["STATIC_BUMP"]=STATIC_BUMP;var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module["dynCall_vi"](info.destructor,ptr)}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(Runtime.setTempRet0(0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(Runtime.setTempRet0(0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(Runtime.setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(Runtime.setTempRet0(throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr}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?Pointer_stringify(tm_zone):""};var pattern=Pointer_stringify(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"};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){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()||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)}function _abort(){Module["abort"]()}function ___cxa_free_exception(ptr){try{return _free(ptr)}catch(e){}}function ___cxa_end_catch(){Module["setThrew"](0);var ptr=EXCEPTIONS.caught.pop();if(ptr){EXCEPTIONS.decRef(EXCEPTIONS.deAdjust(ptr));EXCEPTIONS.last=0}}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1}function ___lock(){}function ___unlock(){}var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}var PTHREAD_SPECIFIC_NEXT_KEY=1;var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _pthread_mutex_init(){}var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),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.resolve(from).substr(1);to=PATH.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){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](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(ERRNO_CODES.EPERM)}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;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}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(ERRNO_CODES.ELOOP)}}}}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 err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,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){if(!FS.FSNode){FS.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});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.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)})}})}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 ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}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 err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR}}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(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}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(ERRNO_CODES.ESPIPE)})},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){console.log("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(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}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(ERRNO_CODES.EBUSY)}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(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}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(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}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;console.log("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(ERRNO_CODES.EIO)}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(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,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-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;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-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}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:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function ___cxa_allocate_exception(size){return _malloc(size)}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21506:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _environ=STATICTOP;STATICTOP+=16;function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]=ENV["LOGNAME"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]="C";ENV["_"]=Module["thisProgram"];poolPtr=allocate(TOTAL_ENV_SIZE,"i8",ALLOC_STATIC);envPtr=allocate(MAX_ENV_VALUES*4,"i8*",ALLOC_STATIC);HEAP32[envPtr>>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]==="string"){var line=key+"="+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocate(intArrayFromString(ENV[name]),"i8",ALLOC_NORMAL);return _getenv.ret}function ___map_file(pathname,size){___setErrNo(ERRNO_CODES.EPERM);return-1}function ___cxa_find_matching_catch_2(){return ___cxa_find_matching_catch.apply(null,arguments)}function ___cxa_find_matching_catch_3(){return ___cxa_find_matching_catch.apply(null,arguments)}function _llvm_eh_typeid_for(type){return type}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function ___gxx_personality_v0(){}function _pthread_cond_wait(){return 0}function ___cxa_rethrow(){var ptr=EXCEPTIONS.caught.pop();if(!EXCEPTIONS.infos[ptr].rethrown){EXCEPTIONS.caught.push(ptr);EXCEPTIONS.infos[ptr].rethrown=true}EXCEPTIONS.last=ptr;throw ptr}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}___buildEnvironment(ENV);DYNAMICTOP_PTR=allocate(1,"i32",ALLOC_STATIC);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;Module["wasmTableSize"]=1078;Module["wasmMaxTableSize"]=1078;function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){try{return Module["dynCall_iiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiid(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiid"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vii(index,a1,a2){try{Module["dynCall_vii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){try{return Module["dynCall_iiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiijii(index,a1,a2,a3,a4,a5,a6,a7,a8){try{Module["dynCall_viiiijii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viijii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){try{return Module["dynCall_iiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jii(index,a1,a2){try{return Module["dynCall_jii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){try{Module["dynCall_viiiiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiji(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiji"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_diii(index,a1,a2,a3){try{return Module["dynCall_diii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiii(index,a1,a2,a3){try{return Module["dynCall_fiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12){try{return Module["dynCall_iiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){try{Module["dynCall_viiiiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){try{Module["dynCall_viiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){try{return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iij(index,a1,a2,a3){try{return Module["dynCall_iij"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_i(index){try{return Module["dynCall_i"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jiii(index,a1,a2,a3){try{return Module["dynCall_jiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jiij(index,a1,a2,a3,a4){try{return Module["dynCall_jiij"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){try{return Module["dynCall_jiiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){try{return Module["dynCall_iiiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiij(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiij"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viij(index,a1,a2,a3,a4){try{Module["dynCall_viij"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){try{return Module["dynCall_iiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){try{return Module["dynCall_iiiiid"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_iiiiiiii":invoke_iiiiiiii,"invoke_iiiiiid":invoke_iiiiiid,"invoke_viiiii":invoke_viiiii,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_iiiiiiiiiii":invoke_iiiiiiiiiii,"invoke_viiiijii":invoke_viiiijii,"invoke_ii":invoke_ii,"invoke_viijii":invoke_viijii,"invoke_iiiiiiiiiiii":invoke_iiiiiiiiiiii,"invoke_jii":invoke_jii,"invoke_iiii":invoke_iiii,"invoke_viiiiiiiiiiiiiii":invoke_viiiiiiiiiiiiiii,"invoke_viiji":invoke_viiji,"invoke_diii":invoke_diii,"invoke_fiii":invoke_fiii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_iiiiiiiiiiiii":invoke_iiiiiiiiiiiii,"invoke_viiiiiii":invoke_viiiiiii,"invoke_viiiiiiiiii":invoke_viiiiiiiiii,"invoke_iii":invoke_iii,"invoke_iiiiii":invoke_iiiiii,"invoke_iij":invoke_iij,"invoke_viiiiii":invoke_viiiiii,"invoke_i":invoke_i,"invoke_jiii":invoke_jiii,"invoke_jiij":invoke_jiij,"invoke_jiiii":invoke_jiiii,"invoke_iiiii":invoke_iiiii,"invoke_iiiiij":invoke_iiiiij,"invoke_viii":invoke_viii,"invoke_viij":invoke_viij,"invoke_v":invoke_v,"invoke_iiiiiiiii":invoke_iiiiiiiii,"invoke_iiiiid":invoke_iiiiid,"invoke_viiii":invoke_viiii,"___syscall221":___syscall221,"_strftime":_strftime,"_pthread_cond_wait":_pthread_cond_wait,"___lock":___lock,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"_pthread_key_create":_pthread_key_create,"_abort":_abort,"___gxx_personality_v0":___gxx_personality_v0,"___assert_fail":___assert_fail,"___cxa_free_exception":___cxa_free_exception,"___cxa_find_matching_catch_2":___cxa_find_matching_catch_2,"___cxa_find_matching_catch":___cxa_find_matching_catch,"___buildEnvironment":___buildEnvironment,"__addDays":__addDays,"_strftime_l":_strftime_l,"___setErrNo":___setErrNo,"_llvm_eh_typeid_for":_llvm_eh_typeid_for,"___cxa_allocate_exception":___cxa_allocate_exception,"_emscripten_memcpy_big":_emscripten_memcpy_big,"___cxa_end_catch":___cxa_end_catch,"___resumeException":___resumeException,"___cxa_find_matching_catch_3":___cxa_find_matching_catch_3,"___cxa_begin_catch":___cxa_begin_catch,"_pthread_getspecific":_pthread_getspecific,"__arraySum":__arraySum,"___syscall91":___syscall91,"_pthread_once":_pthread_once,"_getenv":_getenv,"___map_file":___map_file,"___syscall54":___syscall54,"___unlock":___unlock,"__isLeapYear":__isLeapYear,"_pthread_setspecific":_pthread_setspecific,"___cxa_throw":___cxa_throw,"___cxa_rethrow":___cxa_rethrow,"___syscall6":___syscall6,"___syscall5":___syscall5,"___syscall140":___syscall140,"_pthread_mutex_init":_pthread_mutex_init,"___syscall145":___syscall145,"___syscall146":___syscall146,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX};var asm=Module["asm"](Module.asmGlobalArg,Module.asmLibraryArg,buffer);Module["asm"]=asm;var _sheDecG1=Module["_sheDecG1"]=(function(){return Module["asm"]["_sheDecG1"].apply(null,arguments)});var _sheMul=Module["_sheMul"]=(function(){return Module["asm"]["_sheMul"].apply(null,arguments)});var stackSave=Module["stackSave"]=(function(){return Module["asm"]["stackSave"].apply(null,arguments)});var _sheEncG2=Module["_sheEncG2"]=(function(){return Module["asm"]["_sheEncG2"].apply(null,arguments)});var _sheSetRangeForDLP=Module["_sheSetRangeForDLP"]=(function(){return Module["asm"]["_sheSetRangeForDLP"].apply(null,arguments)});var ___cxx_global_var_init_41=Module["___cxx_global_var_init_41"]=(function(){return Module["asm"]["___cxx_global_var_init_41"].apply(null,arguments)});var _shePublicKeyDeserialize=Module["_shePublicKeyDeserialize"]=(function(){return Module["asm"]["_shePublicKeyDeserialize"].apply(null,arguments)});var _sheReRandGT=Module["_sheReRandGT"]=(function(){return Module["asm"]["_sheReRandGT"].apply(null,arguments)});var _sheEncGT=Module["_sheEncGT"]=(function(){return Module["asm"]["_sheEncGT"].apply(null,arguments)});var _sheEnc32G2=Module["_sheEnc32G2"]=(function(){return Module["asm"]["_sheEnc32G2"].apply(null,arguments)});var _sheCipherTextG2Serialize=Module["_sheCipherTextG2Serialize"]=(function(){return Module["asm"]["_sheCipherTextG2Serialize"].apply(null,arguments)});var establishStackSpace=Module["establishStackSpace"]=(function(){return Module["asm"]["establishStackSpace"].apply(null,arguments)});var getTempRet0=Module["getTempRet0"]=(function(){return Module["asm"]["getTempRet0"].apply(null,arguments)});var _sheInit=Module["_sheInit"]=(function(){return Module["asm"]["_sheInit"].apply(null,arguments)});var ___cxx_global_var_init_38=Module["___cxx_global_var_init_38"]=(function(){return Module["asm"]["___cxx_global_var_init_38"].apply(null,arguments)});var _sheCipherTextG2Deserialize=Module["_sheCipherTextG2Deserialize"]=(function(){return Module["asm"]["_sheCipherTextG2Deserialize"].apply(null,arguments)});var _sheGetPublicKey=Module["_sheGetPublicKey"]=(function(){return Module["asm"]["_sheGetPublicKey"].apply(null,arguments)});var _sheSecretKeyDeserialize=Module["_sheSecretKeyDeserialize"]=(function(){return Module["asm"]["_sheSecretKeyDeserialize"].apply(null,arguments)});var _shePublicKeySerialize=Module["_shePublicKeySerialize"]=(function(){return Module["asm"]["_shePublicKeySerialize"].apply(null,arguments)});var _sheSubGT=Module["_sheSubGT"]=(function(){return Module["asm"]["_sheSubGT"].apply(null,arguments)});var stackRestore=Module["stackRestore"]=(function(){return Module["asm"]["stackRestore"].apply(null,arguments)});var _sheSecretKeySetByCSPRNG=Module["_sheSecretKeySetByCSPRNG"]=(function(){return Module["asm"]["_sheSecretKeySetByCSPRNG"].apply(null,arguments)});var _sheCipherTextG1Deserialize=Module["_sheCipherTextG1Deserialize"]=(function(){return Module["asm"]["_sheCipherTextG1Deserialize"].apply(null,arguments)});var _sheCipherTextGTDeserialize=Module["_sheCipherTextGTDeserialize"]=(function(){return Module["asm"]["_sheCipherTextGTDeserialize"].apply(null,arguments)});var _memset=Module["_memset"]=(function(){return Module["asm"]["_memset"].apply(null,arguments)});var _sbrk=Module["_sbrk"]=(function(){return Module["asm"]["_sbrk"].apply(null,arguments)});var ___cxx_global_var_init_48=Module["___cxx_global_var_init_48"]=(function(){return Module["asm"]["___cxx_global_var_init_48"].apply(null,arguments)});var _memcpy=Module["_memcpy"]=(function(){return Module["asm"]["_memcpy"].apply(null,arguments)});var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=(function(){return Module["asm"]["_llvm_bswap_i32"].apply(null,arguments)});var _sheAddGT=Module["_sheAddGT"]=(function(){return Module["asm"]["_sheAddGT"].apply(null,arguments)});var ___cxx_global_var_init_40=Module["___cxx_global_var_init_40"]=(function(){return Module["asm"]["___cxx_global_var_init_40"].apply(null,arguments)});var ___cxx_global_var_init_43=Module["___cxx_global_var_init_43"]=(function(){return Module["asm"]["___cxx_global_var_init_43"].apply(null,arguments)});var ___cxx_global_var_init_42=Module["___cxx_global_var_init_42"]=(function(){return Module["asm"]["___cxx_global_var_init_42"].apply(null,arguments)});var ___cxx_global_var_init_45=Module["___cxx_global_var_init_45"]=(function(){return Module["asm"]["___cxx_global_var_init_45"].apply(null,arguments)});var ___cxx_global_var_init_44=Module["___cxx_global_var_init_44"]=(function(){return Module["asm"]["___cxx_global_var_init_44"].apply(null,arguments)});var ___cxx_global_var_init_47=Module["___cxx_global_var_init_47"]=(function(){return Module["asm"]["___cxx_global_var_init_47"].apply(null,arguments)});var ___cxx_global_var_init_46=Module["___cxx_global_var_init_46"]=(function(){return Module["asm"]["___cxx_global_var_init_46"].apply(null,arguments)});var _sheSubG2=Module["_sheSubG2"]=(function(){return Module["asm"]["_sheSubG2"].apply(null,arguments)});var _sheSubG1=Module["_sheSubG1"]=(function(){return Module["asm"]["_sheSubG1"].apply(null,arguments)});var _sheAddG2=Module["_sheAddG2"]=(function(){return Module["asm"]["_sheAddG2"].apply(null,arguments)});var __GLOBAL__sub_I_she_c256_cpp=Module["__GLOBAL__sub_I_she_c256_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_she_c256_cpp"].apply(null,arguments)});var setTempRet0=Module["setTempRet0"]=(function(){return Module["asm"]["setTempRet0"].apply(null,arguments)});var ___cxx_global_var_init_37=Module["___cxx_global_var_init_37"]=(function(){return Module["asm"]["___cxx_global_var_init_37"].apply(null,arguments)});var ___cxx_global_var_init_39=Module["___cxx_global_var_init_39"]=(function(){return Module["asm"]["___cxx_global_var_init_39"].apply(null,arguments)});var _pthread_mutex_unlock=Module["_pthread_mutex_unlock"]=(function(){return Module["asm"]["_pthread_mutex_unlock"].apply(null,arguments)});var _sheEnc32G1=Module["_sheEnc32G1"]=(function(){return Module["asm"]["_sheEnc32G1"].apply(null,arguments)});var runPostSets=Module["runPostSets"]=(function(){return Module["asm"]["runPostSets"].apply(null,arguments)});var ___cxx_global_var_init_52=Module["___cxx_global_var_init_52"]=(function(){return Module["asm"]["___cxx_global_var_init_52"].apply(null,arguments)});var _sheCipherTextG1Serialize=Module["_sheCipherTextG1Serialize"]=(function(){return Module["asm"]["_sheCipherTextG1Serialize"].apply(null,arguments)});var _sheSetRangeForG1DLP=Module["_sheSetRangeForG1DLP"]=(function(){return Module["asm"]["_sheSetRangeForG1DLP"].apply(null,arguments)});var _sheMulG1=Module["_sheMulG1"]=(function(){return Module["asm"]["_sheMulG1"].apply(null,arguments)});var ___cxx_global_var_init_49=Module["___cxx_global_var_init_49"]=(function(){return Module["asm"]["___cxx_global_var_init_49"].apply(null,arguments)});var stackAlloc=Module["stackAlloc"]=(function(){return Module["asm"]["stackAlloc"].apply(null,arguments)});var _pthread_cond_broadcast=Module["_pthread_cond_broadcast"]=(function(){return Module["asm"]["_pthread_cond_broadcast"].apply(null,arguments)});var _sheMulG2=Module["_sheMulG2"]=(function(){return Module["asm"]["_sheMulG2"].apply(null,arguments)});var _sheAddG1=Module["_sheAddG1"]=(function(){return Module["asm"]["_sheAddG1"].apply(null,arguments)});var ___errno_location=Module["___errno_location"]=(function(){return Module["asm"]["___errno_location"].apply(null,arguments)});var _sheCipherTextGTSerialize=Module["_sheCipherTextGTSerialize"]=(function(){return Module["asm"]["_sheCipherTextGTSerialize"].apply(null,arguments)});var ___cxa_can_catch=Module["___cxa_can_catch"]=(function(){return Module["asm"]["___cxa_can_catch"].apply(null,arguments)});var _free=Module["_free"]=(function(){return Module["asm"]["_free"].apply(null,arguments)});var _sheDecGT=Module["_sheDecGT"]=(function(){return Module["asm"]["_sheDecGT"].apply(null,arguments)});var setThrew=Module["setThrew"]=(function(){return Module["asm"]["setThrew"].apply(null,arguments)});var _sheEncG1=Module["_sheEncG1"]=(function(){return Module["asm"]["_sheEncG1"].apply(null,arguments)});var _sheReRandG1=Module["_sheReRandG1"]=(function(){return Module["asm"]["_sheReRandG1"].apply(null,arguments)});var _sheReRandG2=Module["_sheReRandG2"]=(function(){return Module["asm"]["_sheReRandG2"].apply(null,arguments)});var _sheMulGT=Module["_sheMulGT"]=(function(){return Module["asm"]["_sheMulGT"].apply(null,arguments)});var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=(function(){return Module["asm"]["_emscripten_get_global_libc"].apply(null,arguments)});var ___cxx_global_var_init_57=Module["___cxx_global_var_init_57"]=(function(){return Module["asm"]["___cxx_global_var_init_57"].apply(null,arguments)});var _malloc=Module["_malloc"]=(function(){return Module["asm"]["_malloc"].apply(null,arguments)});var _sheEnc32GT=Module["_sheEnc32GT"]=(function(){return Module["asm"]["_sheEnc32GT"].apply(null,arguments)});var _pthread_mutex_lock=Module["_pthread_mutex_lock"]=(function(){return Module["asm"]["_pthread_mutex_lock"].apply(null,arguments)});var _sheSetRangeForGTDLP=Module["_sheSetRangeForGTDLP"]=(function(){return Module["asm"]["_sheSetRangeForGTDLP"].apply(null,arguments)});var ___cxx_global_var_init_54=Module["___cxx_global_var_init_54"]=(function(){return Module["asm"]["___cxx_global_var_init_54"].apply(null,arguments)});var _memmove=Module["_memmove"]=(function(){return Module["asm"]["_memmove"].apply(null,arguments)});var _sheSecretKeySerialize=Module["_sheSecretKeySerialize"]=(function(){return Module["asm"]["_sheSecretKeySerialize"].apply(null,arguments)});var ___cxx_global_var_init_53=Module["___cxx_global_var_init_53"]=(function(){return Module["asm"]["___cxx_global_var_init_53"].apply(null,arguments)});var ___cxx_global_var_init_50=Module["___cxx_global_var_init_50"]=(function(){return Module["asm"]["___cxx_global_var_init_50"].apply(null,arguments)});var ___cxx_global_var_init_51=Module["___cxx_global_var_init_51"]=(function(){return Module["asm"]["___cxx_global_var_init_51"].apply(null,arguments)});var ___cxx_global_var_init_56=Module["___cxx_global_var_init_56"]=(function(){return Module["asm"]["___cxx_global_var_init_56"].apply(null,arguments)});var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=(function(){return Module["asm"]["___cxa_is_pointer_type"].apply(null,arguments)});var _sheSetRangeForG2DLP=Module["_sheSetRangeForG2DLP"]=(function(){return Module["asm"]["_sheSetRangeForG2DLP"].apply(null,arguments)});var ___cxx_global_var_init_55=Module["___cxx_global_var_init_55"]=(function(){return Module["asm"]["___cxx_global_var_init_55"].apply(null,arguments)});var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiii"].apply(null,arguments)});var dynCall_iiiiiid=Module["dynCall_iiiiiid"]=(function(){return Module["asm"]["dynCall_iiiiiid"].apply(null,arguments)});var dynCall_viiiii=Module["dynCall_viiiii"]=(function(){return Module["asm"]["dynCall_viiiii"].apply(null,arguments)});var dynCall_vi=Module["dynCall_vi"]=(function(){return Module["asm"]["dynCall_vi"].apply(null,arguments)});var dynCall_vii=Module["dynCall_vii"]=(function(){return Module["asm"]["dynCall_vii"].apply(null,arguments)});var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiiiii"].apply(null,arguments)});var dynCall_viiiijii=Module["dynCall_viiiijii"]=(function(){return Module["asm"]["dynCall_viiiijii"].apply(null,arguments)});var dynCall_ii=Module["dynCall_ii"]=(function(){return Module["asm"]["dynCall_ii"].apply(null,arguments)});var dynCall_viijii=Module["dynCall_viijii"]=(function(){return Module["asm"]["dynCall_viijii"].apply(null,arguments)});var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiiiiii"].apply(null,arguments)});var dynCall_jii=Module["dynCall_jii"]=(function(){return Module["asm"]["dynCall_jii"].apply(null,arguments)});var dynCall_iiii=Module["dynCall_iiii"]=(function(){return Module["asm"]["dynCall_iiii"].apply(null,arguments)});var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiiiiiiiiiii"].apply(null,arguments)});var dynCall_viiji=Module["dynCall_viiji"]=(function(){return Module["asm"]["dynCall_viiji"].apply(null,arguments)});var dynCall_diii=Module["dynCall_diii"]=(function(){return Module["asm"]["dynCall_diii"].apply(null,arguments)});var dynCall_fiii=Module["dynCall_fiii"]=(function(){return Module["asm"]["dynCall_fiii"].apply(null,arguments)});var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiii"].apply(null,arguments)});var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiiiiiii"].apply(null,arguments)});var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiii"].apply(null,arguments)});var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiiiiii"].apply(null,arguments)});var dynCall_iii=Module["dynCall_iii"]=(function(){return Module["asm"]["dynCall_iii"].apply(null,arguments)});var dynCall_iiiiii=Module["dynCall_iiiiii"]=(function(){return Module["asm"]["dynCall_iiiiii"].apply(null,arguments)});var dynCall_iij=Module["dynCall_iij"]=(function(){return Module["asm"]["dynCall_iij"].apply(null,arguments)});var dynCall_viiiiii=Module["dynCall_viiiiii"]=(function(){return Module["asm"]["dynCall_viiiiii"].apply(null,arguments)});var dynCall_i=Module["dynCall_i"]=(function(){return Module["asm"]["dynCall_i"].apply(null,arguments)});var dynCall_jiii=Module["dynCall_jiii"]=(function(){return Module["asm"]["dynCall_jiii"].apply(null,arguments)});var dynCall_jiij=Module["dynCall_jiij"]=(function(){return Module["asm"]["dynCall_jiij"].apply(null,arguments)});var dynCall_jiiii=Module["dynCall_jiiii"]=(function(){return Module["asm"]["dynCall_jiiii"].apply(null,arguments)});var dynCall_iiiii=Module["dynCall_iiiii"]=(function(){return Module["asm"]["dynCall_iiiii"].apply(null,arguments)});var dynCall_iiiiij=Module["dynCall_iiiiij"]=(function(){return Module["asm"]["dynCall_iiiiij"].apply(null,arguments)});var dynCall_viii=Module["dynCall_viii"]=(function(){return Module["asm"]["dynCall_viii"].apply(null,arguments)});var dynCall_viij=Module["dynCall_viij"]=(function(){return Module["asm"]["dynCall_viij"].apply(null,arguments)});var dynCall_v=Module["dynCall_v"]=(function(){return Module["asm"]["dynCall_v"].apply(null,arguments)});var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiii"].apply(null,arguments)});var dynCall_iiiiid=Module["dynCall_iiiiid"]=(function(){return Module["asm"]["dynCall_iiiiid"].apply(null,arguments)});var dynCall_viiii=Module["dynCall_viiii"]=(function(){return Module["asm"]["dynCall_viiii"].apply(null,arguments)});Runtime.stackAlloc=Module["stackAlloc"];Runtime.stackSave=Module["stackSave"];Runtime.stackRestore=Module["stackRestore"];Runtime.establishStackSpace=Module["establishStackSpace"];Runtime.setTempRet0=Module["setTempRet0"];Runtime.getTempRet0=Module["getTempRet0"];Module["asm"]=asm;if(memoryInitializer){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,Runtime.GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,Runtime.GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")});function doBrowserLoad(){Module["readAsync"](memoryInitializer,applyMemoryInitializer,(function(){throw"could not load memory initializer "+memoryInitializer}))}if(Module["memoryInitializerRequest"]){function useRequest(){var request=Module["memoryInitializerRequest"];if(request.status!==200&&request.status!==0){console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}applyMemoryInitializer(request.response)}if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}Module["then"]=(function(func){if(Module["calledRun"]){func(Module)}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=(function(){if(old)old();func(Module)})}return Module});function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}Module["noExitRuntime"]=true;run() +var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=console.log;if(!Module["printErr"])Module["printErr"]=console.warn;var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function shell_read(){throw"no read() available"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["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)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function shell_print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function shell_printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}if(!Module["quit"]){Module["quit"]=(function(status,toThrow){throw toThrow})}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value;return value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*4294967296:+(low>>>0)+ +(high|0)*4294967296;return ret}),GLOBAL_BASE:1024,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;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 if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"]||Module["__cxa_demangle"];if(__cxa_demangle_func){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}Module["stackTrace"]=stackTrace;var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}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)}Module["addOnPreRun"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;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}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var lastChar,end;if(dontAddNull){end=buffer+lengthBytesUTF8(string);lastChar=HEAP8[end]}stringToUTF8(string,buffer,Infinity);if(dontAddNull)HEAP8[end]=lastChar}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["fround"]){var froundBuffer=new Float32Array(1);Math["fround"]=(function(x){froundBuffer[0]=x;return froundBuffer[0]})}Math.fround=Math["fround"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;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["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;function integrateWasmJS(){var method=Module["wasmJSMethod"]||"native-wasm";Module["wasmJSMethod"]=method;var wasmTextFile=Module["wasmTextFile"]||"mclshe.wast";var wasmBinaryFile=Module["wasmBinaryFile"]||"mclshe.wasm";var asmjsCodeFile=Module["asmjsCodeFile"]||"mclshe.temp.asm.js";if(typeof Module["locateFile"]==="function"){wasmTextFile=Module["locateFile"](wasmTextFile);wasmBinaryFile=Module["locateFile"](wasmBinaryFile);asmjsCodeFile=Module["locateFile"](asmjsCodeFile)}var wasmPageSize=64*1024;var asm2wasmImports={"f64-rem":(function(x,y){return x%y}),"f64-to-int":(function(x){return x|0}),"i32s-div":(function(x,y){return(x|0)/(y|0)|0}),"i32u-div":(function(x,y){return(x>>>0)/(y>>>0)>>>0}),"i32s-rem":(function(x,y){return(x|0)%(y|0)|0}),"i32u-rem":(function(x,y){return(x>>>0)%(y>>>0)>>>0}),"debugger":(function(){debugger})};var info={"global":null,"env":null,"asm2wasm":asm2wasmImports,"parent":Module};var exports=null;function lookupImport(mod,base){var lookup=info;if(mod.indexOf(".")<0){lookup=(lookup||{})[mod]}else{var parts=mod.split(".");lookup=(lookup||{})[parts[0]];lookup=(lookup||{})[parts[1]]}if(base){lookup=(lookup||{})[base]}if(lookup===undefined){abort("bad lookupImport to ("+mod+")."+base)}return lookup}function mergeMemory(newBuffer){var oldBuffer=Module["buffer"];if(newBuffer.byteLength=0||Module["wasmJSMethod"].indexOf("interpret-asm2wasm")>=0?"mclshe.js.mem":null;var STATIC_BUMP=34080;Module["STATIC_BASE"]=STATIC_BASE;Module["STATIC_BUMP"]=STATIC_BUMP;var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module["dynCall_vi"](info.destructor,ptr)}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(Runtime.setTempRet0(0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(Runtime.setTempRet0(0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(Runtime.setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(Runtime.setTempRet0(throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr}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?Pointer_stringify(tm_zone):""};var pattern=Pointer_stringify(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"};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){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()||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)}function _abort(){Module["abort"]()}function ___cxa_free_exception(ptr){try{return _free(ptr)}catch(e){}}function ___cxa_end_catch(){Module["setThrew"](0);var ptr=EXCEPTIONS.caught.pop();if(ptr){EXCEPTIONS.decRef(EXCEPTIONS.deAdjust(ptr));EXCEPTIONS.last=0}}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1}function ___lock(){}function ___unlock(){}var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}var PTHREAD_SPECIFIC_NEXT_KEY=1;var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _pthread_mutex_init(){}var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),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.resolve(from).substr(1);to=PATH.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){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](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(ERRNO_CODES.EPERM)}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;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}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(ERRNO_CODES.ELOOP)}}}}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 err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,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){if(!FS.FSNode){FS.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});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.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)})}})}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 ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}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 err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR}}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(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}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(ERRNO_CODES.ESPIPE)})},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){console.log("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(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}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(ERRNO_CODES.EBUSY)}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(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}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(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}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;console.log("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(ERRNO_CODES.EIO)}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(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,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-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;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-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}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:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function ___cxa_allocate_exception(size){return _malloc(size)}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21506:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _environ=STATICTOP;STATICTOP+=16;function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]=ENV["LOGNAME"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]="C";ENV["_"]=Module["thisProgram"];poolPtr=allocate(TOTAL_ENV_SIZE,"i8",ALLOC_STATIC);envPtr=allocate(MAX_ENV_VALUES*4,"i8*",ALLOC_STATIC);HEAP32[envPtr>>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]==="string"){var line=key+"="+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocate(intArrayFromString(ENV[name]),"i8",ALLOC_NORMAL);return _getenv.ret}function ___map_file(pathname,size){___setErrNo(ERRNO_CODES.EPERM);return-1}function ___cxa_find_matching_catch_2(){return ___cxa_find_matching_catch.apply(null,arguments)}function ___cxa_find_matching_catch_3(){return ___cxa_find_matching_catch.apply(null,arguments)}function _llvm_eh_typeid_for(type){return type}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function ___gxx_personality_v0(){}function _pthread_cond_wait(){return 0}function ___cxa_rethrow(){var ptr=EXCEPTIONS.caught.pop();if(!EXCEPTIONS.infos[ptr].rethrown){EXCEPTIONS.caught.push(ptr);EXCEPTIONS.infos[ptr].rethrown=true}EXCEPTIONS.last=ptr;throw ptr}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}___buildEnvironment(ENV);DYNAMICTOP_PTR=allocate(1,"i32",ALLOC_STATIC);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;Module["wasmTableSize"]=1078;Module["wasmMaxTableSize"]=1078;function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){try{return Module["dynCall_iiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiid(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiid"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vii(index,a1,a2){try{Module["dynCall_vii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){try{return Module["dynCall_iiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiijii(index,a1,a2,a3,a4,a5,a6,a7,a8){try{Module["dynCall_viiiijii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viijii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){try{return Module["dynCall_iiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jii(index,a1,a2){try{return Module["dynCall_jii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){try{Module["dynCall_viiiiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiji(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiji"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_diii(index,a1,a2,a3){try{return Module["dynCall_diii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiii(index,a1,a2,a3){try{return Module["dynCall_fiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12){try{return Module["dynCall_iiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){try{Module["dynCall_viiiiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){try{Module["dynCall_viiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){try{return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iij(index,a1,a2,a3){try{return Module["dynCall_iij"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_i(index){try{return Module["dynCall_i"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jiii(index,a1,a2,a3){try{return Module["dynCall_jiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jiij(index,a1,a2,a3,a4){try{return Module["dynCall_jiij"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){try{return Module["dynCall_jiiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){try{return Module["dynCall_iiiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiij(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiij"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viij(index,a1,a2,a3,a4){try{Module["dynCall_viij"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){try{return Module["dynCall_iiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){try{return Module["dynCall_iiiiid"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_iiiiiiii":invoke_iiiiiiii,"invoke_iiiiiid":invoke_iiiiiid,"invoke_viiiii":invoke_viiiii,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_iiiiiiiiiii":invoke_iiiiiiiiiii,"invoke_viiiijii":invoke_viiiijii,"invoke_ii":invoke_ii,"invoke_viijii":invoke_viijii,"invoke_iiiiiiiiiiii":invoke_iiiiiiiiiiii,"invoke_jii":invoke_jii,"invoke_iiii":invoke_iiii,"invoke_viiiiiiiiiiiiiii":invoke_viiiiiiiiiiiiiii,"invoke_viiji":invoke_viiji,"invoke_diii":invoke_diii,"invoke_fiii":invoke_fiii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_iiiiiiiiiiiii":invoke_iiiiiiiiiiiii,"invoke_viiiiiii":invoke_viiiiiii,"invoke_viiiiiiiiii":invoke_viiiiiiiiii,"invoke_iii":invoke_iii,"invoke_iiiiii":invoke_iiiiii,"invoke_iij":invoke_iij,"invoke_viiiiii":invoke_viiiiii,"invoke_i":invoke_i,"invoke_jiii":invoke_jiii,"invoke_jiij":invoke_jiij,"invoke_jiiii":invoke_jiiii,"invoke_iiiii":invoke_iiiii,"invoke_iiiiij":invoke_iiiiij,"invoke_viii":invoke_viii,"invoke_viij":invoke_viij,"invoke_v":invoke_v,"invoke_iiiiiiiii":invoke_iiiiiiiii,"invoke_iiiiid":invoke_iiiiid,"invoke_viiii":invoke_viiii,"___syscall221":___syscall221,"_strftime":_strftime,"_pthread_cond_wait":_pthread_cond_wait,"___lock":___lock,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"_pthread_key_create":_pthread_key_create,"_abort":_abort,"___gxx_personality_v0":___gxx_personality_v0,"___assert_fail":___assert_fail,"___cxa_free_exception":___cxa_free_exception,"___cxa_find_matching_catch_2":___cxa_find_matching_catch_2,"___cxa_find_matching_catch":___cxa_find_matching_catch,"___buildEnvironment":___buildEnvironment,"__addDays":__addDays,"_strftime_l":_strftime_l,"___setErrNo":___setErrNo,"_llvm_eh_typeid_for":_llvm_eh_typeid_for,"___cxa_allocate_exception":___cxa_allocate_exception,"_emscripten_memcpy_big":_emscripten_memcpy_big,"___cxa_end_catch":___cxa_end_catch,"___resumeException":___resumeException,"___cxa_find_matching_catch_3":___cxa_find_matching_catch_3,"___cxa_begin_catch":___cxa_begin_catch,"_pthread_getspecific":_pthread_getspecific,"__arraySum":__arraySum,"___syscall91":___syscall91,"_pthread_once":_pthread_once,"_getenv":_getenv,"___map_file":___map_file,"___syscall54":___syscall54,"___unlock":___unlock,"__isLeapYear":__isLeapYear,"_pthread_setspecific":_pthread_setspecific,"___cxa_throw":___cxa_throw,"___cxa_rethrow":___cxa_rethrow,"___syscall6":___syscall6,"___syscall5":___syscall5,"___syscall140":___syscall140,"_pthread_mutex_init":_pthread_mutex_init,"___syscall145":___syscall145,"___syscall146":___syscall146,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX};var asm=Module["asm"](Module.asmGlobalArg,Module.asmLibraryArg,buffer);Module["asm"]=asm;var _sheDecG1=Module["_sheDecG1"]=(function(){return Module["asm"]["_sheDecG1"].apply(null,arguments)});var _sheMul=Module["_sheMul"]=(function(){return Module["asm"]["_sheMul"].apply(null,arguments)});var stackSave=Module["stackSave"]=(function(){return Module["asm"]["stackSave"].apply(null,arguments)});var _sheDecG2=Module["_sheDecG2"]=(function(){return Module["asm"]["_sheDecG2"].apply(null,arguments)});var _sheSetRangeForDLP=Module["_sheSetRangeForDLP"]=(function(){return Module["asm"]["_sheSetRangeForDLP"].apply(null,arguments)});var ___cxx_global_var_init_41=Module["___cxx_global_var_init_41"]=(function(){return Module["asm"]["___cxx_global_var_init_41"].apply(null,arguments)});var _shePublicKeyDeserialize=Module["_shePublicKeyDeserialize"]=(function(){return Module["asm"]["_shePublicKeyDeserialize"].apply(null,arguments)});var _sheReRandGT=Module["_sheReRandGT"]=(function(){return Module["asm"]["_sheReRandGT"].apply(null,arguments)});var _sheEncGT=Module["_sheEncGT"]=(function(){return Module["asm"]["_sheEncGT"].apply(null,arguments)});var _sheEnc32G2=Module["_sheEnc32G2"]=(function(){return Module["asm"]["_sheEnc32G2"].apply(null,arguments)});var _sheCipherTextG2Serialize=Module["_sheCipherTextG2Serialize"]=(function(){return Module["asm"]["_sheCipherTextG2Serialize"].apply(null,arguments)});var establishStackSpace=Module["establishStackSpace"]=(function(){return Module["asm"]["establishStackSpace"].apply(null,arguments)});var getTempRet0=Module["getTempRet0"]=(function(){return Module["asm"]["getTempRet0"].apply(null,arguments)});var _sheInit=Module["_sheInit"]=(function(){return Module["asm"]["_sheInit"].apply(null,arguments)});var ___cxx_global_var_init_38=Module["___cxx_global_var_init_38"]=(function(){return Module["asm"]["___cxx_global_var_init_38"].apply(null,arguments)});var _sheCipherTextG2Deserialize=Module["_sheCipherTextG2Deserialize"]=(function(){return Module["asm"]["_sheCipherTextG2Deserialize"].apply(null,arguments)});var _sheGetPublicKey=Module["_sheGetPublicKey"]=(function(){return Module["asm"]["_sheGetPublicKey"].apply(null,arguments)});var _sheSecretKeyDeserialize=Module["_sheSecretKeyDeserialize"]=(function(){return Module["asm"]["_sheSecretKeyDeserialize"].apply(null,arguments)});var _shePublicKeySerialize=Module["_shePublicKeySerialize"]=(function(){return Module["asm"]["_shePublicKeySerialize"].apply(null,arguments)});var _sheSubGT=Module["_sheSubGT"]=(function(){return Module["asm"]["_sheSubGT"].apply(null,arguments)});var stackRestore=Module["stackRestore"]=(function(){return Module["asm"]["stackRestore"].apply(null,arguments)});var _sheSecretKeySetByCSPRNG=Module["_sheSecretKeySetByCSPRNG"]=(function(){return Module["asm"]["_sheSecretKeySetByCSPRNG"].apply(null,arguments)});var _sheCipherTextG1Deserialize=Module["_sheCipherTextG1Deserialize"]=(function(){return Module["asm"]["_sheCipherTextG1Deserialize"].apply(null,arguments)});var _sheCipherTextGTDeserialize=Module["_sheCipherTextGTDeserialize"]=(function(){return Module["asm"]["_sheCipherTextGTDeserialize"].apply(null,arguments)});var _memset=Module["_memset"]=(function(){return Module["asm"]["_memset"].apply(null,arguments)});var _sbrk=Module["_sbrk"]=(function(){return Module["asm"]["_sbrk"].apply(null,arguments)});var ___cxx_global_var_init_48=Module["___cxx_global_var_init_48"]=(function(){return Module["asm"]["___cxx_global_var_init_48"].apply(null,arguments)});var _memcpy=Module["_memcpy"]=(function(){return Module["asm"]["_memcpy"].apply(null,arguments)});var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=(function(){return Module["asm"]["_llvm_bswap_i32"].apply(null,arguments)});var _sheAddGT=Module["_sheAddGT"]=(function(){return Module["asm"]["_sheAddGT"].apply(null,arguments)});var ___cxx_global_var_init_40=Module["___cxx_global_var_init_40"]=(function(){return Module["asm"]["___cxx_global_var_init_40"].apply(null,arguments)});var ___cxx_global_var_init_43=Module["___cxx_global_var_init_43"]=(function(){return Module["asm"]["___cxx_global_var_init_43"].apply(null,arguments)});var ___cxx_global_var_init_42=Module["___cxx_global_var_init_42"]=(function(){return Module["asm"]["___cxx_global_var_init_42"].apply(null,arguments)});var ___cxx_global_var_init_45=Module["___cxx_global_var_init_45"]=(function(){return Module["asm"]["___cxx_global_var_init_45"].apply(null,arguments)});var ___cxx_global_var_init_44=Module["___cxx_global_var_init_44"]=(function(){return Module["asm"]["___cxx_global_var_init_44"].apply(null,arguments)});var ___cxx_global_var_init_47=Module["___cxx_global_var_init_47"]=(function(){return Module["asm"]["___cxx_global_var_init_47"].apply(null,arguments)});var ___cxx_global_var_init_46=Module["___cxx_global_var_init_46"]=(function(){return Module["asm"]["___cxx_global_var_init_46"].apply(null,arguments)});var _sheSubG2=Module["_sheSubG2"]=(function(){return Module["asm"]["_sheSubG2"].apply(null,arguments)});var _sheSubG1=Module["_sheSubG1"]=(function(){return Module["asm"]["_sheSubG1"].apply(null,arguments)});var _sheAddG2=Module["_sheAddG2"]=(function(){return Module["asm"]["_sheAddG2"].apply(null,arguments)});var __GLOBAL__sub_I_she_c256_cpp=Module["__GLOBAL__sub_I_she_c256_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_she_c256_cpp"].apply(null,arguments)});var setTempRet0=Module["setTempRet0"]=(function(){return Module["asm"]["setTempRet0"].apply(null,arguments)});var ___cxx_global_var_init_36=Module["___cxx_global_var_init_36"]=(function(){return Module["asm"]["___cxx_global_var_init_36"].apply(null,arguments)});var ___cxx_global_var_init_37=Module["___cxx_global_var_init_37"]=(function(){return Module["asm"]["___cxx_global_var_init_37"].apply(null,arguments)});var ___cxx_global_var_init_39=Module["___cxx_global_var_init_39"]=(function(){return Module["asm"]["___cxx_global_var_init_39"].apply(null,arguments)});var _pthread_mutex_unlock=Module["_pthread_mutex_unlock"]=(function(){return Module["asm"]["_pthread_mutex_unlock"].apply(null,arguments)});var _sheEnc32G1=Module["_sheEnc32G1"]=(function(){return Module["asm"]["_sheEnc32G1"].apply(null,arguments)});var runPostSets=Module["runPostSets"]=(function(){return Module["asm"]["runPostSets"].apply(null,arguments)});var ___cxx_global_var_init_52=Module["___cxx_global_var_init_52"]=(function(){return Module["asm"]["___cxx_global_var_init_52"].apply(null,arguments)});var _sheCipherTextG1Serialize=Module["_sheCipherTextG1Serialize"]=(function(){return Module["asm"]["_sheCipherTextG1Serialize"].apply(null,arguments)});var _sheSetRangeForG1DLP=Module["_sheSetRangeForG1DLP"]=(function(){return Module["asm"]["_sheSetRangeForG1DLP"].apply(null,arguments)});var _sheMulG1=Module["_sheMulG1"]=(function(){return Module["asm"]["_sheMulG1"].apply(null,arguments)});var ___cxx_global_var_init_49=Module["___cxx_global_var_init_49"]=(function(){return Module["asm"]["___cxx_global_var_init_49"].apply(null,arguments)});var stackAlloc=Module["stackAlloc"]=(function(){return Module["asm"]["stackAlloc"].apply(null,arguments)});var _pthread_cond_broadcast=Module["_pthread_cond_broadcast"]=(function(){return Module["asm"]["_pthread_cond_broadcast"].apply(null,arguments)});var _sheMulG2=Module["_sheMulG2"]=(function(){return Module["asm"]["_sheMulG2"].apply(null,arguments)});var _sheAddG1=Module["_sheAddG1"]=(function(){return Module["asm"]["_sheAddG1"].apply(null,arguments)});var ___errno_location=Module["___errno_location"]=(function(){return Module["asm"]["___errno_location"].apply(null,arguments)});var _sheCipherTextGTSerialize=Module["_sheCipherTextGTSerialize"]=(function(){return Module["asm"]["_sheCipherTextGTSerialize"].apply(null,arguments)});var ___cxa_can_catch=Module["___cxa_can_catch"]=(function(){return Module["asm"]["___cxa_can_catch"].apply(null,arguments)});var _free=Module["_free"]=(function(){return Module["asm"]["_free"].apply(null,arguments)});var _sheDecGT=Module["_sheDecGT"]=(function(){return Module["asm"]["_sheDecGT"].apply(null,arguments)});var setThrew=Module["setThrew"]=(function(){return Module["asm"]["setThrew"].apply(null,arguments)});var _sheEncG1=Module["_sheEncG1"]=(function(){return Module["asm"]["_sheEncG1"].apply(null,arguments)});var _sheReRandG1=Module["_sheReRandG1"]=(function(){return Module["asm"]["_sheReRandG1"].apply(null,arguments)});var _sheReRandG2=Module["_sheReRandG2"]=(function(){return Module["asm"]["_sheReRandG2"].apply(null,arguments)});var _sheMulGT=Module["_sheMulGT"]=(function(){return Module["asm"]["_sheMulGT"].apply(null,arguments)});var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=(function(){return Module["asm"]["_emscripten_get_global_libc"].apply(null,arguments)});var _sheEncG2=Module["_sheEncG2"]=(function(){return Module["asm"]["_sheEncG2"].apply(null,arguments)});var _malloc=Module["_malloc"]=(function(){return Module["asm"]["_malloc"].apply(null,arguments)});var _sheEnc32GT=Module["_sheEnc32GT"]=(function(){return Module["asm"]["_sheEnc32GT"].apply(null,arguments)});var _pthread_mutex_lock=Module["_pthread_mutex_lock"]=(function(){return Module["asm"]["_pthread_mutex_lock"].apply(null,arguments)});var _sheSetRangeForGTDLP=Module["_sheSetRangeForGTDLP"]=(function(){return Module["asm"]["_sheSetRangeForGTDLP"].apply(null,arguments)});var ___cxx_global_var_init_54=Module["___cxx_global_var_init_54"]=(function(){return Module["asm"]["___cxx_global_var_init_54"].apply(null,arguments)});var _memmove=Module["_memmove"]=(function(){return Module["asm"]["_memmove"].apply(null,arguments)});var _sheSecretKeySerialize=Module["_sheSecretKeySerialize"]=(function(){return Module["asm"]["_sheSecretKeySerialize"].apply(null,arguments)});var ___cxx_global_var_init_53=Module["___cxx_global_var_init_53"]=(function(){return Module["asm"]["___cxx_global_var_init_53"].apply(null,arguments)});var ___cxx_global_var_init_50=Module["___cxx_global_var_init_50"]=(function(){return Module["asm"]["___cxx_global_var_init_50"].apply(null,arguments)});var ___cxx_global_var_init_51=Module["___cxx_global_var_init_51"]=(function(){return Module["asm"]["___cxx_global_var_init_51"].apply(null,arguments)});var ___cxx_global_var_init_56=Module["___cxx_global_var_init_56"]=(function(){return Module["asm"]["___cxx_global_var_init_56"].apply(null,arguments)});var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=(function(){return Module["asm"]["___cxa_is_pointer_type"].apply(null,arguments)});var _sheSetRangeForG2DLP=Module["_sheSetRangeForG2DLP"]=(function(){return Module["asm"]["_sheSetRangeForG2DLP"].apply(null,arguments)});var ___cxx_global_var_init_55=Module["___cxx_global_var_init_55"]=(function(){return Module["asm"]["___cxx_global_var_init_55"].apply(null,arguments)});var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiii"].apply(null,arguments)});var dynCall_iiiiiid=Module["dynCall_iiiiiid"]=(function(){return Module["asm"]["dynCall_iiiiiid"].apply(null,arguments)});var dynCall_viiiii=Module["dynCall_viiiii"]=(function(){return Module["asm"]["dynCall_viiiii"].apply(null,arguments)});var dynCall_vi=Module["dynCall_vi"]=(function(){return Module["asm"]["dynCall_vi"].apply(null,arguments)});var dynCall_vii=Module["dynCall_vii"]=(function(){return Module["asm"]["dynCall_vii"].apply(null,arguments)});var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiiiii"].apply(null,arguments)});var dynCall_viiiijii=Module["dynCall_viiiijii"]=(function(){return Module["asm"]["dynCall_viiiijii"].apply(null,arguments)});var dynCall_ii=Module["dynCall_ii"]=(function(){return Module["asm"]["dynCall_ii"].apply(null,arguments)});var dynCall_viijii=Module["dynCall_viijii"]=(function(){return Module["asm"]["dynCall_viijii"].apply(null,arguments)});var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiiiiii"].apply(null,arguments)});var dynCall_jii=Module["dynCall_jii"]=(function(){return Module["asm"]["dynCall_jii"].apply(null,arguments)});var dynCall_iiii=Module["dynCall_iiii"]=(function(){return Module["asm"]["dynCall_iiii"].apply(null,arguments)});var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiiiiiiiiiii"].apply(null,arguments)});var dynCall_viiji=Module["dynCall_viiji"]=(function(){return Module["asm"]["dynCall_viiji"].apply(null,arguments)});var dynCall_diii=Module["dynCall_diii"]=(function(){return Module["asm"]["dynCall_diii"].apply(null,arguments)});var dynCall_fiii=Module["dynCall_fiii"]=(function(){return Module["asm"]["dynCall_fiii"].apply(null,arguments)});var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiii"].apply(null,arguments)});var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiiiiiii"].apply(null,arguments)});var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiii"].apply(null,arguments)});var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiiiiii"].apply(null,arguments)});var dynCall_iii=Module["dynCall_iii"]=(function(){return Module["asm"]["dynCall_iii"].apply(null,arguments)});var dynCall_iiiiii=Module["dynCall_iiiiii"]=(function(){return Module["asm"]["dynCall_iiiiii"].apply(null,arguments)});var dynCall_iij=Module["dynCall_iij"]=(function(){return Module["asm"]["dynCall_iij"].apply(null,arguments)});var dynCall_viiiiii=Module["dynCall_viiiiii"]=(function(){return Module["asm"]["dynCall_viiiiii"].apply(null,arguments)});var dynCall_i=Module["dynCall_i"]=(function(){return Module["asm"]["dynCall_i"].apply(null,arguments)});var dynCall_jiii=Module["dynCall_jiii"]=(function(){return Module["asm"]["dynCall_jiii"].apply(null,arguments)});var dynCall_jiij=Module["dynCall_jiij"]=(function(){return Module["asm"]["dynCall_jiij"].apply(null,arguments)});var dynCall_jiiii=Module["dynCall_jiiii"]=(function(){return Module["asm"]["dynCall_jiiii"].apply(null,arguments)});var dynCall_iiiii=Module["dynCall_iiiii"]=(function(){return Module["asm"]["dynCall_iiiii"].apply(null,arguments)});var dynCall_iiiiij=Module["dynCall_iiiiij"]=(function(){return Module["asm"]["dynCall_iiiiij"].apply(null,arguments)});var dynCall_viii=Module["dynCall_viii"]=(function(){return Module["asm"]["dynCall_viii"].apply(null,arguments)});var dynCall_viij=Module["dynCall_viij"]=(function(){return Module["asm"]["dynCall_viij"].apply(null,arguments)});var dynCall_v=Module["dynCall_v"]=(function(){return Module["asm"]["dynCall_v"].apply(null,arguments)});var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiii"].apply(null,arguments)});var dynCall_iiiiid=Module["dynCall_iiiiid"]=(function(){return Module["asm"]["dynCall_iiiiid"].apply(null,arguments)});var dynCall_viiii=Module["dynCall_viiii"]=(function(){return Module["asm"]["dynCall_viiii"].apply(null,arguments)});Runtime.stackAlloc=Module["stackAlloc"];Runtime.stackSave=Module["stackSave"];Runtime.stackRestore=Module["stackRestore"];Runtime.establishStackSpace=Module["establishStackSpace"];Runtime.setTempRet0=Module["setTempRet0"];Runtime.getTempRet0=Module["getTempRet0"];Module["asm"]=asm;if(memoryInitializer){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,Runtime.GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,Runtime.GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")});function doBrowserLoad(){Module["readAsync"](memoryInitializer,applyMemoryInitializer,(function(){throw"could not load memory initializer "+memoryInitializer}))}if(Module["memoryInitializerRequest"]){function useRequest(){var request=Module["memoryInitializerRequest"];if(request.status!==200&&request.status!==0){console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}applyMemoryInitializer(request.response)}if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}Module["then"]=(function(func){if(Module["calledRun"]){func(Module)}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=(function(){if(old)old();func(Module)})}return Module});function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}Module["noExitRuntime"]=true;run() diff --git a/docs/demo/mclshe.wasm b/docs/demo/mclshe.wasm index eddb87b1b9cb9150e80480909ecd3a8895a73101..a00893ff0d2009f256a6c588e6e8b5d980d0b670 100644 GIT binary patch delta 92950 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%0AjLOib?Zlq1M7u0J0p;4N{4Iu`I=afG@=#9yNs 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 delta 89974 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 diff --git a/docs/demo/she-demo.js b/docs/demo/she-demo.js index 4685300..735056a 100644 --- a/docs/demo/she-demo.js +++ b/docs/demo/she-demo.js @@ -3,7 +3,11 @@ function setValue(name, val) { document.getElementsByName(name)[0].value = val } function getText(name) { return document.getElementsByName(name)[0].innerText } function setText(name, val) { document.getElementsByName(name)[0].innerText = val } -she.init(function() { setText('status', 'ok')}) +(function() { + const range = 2048 + const tryNum = 100 + she.init(range, tryNum, function() { setText('status', 'ok')}) +}()) function putSecretKey(x, msg = "") { console.log(msg + ' sk=' + Uint8ArrayToHexString(sheSecretKeySerialize(x))) @@ -61,8 +65,11 @@ function onClickTestSHE() { sheEnc32G1(c11, pub, m1) console.log('dec c11=' + sheDecG1(sec, c11)) sheEnc32G1(c12, pub, m2) + console.log('dec c12=' + sheDecG1(sec, c12)) sheEnc32G2(c21, pub, m3) + console.log('dec c21=' + sheDecG2(sec, c21)) sheEnc32G2(c22, pub, m4) + console.log('dec c22=' + sheDecG2(sec, c22)) setText('encG11', Uint8ArrayToHexString(sheCipherTextG1Serialize(c11))) setText('encG12', Uint8ArrayToHexString(sheCipherTextG1Serialize(c12))) setText('encG21', Uint8ArrayToHexString(sheCipherTextG2Serialize(c21))) @@ -103,27 +110,25 @@ function HexStringToUint8Array(s) { } function onClickTestSHEclass() { - let sec = new she.SecretKey() - sec.setByCSPRNG() - setText('sec2', Uint8ArrayToHexString(sec.serialize())) - let pub = sec.getPublicKey() - setText('pub2', Uint8ArrayToHexString(pub.serialize())) - let m = 15 - setText('m2', m) - let c = pub.encG1(m) - setText('c2', Uint8ArrayToHexString(c.serialize())) - if (0) { - let s1 = sheSecretKey_malloc() - let p1 = shePublicKey_malloc() - sheSecretKeyDeserialize(s1, sec.serialize()) - putSecretKey(s1) - sheGetPublicKey(p1, s1) - putPublicKey(p1) - let c1 = sheCipherTextG1_malloc() - sheCipherTextG1Deserialize(c1, c.serialize()) - putCipherTextG1(c1) - console.log('dec c1=' + sheDecG1(s1, c1)) + try { + let sec = new she.SecretKey() + sec.setByCSPRNG() + setText('sec2', Uint8ArrayToHexString(sec.serialize())) + let pub = sec.getPublicKey() + setText('pub2', Uint8ArrayToHexString(pub.serialize())) + let m = 15 + setText('m2', m) + let c1 = pub.encG1(m) + console.log('dec c1 ' + sec.dec(c1)) + let c2 = pub.encG2(m) + let ct = pub.encGT(m) + console.log('ct ' + Uint8ArrayToHexString(ct.serialize())) + setText('c2', Uint8ArrayToHexString(c1.serialize())) + let d = sec.dec(c1) + setText('d2', d) + console.log('dec c2=' + sec.dec(c2)) + console.log('dec ct=' + sec.dec(ct)) + } catch (e) { + console.log('err ' + e) } - let d = sec.dec(c) - setText('d2', d) } diff --git a/docs/demo/she.html b/docs/demo/she.html index 7e207da..e0993c9 100644 --- a/docs/demo/she.html +++ b/docs/demo/she.html @@ -3,6 +3,7 @@ SHE with 1multi sample + diff --git a/docs/demo/she.js b/docs/demo/she.js index f9707e6..3b46b6e 100644 --- a/docs/demo/she.js +++ b/docs/demo/she.js @@ -170,10 +170,17 @@ copyToUint32Array(a, pos) mod._free(pos) } + she.toHex = function(a, start, n) { + let s = '' + for (let i = 0; i < n; i++) { + s += ('0' + a[start + i].toString(16)).slice(-2) + } + return s + } she.callEnc = function(func, cstr, pub, m) { let c = new cstr() let stack = mod.Runtime.stackSave() - let cPos = mod.Runtime.stackAlloc(c.length * 4) + let cPos = mod.Runtime.stackAlloc(c.a_.length * 4) let pubPos = mod.Runtime.stackAlloc(pub.length * 4) copyFromUint32Array(pubPos, pub); func(cPos, pubPos, m) @@ -191,22 +198,6 @@ mod.Runtime.stackRestore(stack) return r } - she.callSetByCSPRNG = function(sec) { - let stack = mod.Runtime.stackSave() - let secPos = mod.Runtime.stackAlloc(sec.length * 4) - sheSecretKeySetByCSPRNG(secPos) - copyToUint32Array(sec, secPos) - mod.Runtime.stackRestore(stack) - } - she.callGetPublicKey = function(pub, sec) { - let stack = mod.Runtime.stackSave() - let secPos = mod.Runtime.stackAlloc(sec.length * 4) - let pubPos = mod.Runtime.stackAlloc(pub.length * 4) - copyFromUint32Array(secPos, sec) - sheGetPublicKey(pubPos, secPos) - copyToUint32Array(pub, pubPos) - mod.Runtime.stackRestore(stack) - } she_free = function(p) { mod._free(p) } @@ -234,6 +225,7 @@ sheDecG1 = wrap_dec(_sheDecG1) sheCipherTextG2Serialize = wrap_outputArray(_sheCipherTextG2Serialize) sheCipherTextG2Deserialize = wrap_input1(_sheCipherTextG2Deserialize) + sheDecG2 = wrap_dec(_sheDecG2) sheCipherTextGTSerialize = wrap_outputArray(_sheCipherTextGTSerialize) sheCipherTextGTDeserialize = wrap_input1(_sheCipherTextGTDeserialize) sheDecGT = wrap_dec(_sheDecGT) @@ -242,7 +234,6 @@ let r = _sheInit(curveType, MCLBN_FP_UNIT_SIZE) console.log('sheInit ' + r) if (r) throw('sheInit') - // r = sheSetRangeForGTDLP(128, 1024) } she.SecretKey = function() { this.a_ = new Uint32Array(SHE_SECRETKEY_SIZE / 4) @@ -271,8 +262,30 @@ she.CipherTextG1.prototype.deserialize = function(s) { return she.callSetter(sheCipherTextG1Deserialize, this.a_, s) } + she.CipherTextG2 = function() { + this.a_ = new Uint32Array(SHE_CIPHERTEXT_G2_SIZE / 4) + } + she.CipherTextG2.prototype.serialize = function() { + return she.callGetter(sheCipherTextG2Serialize, this.a_) + } + she.CipherTextG2.prototype.deserialize = function(s) { + return she.callSetter(sheCipherTextG2Deserialize, this.a_, s) + } + she.CipherTextGT = function() { + this.a_ = new Uint32Array(SHE_CIPHERTEXT_GT_SIZE / 4) + } + she.CipherTextGT.prototype.serialize = function() { + return she.callGetter(sheCipherTextGTSerialize, this.a_) + } + she.CipherTextGT.prototype.deserialize = function(s) { + return she.callSetter(sheCipherTextGTDeserialize, this.a_, s) + } she.SecretKey.prototype.setByCSPRNG = function() { - she.callSetByCSPRNG(this.a_) + let stack = mod.Runtime.stackSave() + let secPos = mod.Runtime.stackAlloc(this.a_.length * 4) + sheSecretKeySetByCSPRNG(secPos) + copyToUint32Array(this.a_, secPos) + mod.Runtime.stackRestore(stack) } she.SecretKey.prototype.getPublicKey = function() { let pub = new she.PublicKey() @@ -288,22 +301,35 @@ she.PublicKey.prototype.encG1 = function(m) { return she.callEnc(sheEnc32G1, she.CipherTextG1, this.a_, m) } + she.PublicKey.prototype.encG2 = function(m) { + return she.callEnc(sheEnc32G2, she.CipherTextG2, this.a_, m) + } + she.PublicKey.prototype.encGT = function(m) { + return she.callEnc(sheEnc32GT, she.CipherTextGT, this.a_, m) + } she.SecretKey.prototype.dec = function(c) { + let dec = null if (she.CipherTextG1.prototype.isPrototypeOf(c)) { - return she.callDec(sheDecG1, this.a_, c.a_) + dec = sheDecG1 + } else if (she.CipherTextG2.prototype.isPrototypeOf(c)) { + dec = sheDecG2 + } else if (she.CipherTextGT.prototype.isPrototypeOf(c)) { + dec = sheDecGT + } else { + throw('she.SecretKey.dec is not supported') } - throw('she.SecretKey.dec is not supported') + return she.callDec(dec, this.a_, c.a_) } } - she.init = function(callback = null) { + she.init = function(range = 1024, tryNum = 1024, callback = null) { setupWasm('mclshe.wasm', null, function(_mod, ns) { mod = _mod define_exported_she(mod) define_she_extra_functions(mod) sheInit() console.log('initializing sheSetRangeForDLP') - let r = sheSetRangeForDLP(256, 100) + let r = sheSetRangeForDLP(range, tryNum) console.log('finished ' + r) if (callback) callback() }) diff --git a/docs/demo/style.css b/docs/demo/style.css new file mode 100644 index 0000000..a3e102e --- /dev/null +++ b/docs/demo/style.css @@ -0,0 +1,12 @@ +li { + list-style-type : none; + padding:5px 10px; + border-top:1px solid black; + border-left:1px solid black; +} + +span { + max-width: 600px; + display: inline-block; + overflow: hidden; +} diff --git a/include/mcl/she.h b/include/mcl/she.h index 7a827d9..ea7a6f4 100644 --- a/include/mcl/she.h +++ b/include/mcl/she.h @@ -112,6 +112,7 @@ MCLSHE_DLL_API int sheEnc32GT(sheCipherTextGT *c, const shePublicKey *pub, int m return 0 if success */ MCLSHE_DLL_API int sheDecG1(int64_t *m, const sheSecretKey *sec, const sheCipherTextG1 *c); +MCLSHE_DLL_API int sheDecG2(int64_t *m, const sheSecretKey *sec, const sheCipherTextG2 *c); MCLSHE_DLL_API int sheDecGT(int64_t *m, const sheSecretKey *sec, const sheCipherTextGT *c); // return 0 if success diff --git a/src/she_c_impl.hpp b/src/she_c_impl.hpp index 842e61d..924add3 100644 --- a/src/she_c_impl.hpp +++ b/src/she_c_impl.hpp @@ -264,6 +264,11 @@ int sheDecG1(int64_t *m, const sheSecretKey *sec, const sheCipherTextG1 *c) return decT(m, sec, c); } +int sheDecG2(int64_t *m, const sheSecretKey *sec, const sheCipherTextG2 *c) +{ + return decT(m, sec, c); +} + int sheDecGT(int64_t *m, const sheSecretKey *sec, const sheCipherTextGT *c) { return decT(m, sec, c);