From 1458ebf77a025fd05b2999eb2149078192758d33 Mon Sep 17 00:00:00 2001 From: "russell@unturf.com" Date: Sun, 14 Jun 2026 19:04:52 -0400 Subject: [PATCH] =?UTF-8?q?bend:=20wire=20bend!-call=20into=20the=20Emscri?= =?UTF-8?q?pten=20C=20tier=20=E2=80=94=20playground=20c=20=E2=9A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit lumbda_wasm_entry.c — adds an EM_JS bridge js_lumbda_bend_call that does sync XHR POST (legal inside Web Workers, the playground's tier host) and writes the response bytes back into the wasm heap. C wrapper bi_bend_call_wasm allocates a 256 KiB response buffer, calls the EM_JS function, wraps the bytes as a lumbda string Value, and gets registered as the `bend!-call` builtin in lumbda_wasm_init — not in c/builtins.c, so the native CLI build doesn't acquire a wasm-flavored binding it can't satisfy. lumbda-c.loader.js — setBendUrl(url) mutates globalThis._lumbdaCBendUrl which the EM_JS reads on every call. runner.js plumbing already propagates a saved playground URL to every tier's setBendUrl on each save. C tier now matches asm + pyodide for HTTP-mode bend. End-to-end verified in node + wasm directly: bend!-call returns the configured URL response text; "no bend URL configured" when unset; clean "bend error: ..." string when the XHR throws (e.g., CORS, network). Tested against the live bend.unturf.com chain via the playground. Three tiers in parallel now show the same (ok (HEX0 HEX1 HEX2)) result from (cuda-shake-fanout ("00" "01" "deadbeef") 32). --- wasm/c/lumbda-c.loader.js | 6 +++ wasm/c/lumbda_wasm_entry.c | 81 +++++++++++++++++++++++++++- wasm/dist-repl/c/lumbda-c.js | 2 +- wasm/dist-repl/c/lumbda-c.loader.js | 6 +++ wasm/dist-repl/c/lumbda-c.wasm | Bin 288483 -> 288844 bytes www/playground/c/lumbda-c.js | 2 +- www/playground/c/lumbda-c.loader.js | 6 +++ www/playground/c/lumbda-c.wasm | Bin 288483 -> 288844 bytes www/repl/c/lumbda-c.js | 2 +- www/repl/c/lumbda-c.loader.js | 6 +++ www/repl/c/lumbda-c.wasm | Bin 288483 -> 288844 bytes 11 files changed, 106 insertions(+), 5 deletions(-) diff --git a/wasm/c/lumbda-c.loader.js b/wasm/c/lumbda-c.loader.js index 0a2f5e3..71b0e54 100644 --- a/wasm/c/lumbda-c.loader.js +++ b/wasm/c/lumbda-c.loader.js @@ -27,7 +27,13 @@ async function _bootstrap() { _init(); + // bend!-call host bridge — js_lumbda_bend_call inside the wasm + // (EM_JS in lumbda_wasm_entry.c) reads globalThis._lumbdaCBendUrl + // for the destination, then does sync XHR POST and writes the + // response bytes back into the wasm heap. setBendUrl mutates that + // global so runner.js can propagate a saved playground URL. return { + setBendUrl(url) { globalThis._lumbdaCBendUrl = url || null; }, async evalLisp(src) { outBuf = []; errBuf = []; diff --git a/wasm/c/lumbda_wasm_entry.c b/wasm/c/lumbda_wasm_entry.c index af407c5..fde4f37 100644 --- a/wasm/c/lumbda_wasm_entry.c +++ b/wasm/c/lumbda_wasm_entry.c @@ -14,8 +14,23 @@ * * Real fixes, in order of decreasing cost: * 1. Build bdwgc (github.com/ivmai/bdwgc) with emcc and link the - * WASM build with USE_BOEHM_GC defined. Their build system has - * a single-threaded mode that would suit our worker context. + * WASM build with USE_BOEHM_GC defined. ATTEMPTED — bdwgc + * itself compiles cleanly via `emcmake cmake .. && emmake make` + * and links into lumbda-c.js. Two blockers stopped this + * session: (a) bdwgc's docs recommend + * `-sBINARYEN_EXTRA_PASSES=--spill-pointers` so the conservative + * collector can find stack roots; the binaryen pass crashes in + * our emsdk 6.0.0 with `Fatal: getStackSpace: failed to find + * the stack pointer`. (b) Without spill-pointers, bdwgc's + * option 2 (GC_disable at init + manual GC_enable/GC_gcollect/ + * GC_disable at safe points between top-level evals) compiles + * but throws `remainder by zero` on the first eval — almost + * certainly a missed conservative root somewhere in the eval + * call chain that bdwgc swept while it was still live. Forward + * path: update emsdk to a version where spill-pointers works, + * OR walk lumbda's struct types in types.c and either provide + * GC_PUSH-style explicit-root hooks or write per-type mark + * callbacks via GC_new_kind. * 2. Write a small mark-sweep over the existing NaN-boxed heap. * The asm WAT tier already does this with a Cheney copying GC * (lumbda_gc, gc_collect in asm/lumbda.wat). Same algorithm @@ -42,9 +57,66 @@ #include #include #include +#include static Env *g_wasm_env = NULL; +/* bend!-call — dispatch a payload string to the configured gpu-worker + * over sync XHR (legal in Web Workers, where this tier runs in the + * playground). The JS side reads `globalThis._lumbdaCBendUrl` for the + * destination; lumbda-c.loader.js's setBendUrl(url) mutates that, then + * runner.js propagates a saved playground bend-url to every tier. + * + * Layout mirrors the asm tier's bend_call import: payload bytes are + * passed by ptr+len, response is written into a heap-allocated buffer, + * length is returned. We then wrap the bytes as a lumbda string Value. + * + * The 256 KiB cap matches a typical (cuda-shake-fanout (...) 32) round + * trip plus headroom; larger responses get truncated rather than + * crashing the tier. Phase 2 (factory recipes) will replace large + * payloads with server-side bin compilation anyway. */ +#define BEND_RESP_CAP (256 * 1024) + +EM_JS(int, js_lumbda_bend_call, (const char *payload_ptr, int payload_len, + char *resp_buf, int resp_cap), { + var bendUrl = globalThis._lumbdaCBendUrl; + if (!bendUrl) { + var msg = "no bend URL configured"; + var n = Math.min(msg.length, resp_cap - 1); + for (var i = 0; i < n; i++) HEAPU8[resp_buf + i] = msg.charCodeAt(i); + return n; + } + try { + var payload = UTF8ToString(payload_ptr, payload_len); + var xhr = new XMLHttpRequest(); + xhr.open("POST", bendUrl, false); /* sync */ + xhr.setRequestHeader("Content-Type", "text/plain; charset=utf-8"); + xhr.send(payload); + var resp = xhr.responseText || ""; + var bytes = new TextEncoder().encode(resp); + var n = Math.min(bytes.length, resp_cap); + HEAPU8.set(bytes.subarray(0, n), resp_buf); + return n; + } catch (e) { + var err = "bend error: " + (e.message || String(e)); + var n = Math.min(err.length, resp_cap - 1); + for (var i = 0; i < n; i++) HEAPU8[resp_buf + i] = err.charCodeAt(i); + return n; + } +}); + +static Value bi_bend_call_wasm(Value *a, int n, Env *e) { + (void)e; + if (n < 1 || !IS_STRING(a[0])) return VAL_FALSE; + ULString *s = AS_STRING(a[0]); + char *resp = (char *)malloc(BEND_RESP_CAP); + if (!resp) return VAL_FALSE; + int resp_len = js_lumbda_bend_call(s->data, (int)s->len, resp, BEND_RESP_CAP); + Value out = make_string(resp, (size_t)resp_len, false); + free(resp); + return out; +} + static const char *MINI_STDLIB = "(define (caar p) (car (car p)))\n" "(define (cadr p) (car (cdr p)))\n" @@ -93,6 +165,11 @@ void lumbda_wasm_init(void) { for (int i = 0; i < count; i++) leval(exprs[i], g_wasm_env); } ul_free(exprs); + + /* Register bend!-call binding to the host JS XHR bridge above. + * Done here (not in c/builtins.c) so the native build doesn't + * acquire a WASM-flavored binding it can't satisfy. */ + env_define(g_wasm_env, intern("bend!-call"), VAL_BUILTIN(bi_bend_call_wasm)); } /* Eval src. Output during eval goes to stdout (captured by Module.print diff --git a/wasm/dist-repl/c/lumbda-c.js b/wasm/dist-repl/c/lumbda-c.js index f2a7c51..7e9d5de 100644 --- a/wasm/dist-repl/c/lumbda-c.js +++ b/wasm/dist-repl/c/lumbda-c.js @@ -1,2 +1,2 @@ -async function createLumbdaC(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var programArgs=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}programArgs=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");class EmscriptenEH{}class EmscriptenSjLj extends EmscriptenEH{}var readyPromiseResolve,readyPromiseReject;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();PIPEFS.root=FS.mount(PIPEFS,{},null);wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("lumbda-c.wasm")}return new URL("lumbda-c.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>(crypto.getRandomValues(view),0)};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}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,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=MEMFS.emptyFileContents??=new Uint8Array(0)}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.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity)newCapacity=Math.max(newCapacity,256);var oldContents=MEMFS.getFileDataAsTypedArray(node);node.contents=new Uint8Array(newCapacity);node.contents.set(oldContents)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;var oldContents=node.contents;node.contents=new Uint8Array(newSize);node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)));node.usedBytes=newSize},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);buffer.set(contents.subarray(position,position+size),offset);return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length}else{MEMFS.expandFileStorage(node,position+length);node.contents.set(buffer.subarray(offset,offset+length),position);node.usedBytes=Math.max(node.usedBytes,position+length)}return length},llseek(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.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}if(contents){if(position>0||position+length{if(typeof str!="string")return str;var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_fileDataToTypedArray=data=>{if(typeof data=="string"){data=intArrayFromString(data,true)}if(!data.subarray){data=new Uint8Array(data)}return data};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{FS_preloadFile(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish).then(onload).catch(onerror)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,filesystems:null,syncFSRequests:0,ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else if(FS.isDir(node.mode)){return 31}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);try{setattr(arg,attr)}catch(e){if(e instanceof RangeError){throw new FS.ErrnoError(22)}throw e}},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);for(var[hash,current]of Object.entries(FS.nameTable)){while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}}node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=FS_modeStringToFlags(flags);if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags??0;opts.encoding=opts.encoding??"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){abort(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags??577;var stream=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data);FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){data=FS_fileDataToTypedArray(data);FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort(`invalid range (${from}, ${to}) or no bytes requested!`);if(to>datalength-1)abort(`only ${datalength} bytes available! programmer error!`);var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText??"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,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={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents(sock,peer){var first=true;function handleOpen(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}}function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(data,isBinary)=>{if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",()=>SOCKFS.emit("close",sock.stream.fd));peer.socket.on("error",error=>{sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])});return}peer.socket.onopen=handleOpen;peer.socket.onclose=()=>SOCKFS.emit("close",sock.stream.fd);peer.socket.onmessage=event=>handleMessage(event.data);peer.socket.onerror=error=>{sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}},poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 0;default:return 28}},close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}for(var peer of Object.values(sock.peers)){try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0},bind(sock,addr,port){if(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},listen(sock,backlog){if(!ENVIRONMENT_IS_NODE){throw new FS.ErrnoError(138)}if(sock.server){throw new FS.ErrnoError(28)}var WebSocketServer=require("ws").Server;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",ws=>{if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var peer=SOCKFS.websocket_sock_ops.createPeer(newsock,ws);newsock.daddr=peer.addr;newsock.dport=peer.port;sock.pending.push(newsock);SOCKFS.emit("connection",newsock.stream.fd)}else{SOCKFS.websocket_sock_ops.createPeer(sock,ws);SOCKFS.emit("connection",sock.stream.fd)}});sock.server.on("close",()=>{SOCKFS.emit("close",sock.stream.fd);sock.server=null});sock.server.on("error",error=>{sock.error=23;SOCKFS.emit("error",[sock.stream.fd,sock.error,"EHOSTUNREACH: Host is unreachable"])})},accept(listensock){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},writeStat(buf,stat){HEAPU32[buf>>2]=stat.dev;HEAPU32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAPU32[buf+12>>2]=stat.uid;HEAPU32[buf+16>>2]=stat.gid;HEAPU32[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;HEAPU32[buf+60>>2]=stats.bsize;HEAP64[buf+8>>3]=BigInt(stats.blocks);HEAP64[buf+16>>3]=BigInt(stats.bfree);HEAP64[buf+24>>3]=BigInt(stats.bavail);HEAP64[buf+32>>3]=BigInt(stats.files);HEAP64[buf+40>>3]=BigInt(stats.ffree);HEAPU32[buf+48>>2]=stats.fsid;HEAPU32[buf+64>>2]=stats.flags;HEAPU32[buf+56>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_dup3(fd,newfd,flags){try{if(fd===newfd)return-28;if(flags&~524288)return-28;var old=SYSCALLS.getStreamFromFD(fd);if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);var stream=FS.dupStream(old,newfd);if(flags&524288){stream.flags|=524288}return stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();var mask=289792;stream.flags=stream.flags&~mask|arg&mask;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;if(flags&64){mode&=~SYSCALLS.currentUmask}return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(mount){return FS.createNode(null,"/",16384|511,0)},createPipe(){var pipe={buckets:[],refcnt:2,timestamp:new Date};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;return{dev:14,ino:node.id,mode:4480,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:timestamp,mtime:timestamp,ctime:timestamp,blksize:4096,blocks:0}},poll(stream,timeout,notifyCallback){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){return 256|4}for(var bucket of pipe.buckets){if(bucket.offset-bucket.roffset>0){return 64|1}}return 0},dup(stream){stream.node.pipe.refcnt++},ioctl(stream,request,argp){if(request==21531){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}HEAP32[argp>>2]=currentLength;return 0}return 28},fsync(stream){return 28},read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}var data=buffer.subarray(offset,offset+length);if(length<=0){return 0}if(currentLength==0){throw new FS.ErrnoError(6)}var toRead=Math.min(currentLength,length);var totalRead=toRead;var toRemove=0;for(var bucket of pipe.buckets){var bucketSize=bucket.offset-bucket.roffset;if(toRead<=bucketSize){var tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);if(toRead=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i0){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}return dataLen},close(stream){var pipe=stream.node.pipe;pipe.refcnt--;if(pipe.refcnt===0){pipe.buckets=null}}},nextname(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe2(fdPtr,flags){try{if(fdPtr==0){throw new FS.ErrnoError(21)}var validFlags=524288|2048;if(flags&~validFlags){throw new FS.ErrnoError(138)}var res=PIPEFS.createPipe();if(flags&2048){FS.getStream(res.readable_fd).flags|=2048;FS.getStream(res.writable_fd).flags|=2048}HEAP32[fdPtr>>2]=res.readable_fd;HEAP32[fdPtr+4>>2]=res.writable_fd;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw new EmscriptenSjLj};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 22;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])programArgs=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;var _malloc,_free,_htons,_lumbda_wasm_init,_lumbda_wasm_eval,_lumbda_wasm_free_result,_ntohs,_setThrew,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,memory,__indirect_function_table,wasmMemory,wasmTable;function assignWasmExports(wasmExports){_malloc=Module["_malloc"]=wasmExports["malloc"];_free=Module["_free"]=wasmExports["free"];_htons=wasmExports["htons"];_lumbda_wasm_init=Module["_lumbda_wasm_init"]=wasmExports["lumbda_wasm_init"];_lumbda_wasm_eval=Module["_lumbda_wasm_eval"]=wasmExports["lumbda_wasm_eval"];_lumbda_wasm_free_result=Module["_lumbda_wasm_free_result"]=wasmExports["lumbda_wasm_free_result"];_ntohs=wasmExports["ntohs"];_setThrew=wasmExports["setThrew"];__emscripten_stack_restore=wasmExports["_emscripten_stack_restore"];__emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"];_emscripten_stack_get_current=wasmExports["emscripten_stack_get_current"];memory=wasmMemory=wasmExports["memory"];__indirect_function_table=wasmTable=wasmExports["__indirect_function_table"]}var wasmImports={__syscall_accept4:___syscall_accept4,__syscall_bind:___syscall_bind,__syscall_connect:___syscall_connect,__syscall_dup3:___syscall_dup3,__syscall_fcntl64:___syscall_fcntl64,__syscall_fstat64:___syscall_fstat64,__syscall_getcwd:___syscall_getcwd,__syscall_ioctl:___syscall_ioctl,__syscall_listen:___syscall_listen,__syscall_lstat64:___syscall_lstat64,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_pipe2:___syscall_pipe2,__syscall_renameat:___syscall_renameat,__syscall_socket:___syscall_socket,__syscall_stat64:___syscall_stat64,__syscall_unlinkat:___syscall_unlinkat,_emscripten_lookup_name:__emscripten_lookup_name,_emscripten_throw_longjmp:__emscripten_throw_longjmp,clock_time_get:_clock_time_get,emscripten_get_now:_emscripten_get_now,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,exit:_exit,fd_close:_fd_close,fd_fdstat_get:_fd_fdstat_get,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write,invoke_i,invoke_ii,invoke_iii,invoke_iiii,invoke_iiiii,invoke_iiiiiiiiii,invoke_iiiiijiiiii,invoke_iiiijii,invoke_iiij,invoke_iiijiii,invoke_iijj,invoke_ij,invoke_iji,invoke_ijj,invoke_ji,invoke_jii,invoke_jiii,invoke_jij,invoke_jj,invoke_jji,invoke_jjii,invoke_jjiii,invoke_jjj,invoke_jjjjjjj,invoke_v,invoke_vi,invoke_vii,invoke_viii,invoke_viiii,invoke_viiiii,invoke_viiji,invoke_vij,invoke_vijj,invoke_vjii,invoke_vjiii,proc_exit:_proc_exit};function invoke_jij(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jji(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiiijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jjiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_ijj(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iji(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vij(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ij(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiijiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vijj(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iijj(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jjii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jj(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vjii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jjj(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jjjjjjj(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiij(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vjiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiiiijiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viiji(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})} +async function createLumbdaC(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var programArgs=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}programArgs=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");class EmscriptenEH{}class EmscriptenSjLj extends EmscriptenEH{}var readyPromiseResolve,readyPromiseReject;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();PIPEFS.root=FS.mount(PIPEFS,{},null);wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("lumbda-c.wasm")}return new URL("lumbda-c.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>(crypto.getRandomValues(view),0)};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}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,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=MEMFS.emptyFileContents??=new Uint8Array(0)}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.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity)newCapacity=Math.max(newCapacity,256);var oldContents=MEMFS.getFileDataAsTypedArray(node);node.contents=new Uint8Array(newCapacity);node.contents.set(oldContents)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;var oldContents=node.contents;node.contents=new Uint8Array(newSize);node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)));node.usedBytes=newSize},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);buffer.set(contents.subarray(position,position+size),offset);return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length}else{MEMFS.expandFileStorage(node,position+length);node.contents.set(buffer.subarray(offset,offset+length),position);node.usedBytes=Math.max(node.usedBytes,position+length)}return length},llseek(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.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}if(contents){if(position>0||position+length{if(typeof str!="string")return str;var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_fileDataToTypedArray=data=>{if(typeof data=="string"){data=intArrayFromString(data,true)}if(!data.subarray){data=new Uint8Array(data)}return data};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{FS_preloadFile(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish).then(onload).catch(onerror)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,filesystems:null,syncFSRequests:0,ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else if(FS.isDir(node.mode)){return 31}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);try{setattr(arg,attr)}catch(e){if(e instanceof RangeError){throw new FS.ErrnoError(22)}throw e}},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);for(var[hash,current]of Object.entries(FS.nameTable)){while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}}node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=FS_modeStringToFlags(flags);if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags??0;opts.encoding=opts.encoding??"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){abort(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags??577;var stream=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data);FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){data=FS_fileDataToTypedArray(data);FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort(`invalid range (${from}, ${to}) or no bytes requested!`);if(to>datalength-1)abort(`only ${datalength} bytes available! programmer error!`);var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText??"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,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={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents(sock,peer){var first=true;function handleOpen(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}}function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(data,isBinary)=>{if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",()=>SOCKFS.emit("close",sock.stream.fd));peer.socket.on("error",error=>{sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])});return}peer.socket.onopen=handleOpen;peer.socket.onclose=()=>SOCKFS.emit("close",sock.stream.fd);peer.socket.onmessage=event=>handleMessage(event.data);peer.socket.onerror=error=>{sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}},poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 0;default:return 28}},close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}for(var peer of Object.values(sock.peers)){try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0},bind(sock,addr,port){if(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},listen(sock,backlog){if(!ENVIRONMENT_IS_NODE){throw new FS.ErrnoError(138)}if(sock.server){throw new FS.ErrnoError(28)}var WebSocketServer=require("ws").Server;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",ws=>{if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var peer=SOCKFS.websocket_sock_ops.createPeer(newsock,ws);newsock.daddr=peer.addr;newsock.dport=peer.port;sock.pending.push(newsock);SOCKFS.emit("connection",newsock.stream.fd)}else{SOCKFS.websocket_sock_ops.createPeer(sock,ws);SOCKFS.emit("connection",sock.stream.fd)}});sock.server.on("close",()=>{SOCKFS.emit("close",sock.stream.fd);sock.server=null});sock.server.on("error",error=>{sock.error=23;SOCKFS.emit("error",[sock.stream.fd,sock.error,"EHOSTUNREACH: Host is unreachable"])})},accept(listensock){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},writeStat(buf,stat){HEAPU32[buf>>2]=stat.dev;HEAPU32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAPU32[buf+12>>2]=stat.uid;HEAPU32[buf+16>>2]=stat.gid;HEAPU32[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;HEAPU32[buf+60>>2]=stats.bsize;HEAP64[buf+8>>3]=BigInt(stats.blocks);HEAP64[buf+16>>3]=BigInt(stats.bfree);HEAP64[buf+24>>3]=BigInt(stats.bavail);HEAP64[buf+32>>3]=BigInt(stats.files);HEAP64[buf+40>>3]=BigInt(stats.ffree);HEAPU32[buf+48>>2]=stats.fsid;HEAPU32[buf+64>>2]=stats.flags;HEAPU32[buf+56>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_dup3(fd,newfd,flags){try{if(fd===newfd)return-28;if(flags&~524288)return-28;var old=SYSCALLS.getStreamFromFD(fd);if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);var stream=FS.dupStream(old,newfd);if(flags&524288){stream.flags|=524288}return stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();var mask=289792;stream.flags=stream.flags&~mask|arg&mask;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;if(flags&64){mode&=~SYSCALLS.currentUmask}return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(mount){return FS.createNode(null,"/",16384|511,0)},createPipe(){var pipe={buckets:[],refcnt:2,timestamp:new Date};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;return{dev:14,ino:node.id,mode:4480,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:timestamp,mtime:timestamp,ctime:timestamp,blksize:4096,blocks:0}},poll(stream,timeout,notifyCallback){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){return 256|4}for(var bucket of pipe.buckets){if(bucket.offset-bucket.roffset>0){return 64|1}}return 0},dup(stream){stream.node.pipe.refcnt++},ioctl(stream,request,argp){if(request==21531){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}HEAP32[argp>>2]=currentLength;return 0}return 28},fsync(stream){return 28},read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}var data=buffer.subarray(offset,offset+length);if(length<=0){return 0}if(currentLength==0){throw new FS.ErrnoError(6)}var toRead=Math.min(currentLength,length);var totalRead=toRead;var toRemove=0;for(var bucket of pipe.buckets){var bucketSize=bucket.offset-bucket.roffset;if(toRead<=bucketSize){var tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);if(toRead=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i0){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}return dataLen},close(stream){var pipe=stream.node.pipe;pipe.refcnt--;if(pipe.refcnt===0){pipe.buckets=null}}},nextname(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe2(fdPtr,flags){try{if(fdPtr==0){throw new FS.ErrnoError(21)}var validFlags=524288|2048;if(flags&~validFlags){throw new FS.ErrnoError(138)}var res=PIPEFS.createPipe();if(flags&2048){FS.getStream(res.readable_fd).flags|=2048;FS.getStream(res.writable_fd).flags|=2048}HEAP32[fdPtr>>2]=res.readable_fd;HEAP32[fdPtr+4>>2]=res.writable_fd;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw new EmscriptenSjLj};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 22;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])programArgs=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;function js_lumbda_bend_call(payload_ptr,payload_len,resp_buf,resp_cap){var bendUrl=globalThis._lumbdaCBendUrl;if(!bendUrl){var msg="no bend URL configured";var n=Math.min(msg.length,resp_cap-1);for(var i=0;i0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})} ;return moduleRtn}export default createLumbdaC; diff --git a/wasm/dist-repl/c/lumbda-c.loader.js b/wasm/dist-repl/c/lumbda-c.loader.js index 0a2f5e3..71b0e54 100644 --- a/wasm/dist-repl/c/lumbda-c.loader.js +++ b/wasm/dist-repl/c/lumbda-c.loader.js @@ -27,7 +27,13 @@ async function _bootstrap() { _init(); + // bend!-call host bridge — js_lumbda_bend_call inside the wasm + // (EM_JS in lumbda_wasm_entry.c) reads globalThis._lumbdaCBendUrl + // for the destination, then does sync XHR POST and writes the + // response bytes back into the wasm heap. setBendUrl mutates that + // global so runner.js can propagate a saved playground URL. return { + setBendUrl(url) { globalThis._lumbdaCBendUrl = url || null; }, async evalLisp(src) { outBuf = []; errBuf = []; diff --git a/wasm/dist-repl/c/lumbda-c.wasm b/wasm/dist-repl/c/lumbda-c.wasm index 01d63e31f30f8d4f7f66ec763947a7e3236e593d..961ed9abb1c723b0cb4ff58d6d9d5c8ee11e16a5 100755 GIT binary patch delta 92315 zcmdqK2YeJ&_cy-xZnB$XQjd@YZ6GgcN?R>obayp*Y%R%;s)>sIaHx*lImxW;kB88>R;$dQht z+Udmn^mR_Jf%(>}Zo2-;G2_Qfa?H@0Bvl(T%b96@L*HCEapX-mUpL8dpEG{^qzTvF zzY2^4TZ<=(~HRI@mNfRcHbj*m$toTx= zXQuW-Qr?xb;u5#SF^9@LYj_zO)_W@J)3a;$k<(e<(kX0muNiD?4|OJc$Jwv{6_*d# z?i?|C;B@EEKb>QCIPYhjE~hYi1%U3K*|_7}hArb##7dfOd$ z-gWmY^*z&>b1#2ado8(1tDpJ5yv#YpIn{ZO^IqpP=L76PHq$x7x!JkQIotV&^I_*h z&gsr~oj*8#bpGT_=F3>pbFZfD&}ydSl-5gesQc$T6-Qm3tnx`}+*t1sr=PXt4uy41 zaS%K~LgG46xw_op=YhgwRR@*h3iHO#?|&WM(cV$obE!)0u5q0dP~@d@ zo90F;*Hq%!7UBKxsnb|T?e4S|d9#l=REKw%!=rGuOzD>5QrviQP8zG%q3un}alfXQ z(SA$2FlU@EG1(KPaK~pu2pc$9ic4J(1jMNa9NkjllH)z< zsL5m1B=2WVUn1|MBtVWDI2@3wee<=as<&5x^wcihU+Y(Ta*}9r^+@0uh`8FwyG^?@eUXnSQQ}mGB+8#O z07Vm(B<~FdR__R{ZAOPGN1PS@QF{-l;X&I2^W1g%ki zbM33FGy2w=Xq$FN(jPo1htjW97RaT7pc53O$U9Js< zsvD0&xyy}?MnyZdEZ-EiQ(Nr6BOy+GI!}!QDA#|NYi%LwCiq4jJvCHEA8cq}ZBOmC z<=@7uPMr-?^f%>M@JM)YKW%S8arsvqO#8P^Z*6p8i%72$>O_3?Y@}CX*b!|^-DWk8 zJAGi4$|m`wdV9x0GLpx7J8G}i?Zb|0tf)rfQK!P|^6C&}e^DVm>sge`O0;W>sBs4y zr)&QfU2QxaFHY5_6%P*n3cyF#OG|nC2S+1^qpc%OajF}&d+I$ZOZl``^?L-%r)o>< z4^yGDos->UKcJ$WNm;o{8rc~}0gubF@dR1p=qWro=?RM1Iho^0VVk^NG_^s8%+Kp7 zF7G?eETY}vb1E)%He_>$Hm5-&SzmSS^9H3EP#G1Uey*8m?#%R(UiPWWd zE^wAH9fP{bp&qP_=Q3aedZ?1btTyy+b3%3WAKyF7zm8dc{bc?Hf{rxwv(8#tqvrUx zOQX8O9|Ym5B9Ws#I@x-I6~}V#pWN^Cc2=C;qfWi)ul^7u)6vT5H3(4D*S{xXyyfvQ zk67{v&((fz)JL+xuU*=BhJ5OaPHoiWTB9>wXp)w)=9mMvrj3K6%U;#qZ&D8>8W(43 zIgPW7Z+kW!i>Ftc-i?2MZBe34YDP~To7dLTn-|F^s)c^PWc;qJoe4hmY@wG)*JidL zJioT+5&!ZLG)L>yGPATqWj+WC9IDFtrZ}8rvlMR^g2chl!2OW>V+!|{NW0_L3-?TM zNZ(WB?UI~Kvhl8D5MVC)G~W+znxHtdTk^&RugaMEgJf1?Gqa$dds zg(=t}iG+K;#GOEo%j6@(mM8|{E_H3Px*=JTi^>KAaMG`?txL3a17LtrJLKtoS;HQO zxq8%2lJ8QqTU%9W{q+yjnFlJAkP7iBq|MNXk0lXOC8p7%wy9M?T`5o}DtyaGU7RL? z(o$Myu^n37)}$bpv@XTJ`&xehg|OsT(X4oS$2<}Y~w|GrdmIeSa< zbY6719t;dZ_+`XBRR$s!LZ5h1vk#a9p;7NNk5UD7K!8*>&fCixMvcZ>g8R~-@V{uG#02l-ANIl`^p+N3U1(5_Qmen7jv?ApB@%&SX5XfO#l^iO?N zq$JAlsY>WuC9MJp+VF1aIVJ?5?{u;6r9INEx|_nXMA+t)-FmWK+No}Z%}4vHC?3g3 z7cswzY^cEjy}4s6)b+}M?t@v^6|41tRAngV@H*gz0V4a!=|KjoYN;;{Mvo(;P*=*A zem%TEGhc;G{6iZys!$tnkxNVOnU<*ssni7>ms1CHO3w4B>x9;}=Y3s*7`fiV%uZ#A zz3L_&ar)d!90=0XzJ=QGUQ5lWXI6#q*g}1BcM5lKeF>x2*TGC|2Pu&f zbgrrjjMWu4SqYdBrxLFqgxI#8DcZnGYG^A4HQ*~&Yo89vZ5qxB#1Qs67hV_=D(WV; zmrEX3pfMr3)@-ngC_$ot{0-t zz!aXjF}^skwePW-W)a|L`P*9b#gfMqqyS75Ss#$8a}Fs(SzNtZmRwF z%8Yc7eviqG5$St~^asx;*;!YeKeBry!?HT`$Y-C>=3V{3`Jr^|HN;@;nh(#G!S3jC z_}qw#Lxe?@z!;{W>&Vu=FamZ!&sVAl2FbE69GPL)vL=s8Hn+JF{%_c*p=a6V7}ELo zs9skf)L|6b9kMjkh??C>M+C^5)+0i8`CMV`L=3i)Px)YU@%f^+nReZ^nWYBJyp!?2 z$$=;JMC4Yix8Dk>5B+RW$FW^d2z>7s#DFrwq?V@Y;{#GyA8YBR?S>=8tk z0G_V^wXn|ausn~U6TY#96aw`e+qq!{=Nes`j4!_#TVzMdeRB%6YsOW{+%wOK42;UU zV*u6N*8>SK-btM;wEM>m6Z5vs1PgYGPF7Ujrr=bO|+(LbpV_hzgV96eMx;;Wy@K zspIPsBU_IjRytd7($FW^Sju$kPihh#XjFUJsl@qeOHNnwsAV#~R}52T(eU;7-s`dv zLa{$I;#S)Usl5W+Qr!v>vQDCm(A?M^(8nb+A0h5Vcf&Ce*3}x^aAin7l94Lt0R2h| zD<3gp`@J``yy$dfL-VR#X6n2gKhdSlyfH0AYb9G=&^^S&6r$6zb)X#d=nM*^F7dwN*^o)n#P1MjFm*v~09)Iq@?B&I{U9^FXA zL|o7aM~Nret(a z7TN?a6l99zB*Np^#`WJD-N2R`R49&qYMxm-ay2R+6G;-*y7w)M09S;^scw( z+#pTGr4^)U@&6iW$}cZU3o0W@MVI1pzo%SknPkCXO6x?3$j(YA>P)Fup5nQcqFCEH zrD{lQ$;4Gg0lEdPc#5F__QEh-16EB9X#glA4N&emZyM0C8mCBPl{MlxaF0E+iD0MS zy{Y7RuDI7OhJlzuuy`DOm~pSJE#W<445^v2-8?+gU2FIOL2N|Y^V5=$*jh6!ue^6C z(;IMivFQREaGu?jH3X-9f&FpF&EgS+ur9*_2 zObp_Ea|&omQEM^l+;cLK;4CTyV^uRkNR+960ZTExCLSqashQulMbQEGER&yj2f14w=5_>6#dg zeB=JwiHgoUOr0WiG30dQF4|NHt8v9$MJf2+pAd*~w383pa(7UY>>9KnTju-{u=py4 zvU~U?7qM!0%q|WkCmqWp%;3csxhjvFMjjp|1>?%_J}M@j0&U_Wjo|#AdZe&?{IxEM z#K#E3t328p>ZK(5-AYmq8dfukNDf8rx>qaFb-p=8+R;Z7%lqzCI!aq3JLrNb`Kw14 zwuW{X}N7f~L$pOIe9Y z)%i*%pnY))7JO;xPjs|SQbtT4#K^PFeWL$pNFFv(APwbXShQ1wxtAy8c9w8+FAFLq zcLmx_^UC#3$yuz(tA zNuK2fUZ#7?eseB&1LzPb?OtuSQSm# zho(UNu%phK8deNrM8z*GGcC+Cd~ta57h|Gi^wXWJRspS)Rw4Y7+!$n?csl>06_JJi zW7&b>>5L&+ko|u6Jc26A^iqYHu-GW;0wu`-!xk~@b;WjyZ0V|-c`#pXcGX&w<+g@! zME0KZO}2S(T@5*3hACECV-qp~Q&x}(cyfis1XN<5z`rXxbPtL;)@MU)61-^aZ|Kh zO-wumTK|`_hir@7L!0zg*RdxOh1w4Xk1 zdNrwh`e&Pt(rXW8f#!a#3XDh1*DNcaq*aQdKrzH?@|r^J+1EU0+wo_CEpJWMdBfJg z5{{}4m12=NebZP4+a8m)I$HMH^iVJ#k1!rqIa>zDl+y-16T)r58)#2N8}tmjp-)B_6}l@XZT0$qr$mVEfYDt6 z0SMnyF%cHTW3m8iq^rMi2`!Z#|3=L#jD?gnJ?e?beYL)&UH7#2&3c;mO;^S48f1sT zz}7p$Oy7m}@YQ$IXqR{rw_ft(iuE-|V}&^O8Z;d1YbjTWXL;1qk$H0_pJGp&9a41R znS6h%a>F>cRLj#6Zv#8cg7r;4oljT?>ur1ZtxJqG@!P5yOXBgM(js|dMSQ$^C}*s% zwQO%TtqhzQ*!LQeKV#oZHCwSZ&S3aM8?&KF$e!uVTrbht3Ma>GFh>~rTvGT@CC1YA zJ{!A)Rs!f`ts}C+cWMk|{We9E(eNQzOnlAEJfn5KuS%YUkMCn*E6|Q_8WYmTWCUiB zr=wGl35v36_{q(tymoXtR4eW{^T zGq*VmBIrqt4^RQSjqNF5>J?+xhWd_9mHU!qU+Pv~m*cZjh}3e&HPF1&r(5%^ zEswZaJBGVx^G?eiSZyvfN+->OIiW;f_+e^{P=2{3_o{eO=nyoyqt!Z6 zu1~Dc3g5MrNWb&lX2=%2^llp~2kcH-`NkG#gWfAHK>wR2uIfM{6&w>+ow{|sOny^r ztu1*kKcrSP3QMxPE;wo1Xlnz2DZDL;G3!PR_}jB#*qP(f>C>w28Wvp9j)iHop7-uu z<<|2iMpBL#-G<%uL*38{xEd*A`V_AbYtyX6daO}}s&jBE{H#Qb4!eGLxekj+X$*Bp z*mLovx-@;KOH-nhCV8xdL9gyL!Y}xZfqmVc5=$=b>|9Sd&(q;Ux&HC$y-n?iw(<3` zz2T21iNR;%>ro&2?bThNef?qg@?zHfqjF*v(T&Csvlf>XYTG{YS|_}AkZ2)giMYa+ zXyt!gPP8IY7bCpc`0*f|nW7{c)(Sh+j3+5+TD?zlLq4ri>kS|Jq@G8YVQi~~x7_;4 z;nLv9wx;4o{-IiEGreilTk6BieAkrXzzJ2@bY6@}IX%$(!|CTKMfe%#{nP0%MNvd+ zH>F3Ub*vQB)+r631o}Eq^B~H<TQ(d1^qZ;DElAeCd7lAgHENI~J|A1BgLuZ7Z#Q z6Ro9zfjtr1Rp}CqSS5fGv?^9w^Fp-t1g)JdwB|>lwTonItpH{aTgyspPLNo|iGBSu zh1}-WNhwqc5WFQ1lwRY8ef8U-BPqL4vDdOp$g`}-YwF0gPxq-82LyqpEh6k1q8>{P zU;`6UtxQM>F~PAMw4_v{Fml3Y86;#CGcSbAW5Px!)|t8=J1hg;PbbbQ7nH+*nNg*8 zd!m88l#WzOw4zT4p>HTLE>g0434B`@H#p0OhJN{SXXSE%cHh z2cF<*b8b4!)axD<+%M1!l5jf{0d&{~cw>mA*62$``{2vm zkqGQLB6_!yNMQ_)<&`IC>eI{8Tv2_&0h@(m4x;ImuI-k%3NtUhTn5Z%Ccc^{bh2)T1Nk9mpM#Y()qTAQe>vSVDsr0ii&nsx ztPrUi>DP+~dRZmalCQBaghD-YrzVu^RJY!#3BcO(;2o3$e&^tTTs@OA^KdYWfhQbT zp_6i2Yxd0+D*5|2R}ZC<=@4y|`8dugk+qpmd~qr&98RP&6=TG4s~*bGKKM2@6mV2S z9+K7{L~seH9fme&OsL%<25PzAH3%j3xO#sk+C!(V1}&+z)1xEPzAGXYZ1`@ZITuH3 z56;L1Y~f?(7?EL>M{8*JeqR!jy;?F8m#(X?Ra~Nz=l-EXh-z7XMIV zAm$z965XK6=*i#H_FFq(at*EJcd1&VAKm3BBRKty zKiXOpI%RteE%#815FedbWk<3sJILA_u@6r5&8eZSI&|rfJ@buIe;}JK)rCWG6%LUN zvegm68^jp1UHQ{@bQBqkWrC07SnL0DO*@01c|Z53W$=f8&I|i>3;}L;xD$On`EX{~ zuVbkDc{<28^8e@tdn$#W{afnx!)95ln# z&$I0w9YuBV;~5t%Mxqwyh&t4{M#eTIxjuzsshurrdj0XDkebo*2-`+pSF^N!3a$|_ zg(!x(r(?Kn5jfz)1z_`iCpuV#6V@OY*OJy5ViNNdWu3}Yt?5ZqyNy8Eo^UNb*=z^| z7BY1vp9bu7CZV)`mUNIUzd5C}hF1J*iq`L!8lj~pe#M6{Cj9(W46%Lo7gJh18457i z9A}>k8+FP|%l6%hT>Bws!-7Gs1!D{|`qHm0BArC+g5?k2-WWKW{dS2}YJe%c)Wn#o z+x?pw(h`!E$Rx$E(--}>Q8t-3BefF}nPLxRezZmZ&A7}gP4SAaC9F$Oz`44Sq9>f2 zZ%dofPPH8r#1*exs6yeb-rf?!BIw0XGY}SIAP0aEi^_Bl!%w7pv<0VXhWO)0iDiXj zBMT{oiV58gy72@R7V+GKK*&L871H4#Ww zpp0f-t*e+URFai4ccQD@$jC@NxFA@={_GSQZ&k)jgW17ByLRl)Iy8jH{HqShTBpBi z24u}D5g;@2pvHnw{M8I+ek$+*+vM6SJnWDU1FTJP)`YUvZ3LM z$zNKy$IEfgP=RW}(W)uGGW1Np{=v@C$G?53rgIFTEp7edOffO9;P1d-bsrY3QHlk7 zM`-yPUCba?vS`}h7beTRE!eRM3$e9d{%)E_Qk{w7awZ-}?}0OPp$LlL{8No1F%(Fq!0=*r_n(Yb@+HpAl7}u^PA(>(`3ow60TeO0-pFH0mQFL1&h zUOhvN>opKTsid_S<;Ho3i8~p~ZaEcWba`b7QV>HuKJ3_m1M zk!6@p4ymPNDmA?6_6P;8(LvDxeKnNK@Tj70;-IzK{RTP`fy}fkKSbhsEP(*#z7`K_1Oh%Cuqq}aG?G5fFq&~#Zdc)(^zI` zsELU^OfLjiGFaMr7Kkb+V~vW+7>t|G6?v$8NrAGUK;a$ZSWa_pH_($fs;FY!WE*36D64I-#ljn(Y1`Y@%gaiN|!yjaDy8ag%e ztFi2`)Wl|ThWMu%v+Qxpgq7eCJYj5nnW6qCJDr1Wv#Wg>IDg7}RBW!!76yARN~{~* zyDmy+83@bPq_ZxfVgEbBY@(8JuXdX4Z4~fCCQJJiMD4Go)CdTwcVLd)= zNW+D)p^+$lBUsA^2bUB>>Ouq3cIKo^R4&q(AsAR-@Iac-w+00H?Vm`Hv6v!)AjjYW zh7GzPzf~iGAV&}9MN&;>T21AI(T^;{F;HD!lVt{bL?sy}(-U5Xqob083|Ej}#vnt# z>#>H(+72|$TA`ER_DdaVI{1ksyNYW!mk@I!aW=Z7O35&hAY;MMI7cneYr(%eP?y77 zLytfjRY=su?!dF=e{59d$ecQW0_yM`5F1ww+M6kN1Blt#tWgP)1#&!&fsDTTxhme{ zFgpC>Qdd>S{o=R?GLThUz*&50ZCpE!OOk1LufCe)T`5=&tKR(;y2du%`zlt6AVES| zf>)flKbNZxoE?W1L70rhn265QlS>c0FQZ;?xQ#=ecT}eMxLT$lConXJ)y%;4m7o!y z;a*|XQhL)^pnh50pTn}NFU94&poi|mX5LPecYsZNBZuW>_Rd0CjJuG2z;)AfWF6L8 z;pK@Omf0N{h^~xHHtzs%(lRqT5w%y`WW|9!OjyI@X@wam{d^fe!(10LG9T(a2dGWM zM88@ri%k||YOx_~kl0j<)l8?mH0fq{v`}B`4w5bu$7->KtfzP|mknUs#aFrPf+o08 z+vlPYJX1HxJx_FYHqO8Rm8En`F#T>^WG9(k;F$~t3zlmoUXUfa+mM;?|U zUdUrNu&yE(SIB2f_9cT|Uaa#>!=O`MahvQNByLyO$LzT1=VR?Nka7WfIwgU2&(QoM zdil6m;$uEmD&F?7QMdw>DRGi*a!I)ZLlk7dy@NnBsFSxcI`E8CQzDuR5rN4QC-Ydg zxXll)3|g!CSye_OqUE*O(3&(Nq7`L&^31F6nZYg5r$tUayMV8oCoaxsraL4Hu}GC> z!NZ?|h)GCGx>6=Er~+X8L!2mJ8GRJoS>pA{e1JaOE<}QWFa}cuCRH!>#l~nF&C~*M zsffaD5_iD>jAr!10nCe73Y9e5O)f2B8RFqWmQ)gqq*EcHk#@~QZ>>ajvXD&+x^bBL zB(N_fWN9qSD?blp?T$C(DVE8?-tv{L-PQ zf&m#^$i)43jdGW6?IJvOB? zrO{Nn#aT(x!-9lXJOMlP%97zf=#FPR;$9LwdU+`(_-KM9i~bt9We@zw8}-=*iF&Hp zg`a2YvpNWO^Bb@t{OQ+#jY>DJF96T!a#SUm3`tkKx~hLh6*2oeavgoa469~G+_vcd3Ul3FDRcRkZT$#i_|ago)C-52TI zf~G82>}$kEMJ+I~F`L9L7H>9T#e|pc4R3s%H$rtyny?#Dcxe;Xvu5}rPJg0U)D(7H zX&SZSOK5I^{OzAj+0B?+5;rzu)tf-XC_Xan-qT03WD)|ob~y(|=jTdmedB{r#huMq zdMKY;2TsXF>@lUpEEp-ajEu3UIeV`X1g-7}TiUk;%Q$ZY^=rjO32#ew@BcQc9t+u) zx)l7ty3`DgwnH3`%I%XgS$Z!w0s$*7vQ*)48QG1ZN@?lG^&HfsNUYT)K>CfQyZKE4IGb5VbyG?K5%5x=K}|_tY*Q~ zYp4^>rcW~jh;a9^>?ti)9PpGh8VDoIXM1a1j#fI}BaRgDWq&xZ`0ZqFJ;m4WES`rp1rdSmE-2rY~GeTyps zfsGoK)6vWrq72%`;?gHQDXPH45QSo-BKDbHD?{>|cf#e!@+8Aba$NeRj-6NI@>WEtY) zF6W~c2Xxgf{Ftt`IuV~|h#g&7uojhC@ZNFK(;M?{hzltwWscJeI`5dvye%N#ot7Bu}cM#Ob@0$!^ zS@yoq6xtBhBa{rQFUJi?ux9$IQ#&gdix|Pq1eVzwb4GFIBq1_>s)BT%oeo43GsXOi znd$UXim7w$W@CtDrsa=>%c)eg7nTE8H8JKAJqV`gkoKUS8^fIbcsh0>I5Le_S@#r{ z?5WJil$tn5j{o*oDK`Mrn`<+7M^-~70_{dwP{ypw_tO>vYT#*$+cc7Zy1rwDM(CWx zbI>PL5Peh{U3l?%E$byU#4m1F)X4To?X+nc@qPAKomogRll`@w>7OWV`8a1e(9Z^HZ;J16OvSr-xeWoZK7QwhxwPD-{V}CMkO4U|Q zxkxjVxwdVPfHZ4VKq&$-CHi}|(cgL^w}N_vb}5{Ler%WsmUymYrb7&9yJNt?h98?o z*O`OES!R;M7mstpXbrqrawTFm1cx__h!6!w50z?-1ciCSSvsalG2>5b>lKe&u3~Yz ziZ6kDuC0*}2oBAa0!eVb^&A*Ut)^D~IozJ#Ha_n&(pHWyP`gdV*nBm3-1KVJJ2X9B zAAy|5rppI9Unsh&oO3q#(&-x8e6gn9ilex8N>2v2-(W5ZOO1?KOE_ihzwt^Rj3HRM zjmQd`hH1tTx;wJ33pu#pRG<8aoN0}zP_?RtbSaT^392MW^lXMJRW0F4x0Ey^k#1j_ zGepLykl8p#KOx0=_9$jLZJ&e?xo&$=T>xJ^ttk6v6w6GWYdBk479(s9?{|-eK-@K& zc|zyMm`$%8O9qtE2-)O2eJ*-m%W^AWu2)^l{DIU$SS^VzocKJqV!#!p=VGGE!C^^3 z$03DXO8ZM=nExEbiaIO-yR`Jt?Ui@gvPjYlOdiV;5&Itf(A{PD0S+%8A0@eMaXpEP*tLf=R4dR4StPHGHye_-&^5@qMPq zx|!vbm@@fMR_sL00o-}B&e4btAUa3MSm+rmndr8uV432oTUgghuoTw0QY^*ym6`v= z=egpyTUokQRigNX=vsP%=foYR5>Pg}(@yl4s|fcyt--T**&Fm5}Hx4XS?G9k$|3e4l*@r3&E&jhm5; zwMeGLm9|$f0(&(v=uVbH8$NEhlMSW6yY6HesdB$N_j!^N17UW$aNosJ&N0?j?*eZ7 zF##o}ala6HJSYPQv}KZ6dPeCD3BS#Oc)PnRHOj%~IYUWE!{@V98m*?Q)fH#9l5TIv znlrgl{G&|k@Gy!bnV2L4olv6FwiKP2%xaAT7v!<<0qsmQx(#Oy2TsN@)dz20iKU)c z>68^m5+R-{W#7`VMuA$f$0_h=ER-X0!LCl`@wuFs*~i*s^X8pmxj%~An~IiGJaLMs z(Uy5b^KAM=2lkD+LI*=wJbiR8efg9a!5D>sk=NgSGKCe8LY$ex8rTTF@b}jBn|P+usyAtXvvdyPmwFjfO3j`lnLcfV#ktnyf&96!a`OiYGHF& zrZwN*&a}DPo-4!pWz)939Q9?}-8e;Kh2rK}>`v-Nn+$4sU!@rI^!4aJNsRb6k-i&T9|&g)&!P&u+5^NXDoG2RvXaFfQMipDH6xO)4Qt=Rwt| z_LC2u7dD*!!LD(HR{amNA#@HTDbyxMWi_gT!2kLG40AT0f9Cx1{|s}soPXy0{(muZ z$hzG2ScHun(PP;1M)tS=%h`}M$2J>6N6zJ_FJ;*bKw)Fgi{G?b%Jio;7- zD;$ba`zhAkIB5lU70@v)_{TV=<@%@OxhY>i#abHYrj#$@^t;3jPhrlg>r&RObe&vj zfYa*~hq}k~ywCJ}!1R2`^nAkfeA@I}W}Fj7IA@xkXPcha$!V;CrLy8p`VaZM&Gfv_ z^t{LPe8BX4$n<=|^nBX%Jk#`CW_n)nL=D>PuD5=b>BZc6V#zYL%0I-%RUGi<^dk>U zr{XY`4i!QoA4jLr0r*%YeACmck8x%Xj`tDUo@QNq0nJdGC{A@NqXPh~=MISm&#)R- zt(03VXxju1nnOuCW(K{3vqY45eSbfl&dj@3$YPbI4c=A`Z2;q_fb(vE;cF0#YV~XW0P8H2zm@Y$_g5ntDs@f zvEej1o%rBf&DpY{loS~vPyu&xy>P?_cZHrUegl1@a-=s%F4obPIA~s@Ww0NuLUwjC z=6wMtONDq*DSZ$?Cf5_ye<2i+oPA@(?JuyrW6B;bzs;e+|N9nUWZQDR9$oeTzCiRje?&2A+la( z_lNF)iNpOM@U}3R6a^bM2?TvZKqg&LQ2rrKzRVg@@acOc6#t&Rf{0PCn3rD1>!jca z@3?Y~DnLwB15QGB-ux5^aPQ=TkZvg%%ZX1QF3lEkkl^!Y;7A=px43cja9u31h<(xQJQkXkB+ycR*d=$w_v>b2&z^P*n$LgW;cQ!mTRd06%G#Z)hGY7J{(7Js*r z3>C~HHY4;{m!g{gj_U*wp zSyoWm)Kr+FNMn!acz$}*d@5GZ&)bR_UR-av(Z+TRivy~G%Cv$3z7-ARwrp+Q=JRN4 zflLOI5xYJ*vpZ}s)-cOuZ2_HGg~>mDj8rWjzC8$!LHvw@7*0FQswG5_FStH@@2WwLfRCc-J4mX z&^$vMTvL&OGqmlDuz;yZjN8HzsRwOR)8K93*!4DZg-B{!36g-WX(gzsv9$sD=bc!uTF9RNG)rqa4;}`(}zZ zSB4^>k`&29C~TUCZQG6R3UO&mWoQDvhbtjH-W?UBhi+}OX+YNkU0X)v^xbJoGw1HC zl=Riv#ky328LM}h2gj8Q`hY7#aAOQZ=YI+E2R4~uL1^GR zTV~L(KX}?l3Ni?EIgvhlB&O_TkA+m7lJBHlc9QSnvJY8NNq~b>mxrsV@JpK_IqF|1dtgmyc#Q2(R>|t1H8dFy8EZB9saERl;tIQnxiI~Hl?4< z0X_IBOUIwzKV@BN;!0+wdTB}(bkSTYU1mjhY>C19SXY#qw~rOz&!&CsE&Q4Mnf$fv zGuEUAzHyXna?rIZ4mFOxb?<}X+`c5H3Jezuyiqif&z zlFh=~wOzhut5{A?AFj`q)=P=g*^T*gNeBAddyu^f1n(SV4U%y|))P*rtCZb^o3r*z zXEnvDZ<(^T)i=093(R`xTlOLTT=gCMDDf!T;62K{Cq(=2nU9@Vd*%0RBV$L_=KaX} zI;#PbdaNeWfuRTb?oRRN&+L-m$G_+w|3V+PWn$eCcCU`1vs09vU`b)oJb8kB%**1$ zO($9X6p(=%U%2;IPFGwF{FP-Ul6;dy{Y?IK}SB_>HGP zc<|Zp9EVfU!ynxH+uB=xXPpfcb=Dp{9mH3>cHN(>zOxlI?{i#fBimW=A;^N@D;*-T z|6x;;13dhNr+LJUan76^$lXc&z#Tw-E{_gU@W%`3sR3a*_zy((cH#e*U6*i-6S6IZ^=Do)1nYV4SZkLUO4 zLX|0&$MgCCeH_mxz!r6J@o5l&?Jhn8e+IdE*K~+zLW!3oG(p9^jSj5ohPJJA^B%aa z?7wc_6PP+C@DBJjIe}+i@GfkjoA?Dojq=s;2kP%tC7iBe#H(i+?ytjrX_$7PYwegC zPsy-+f*!aVahbCs%fN%4|Y zTp>x*9!#$0(eYiCB=IdxlK9?D;{AXj-NT!sl3pHOP#qt-R2ONAOIi`X8&urm;Z0F) zjfb}~)<6*Sl!s49Hf}1yw96qOZcOHNQEpx`uagNxa8^160ZS5xul6N#G9l?Hyb1nv zPvMWlLVcOSFUeiw%<>#%M1OT!1wko|z=!ep@WND17UOpOF%hvmm3K3K682N6Jg;ITMAHwrC0}fWGUlw{tlu`w!@nhvthh7RNA*$OC7(Z|jBCYd~WZ=j= z^&PMNj5C|mo!IOlU*NPI^~~4C4;;3mej9j$GeguR*?K9g>QO&8TC@qzAIfLkNVyF^ z%8ce=xsUo=mi_^j`>2PFXDs(ocY1U(}-uA@LX0$ zf8K`YX({^i9z1J}^k=LUQco7?&j;|l(P;i5JRi_Iu~a>QA2Vy}g|I+Kecb3>tXNXN zHOR(_CH1{P6YzYG(X_dEK2V^4yBN=}8P7QSS>2Ci;*!!;_^~R`Be(-meKGI@mnW90 z&m1($ZNsa7lI1s^M~cW_I=qwputa189CF9sh?2L<+qHWNc+b|lx(#EX&2Cl zl6S1Yha~V_EAUiWDN4R)1+E7(O14>HQy@eo?^|K>(g53Tg{=f*N&Ht7cF+o2 z=>zN=E9^;VYRR`&*aj?u9Z~X~2}t~>{aPbRzBfSuq{pU9F^t-xo$Ev1_7u|l`X@9(t&k4WG&EATf-({wBFfCSF4 z0za3)nO5M=ZyaQQXIY`UWli^4f!Mz>qU3%n3_EZ}lssUCVb98lk_WA@-4t4sJY)sF zD}fJ}TA|0tjLx>geuXD4dBh5vS`V;Ct+1tJsx>R@HTw23E9@V{8YPb#uu{X3{d0z+C_vcw8}ldSMlR@f?nEw#cn5@*Ymn@Saz zEB6QDpYr8S5MP%`e5FD2|1kldwpMbKJn}PE*dNs5S z1@5ILzifrgrdnRH!WQKM_No>3CY5{53VW9%ZjFS6`2QZM&suB2PYAZo3S0g?iQ(&3 z;3^4x!wNi2HsehzY#oIm>rF6nfJ;ff-ZB9JJ3-;a1}kheg(e%Vu<69vO;*@rRPkmj z?7=XwMKvk@*Q{m=xX?th=U-wXuow5;YMQ%L~lNFVyK75EZW^NAIU)CyciQnt?u`<^QK%nI8;@#W`M*iNeW3oC3XiF`TO^D-JoImEv~ z3%Hq#&VK91^GF)Mw8B23iodeLo~CkNTVb=P`wm!Pr!izLIcS1W2OJ>aHzpup`(y`v zYXv?*7{9Z^wv&PR-U>TR&HKR$TSTn+(F)t=CH^0>0-q<5{mBaZg|z%Fe!UqU;j}>-^VE0;KiwQQ(1S9r;NA_pB2?*HN6kyJe1n|OfyF)Qpe@!@eRYzF!DIYC&dOe6h4Z5BbGgi-pg zWUduPX}pprtgt6ZzUEnBi%DL~!5$*md~3PQ1!RB9G5aL7WP!Ed6UQj%dD04;L2A3u z3j0O+|3y~d3`((;EVcr_AQLpV^z+$Iy|!`Ny_@uWnns-c>BYVKRvbJ&)qqh_uSEZL z)8EE$MW*odM4n{Uhm>7YXX4*6^7nrE`)!O%^xsFMgI;2#;4n-)xB84(S4?+PIYs{*$CYBPL!`Fh*NXA= zco~}{j@RS?BUR9^zj#{^zB>}gbH37}) z^LwlO&T)4H+BZ>gV7AITu~hgj;2Gkp`aH+=L_18)4x7^e#r`N)Y)Yt@`_(O&4h6?{ zHQ+O`H{{}mynji=L{L>8^Msdf7_XK9XP^YzGv9BQ??w+w-$JMbB z|Ek${^}uVIWlAcMB2cE>Ga!YjU!?`W%l(8~b@U5D#el|qSpKg#5S6}SGyO>eFe#Xf zBQF6pZv-3)CDwM{S4d9p_KYcVMD@38sIQ zgtvTH=Kq!t2RmXaC&9Z!Fq$MkSl`pEl+sN0llp2buGo2VV$MQh(}idj7W5~uoa+KqnJ z#UcNj-468lQ^pxT%Q}IQiOqSV+DkB>*c%&q93VCYypDTIrvR9w@H)JU*KTdj8B1O0 zG(Pq^p7K7m_M;Zu!`LbDbxU45@s!ckHwsTHUYxLRlk5?P__{UEcYnHB@1GkMLOkzk z#oM`0?>0d`YQ;NxcYLaUfjLlY*Y(~g{H^&x_gi~S<#I3J3+q{gUSF0_owhrXZfb2p zy6FUpA1~mKvWeo3Hhe|tqx4Q!JbY#7V+D1V#-X0xyS+J0hf}wq<1lYOE|qf!#9pTl zT}86*!wkFkO_I+W@n`8U5vKL7ns2A~f@!G%JaW7*}iPR4K z&-&3w*-iQsFmmx=WTO&ZPh8oNS7%R%2_;woFjr)#yna2bws=ApJcalm3^B#Cd@~O+ z35Lm6;z&onpmnrbXLhty>T~M4;&CAGLC`$9H0eJ<&-qn^`2|0Iwo-01y6EGyyj8%Ar- zE)y5|UDTc8`p*1zrimXr^Eymho7RQbW(}gDm=R(LFt~u>%C3ACF#Ob&cgCLv-7sgZ ziL1Nui;{2jIUzJ8lPLCfH+~g+OcZqIhwvx02OmvqJPgtGJ|?F0;O#}Tp1hfB0c|25 zCVuaM3F$k<#vZ(>>rf*Jx~?a$RdXViaR)5iAmm@K@VvSY(G5lDA>JOpX&@*GLknID~q{TJll`= zbFFA5d7xgze`dFd`a^hw0tkU6HVA8?#L>a{`qjq4uSMd8yy3ZgJH1Kh+j)b}?b|~w z>D#rSx&}L!Iv;8ktdre+F0GwBgs%pF8ehzF-M_u7b5g?Y)M4*!3&Diz5}ucINQWS_ zBKgS>IhXQF*?&daWq5b^eWSxd?^JQ>QZz;{knqTRdI8+t%nRJxjIMiW1kVwZFXK13 z7k!~u7l7oiZE-ojfO(eaaEIp#CQi2EKG%CPIuPjeBJuuE-q`(ZNDPWZ(J=mp`$ZkH zw&)68%a9%reYM?r)%(^o6^f|=pQ9M_C zIGopUuQPbH_bOgT9KDKr=$~}4_!^!hz8=BT#PF;5Sohpeskhws8?21>Nf&X!HIV6_ zbvB7WQHl5#_l9?L?f~3`s!9~~M)MSL(bcH$z%{(8m^OmfcCR-|frlGCf9XFQxY$rK z&b`w>4bENWer>CckdNZOx?c>vX)NmFM)Kqpfv%p$jITd68U);hqT#iCjeEaQ+u>{Z z6P{Ut{twi)O9$xvbYKkn=?SB}?72>3`GZMkbRry{M|Fc#I*xY`MdNtuq*H-6j|bn} z?*7oAdDCHjwYcg!uB1F4sI`P)W!>cAJg@pwu<60@K<~fNV)J!;LhehZ2q0tt9O_dT za=?uCyPl8CJxO76z%>Wsm|&T`*Yg{5Klv(FnZDwM@jSoYny3XGo&i=*6+Z_2s!0Vk%58(7V~WPek1UE>;|~}iQ=+}yt(-K2HqzBjUCY%=kWZ( zI2U&0mhM;4+Vw9aLHrQaw1%`M6>*Ym0#Mx;P70e z%V%A!wYlFdtRo(i^UxV}&rMiAHc_m+2}|cji^DhZV%Pn;&Ci}BnbCd{uTh1ZEf%=; zM8pmc#PsClf@yVk0ZM?txef@KB`)zz`T+b9*Zh0&Bi=S@hMeg;6X&QJt zZ-ZrN58TcR>ve@UbYb-3>XGepA>&2ethlL*alj89Bjog937~vh`z1bLtdEGhlNa{y z=1X(ZILM*$Nn^2Wl@97LK6lE`;|YRgpA>H6pCsMcromt)=>{`Nl?HQHGaM8@Ox%7a z@6Z;t#RF>`FzGiH1S;?noo>+S2A%FeMJ^MaYk#?u=Mr^Q?&b}$!xAIuNECa2;MK%+ zck@)&#^y>QsxG^mH%jR0kC&|!Ywt!Pp^w;qH}9C%4Rv8nuDneFUyI_&koI2@<2dnI zpUGHa*j1EH=B;Yz+cKcw&;VQC_@;8GyQ{w z>D;8o6p@fufxwVgajH)8D&M!080M7nVpO@gls5#4CrWvf0<_erv)1yJWbG%d=_`k4 zwRobGXN#-KcqYESy$neDh-GEGu|L|^zqgWgo+?AHcNMj!AdKrHI!)o-Ye)O)5Qc`t zo#&=NF}jM6rpQp$JCzSf>V`GDIyc1)Q^A%O+sKlSOy#Xm^8KmMmp7CI(*5JBll}z+ZNm#_Q)k zO$IiMdEba*0>FWXrttwl{Pi^6tIjED(1MvLCq=l_uX<6e3w}<|SPYoX2UUZ$;Itr~ z<9w}vy?AXpZ_Tb1R~>`wZfL+0YyBvP0#;K<*mP4^X9mC86R5!jVji0T+jvB*o5A13 zpVFB;-F+=I8%iqX&*Z~()H%v4uzL|(l8Oj9SFn#OC{WKGYIhe6R?A?a}+NmX-_&bOs2oB}^cm z{7=&R0Z%u})J4Nz@T5`*;LLWOUW;2Y7onMlbrvuJFD3qTZ|BAB5qaC|-P! zFD=+-oT~$O;p8J2)4wH}Jj(N0AKOn=mk$SI zE22^Ks~G+Qr1k5$d>l3lAdQIQ8-?;4_ld?DPjCHT*bpHm*5ehh?vYrVHGhi|0Ov@h z821?NaanWBLHijnIE8TI5|*xF!DBo-gSMn7agZfA3%Ba%gN61CE5>&|#-9O)Cq2%m zrJZaB_o@$kNliq;99~3O3fYV}Q+Gi;+Bo1^NQG$VODdEEgLqV2F^3OhYsC6Fye5{V z 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 IXnXO00j1x&IRF3v diff --git a/www/playground/c/lumbda-c.js b/www/playground/c/lumbda-c.js index f2a7c51..7e9d5de 100644 --- a/www/playground/c/lumbda-c.js +++ b/www/playground/c/lumbda-c.js @@ -1,2 +1,2 @@ -async function createLumbdaC(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var programArgs=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}programArgs=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");class EmscriptenEH{}class EmscriptenSjLj extends EmscriptenEH{}var readyPromiseResolve,readyPromiseReject;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();PIPEFS.root=FS.mount(PIPEFS,{},null);wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("lumbda-c.wasm")}return new URL("lumbda-c.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>(crypto.getRandomValues(view),0)};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}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,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=MEMFS.emptyFileContents??=new Uint8Array(0)}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.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity)newCapacity=Math.max(newCapacity,256);var oldContents=MEMFS.getFileDataAsTypedArray(node);node.contents=new Uint8Array(newCapacity);node.contents.set(oldContents)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;var oldContents=node.contents;node.contents=new Uint8Array(newSize);node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)));node.usedBytes=newSize},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);buffer.set(contents.subarray(position,position+size),offset);return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length}else{MEMFS.expandFileStorage(node,position+length);node.contents.set(buffer.subarray(offset,offset+length),position);node.usedBytes=Math.max(node.usedBytes,position+length)}return length},llseek(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.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}if(contents){if(position>0||position+length{if(typeof str!="string")return str;var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_fileDataToTypedArray=data=>{if(typeof data=="string"){data=intArrayFromString(data,true)}if(!data.subarray){data=new Uint8Array(data)}return data};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{FS_preloadFile(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish).then(onload).catch(onerror)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,filesystems:null,syncFSRequests:0,ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else if(FS.isDir(node.mode)){return 31}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);try{setattr(arg,attr)}catch(e){if(e instanceof RangeError){throw new FS.ErrnoError(22)}throw e}},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);for(var[hash,current]of Object.entries(FS.nameTable)){while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}}node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=FS_modeStringToFlags(flags);if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags??0;opts.encoding=opts.encoding??"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){abort(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags??577;var stream=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data);FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){data=FS_fileDataToTypedArray(data);FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort(`invalid range (${from}, ${to}) or no bytes requested!`);if(to>datalength-1)abort(`only ${datalength} bytes available! programmer error!`);var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText??"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,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={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents(sock,peer){var first=true;function handleOpen(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}}function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(data,isBinary)=>{if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",()=>SOCKFS.emit("close",sock.stream.fd));peer.socket.on("error",error=>{sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])});return}peer.socket.onopen=handleOpen;peer.socket.onclose=()=>SOCKFS.emit("close",sock.stream.fd);peer.socket.onmessage=event=>handleMessage(event.data);peer.socket.onerror=error=>{sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}},poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 0;default:return 28}},close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}for(var peer of Object.values(sock.peers)){try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0},bind(sock,addr,port){if(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},listen(sock,backlog){if(!ENVIRONMENT_IS_NODE){throw new FS.ErrnoError(138)}if(sock.server){throw new FS.ErrnoError(28)}var WebSocketServer=require("ws").Server;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",ws=>{if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var peer=SOCKFS.websocket_sock_ops.createPeer(newsock,ws);newsock.daddr=peer.addr;newsock.dport=peer.port;sock.pending.push(newsock);SOCKFS.emit("connection",newsock.stream.fd)}else{SOCKFS.websocket_sock_ops.createPeer(sock,ws);SOCKFS.emit("connection",sock.stream.fd)}});sock.server.on("close",()=>{SOCKFS.emit("close",sock.stream.fd);sock.server=null});sock.server.on("error",error=>{sock.error=23;SOCKFS.emit("error",[sock.stream.fd,sock.error,"EHOSTUNREACH: Host is unreachable"])})},accept(listensock){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},writeStat(buf,stat){HEAPU32[buf>>2]=stat.dev;HEAPU32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAPU32[buf+12>>2]=stat.uid;HEAPU32[buf+16>>2]=stat.gid;HEAPU32[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;HEAPU32[buf+60>>2]=stats.bsize;HEAP64[buf+8>>3]=BigInt(stats.blocks);HEAP64[buf+16>>3]=BigInt(stats.bfree);HEAP64[buf+24>>3]=BigInt(stats.bavail);HEAP64[buf+32>>3]=BigInt(stats.files);HEAP64[buf+40>>3]=BigInt(stats.ffree);HEAPU32[buf+48>>2]=stats.fsid;HEAPU32[buf+64>>2]=stats.flags;HEAPU32[buf+56>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_dup3(fd,newfd,flags){try{if(fd===newfd)return-28;if(flags&~524288)return-28;var old=SYSCALLS.getStreamFromFD(fd);if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);var stream=FS.dupStream(old,newfd);if(flags&524288){stream.flags|=524288}return stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();var mask=289792;stream.flags=stream.flags&~mask|arg&mask;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;if(flags&64){mode&=~SYSCALLS.currentUmask}return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(mount){return FS.createNode(null,"/",16384|511,0)},createPipe(){var pipe={buckets:[],refcnt:2,timestamp:new Date};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;return{dev:14,ino:node.id,mode:4480,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:timestamp,mtime:timestamp,ctime:timestamp,blksize:4096,blocks:0}},poll(stream,timeout,notifyCallback){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){return 256|4}for(var bucket of pipe.buckets){if(bucket.offset-bucket.roffset>0){return 64|1}}return 0},dup(stream){stream.node.pipe.refcnt++},ioctl(stream,request,argp){if(request==21531){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}HEAP32[argp>>2]=currentLength;return 0}return 28},fsync(stream){return 28},read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}var data=buffer.subarray(offset,offset+length);if(length<=0){return 0}if(currentLength==0){throw new FS.ErrnoError(6)}var toRead=Math.min(currentLength,length);var totalRead=toRead;var toRemove=0;for(var bucket of pipe.buckets){var bucketSize=bucket.offset-bucket.roffset;if(toRead<=bucketSize){var tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);if(toRead=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i0){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}return dataLen},close(stream){var pipe=stream.node.pipe;pipe.refcnt--;if(pipe.refcnt===0){pipe.buckets=null}}},nextname(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe2(fdPtr,flags){try{if(fdPtr==0){throw new FS.ErrnoError(21)}var validFlags=524288|2048;if(flags&~validFlags){throw new FS.ErrnoError(138)}var res=PIPEFS.createPipe();if(flags&2048){FS.getStream(res.readable_fd).flags|=2048;FS.getStream(res.writable_fd).flags|=2048}HEAP32[fdPtr>>2]=res.readable_fd;HEAP32[fdPtr+4>>2]=res.writable_fd;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw new EmscriptenSjLj};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 22;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])programArgs=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;var _malloc,_free,_htons,_lumbda_wasm_init,_lumbda_wasm_eval,_lumbda_wasm_free_result,_ntohs,_setThrew,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,memory,__indirect_function_table,wasmMemory,wasmTable;function assignWasmExports(wasmExports){_malloc=Module["_malloc"]=wasmExports["malloc"];_free=Module["_free"]=wasmExports["free"];_htons=wasmExports["htons"];_lumbda_wasm_init=Module["_lumbda_wasm_init"]=wasmExports["lumbda_wasm_init"];_lumbda_wasm_eval=Module["_lumbda_wasm_eval"]=wasmExports["lumbda_wasm_eval"];_lumbda_wasm_free_result=Module["_lumbda_wasm_free_result"]=wasmExports["lumbda_wasm_free_result"];_ntohs=wasmExports["ntohs"];_setThrew=wasmExports["setThrew"];__emscripten_stack_restore=wasmExports["_emscripten_stack_restore"];__emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"];_emscripten_stack_get_current=wasmExports["emscripten_stack_get_current"];memory=wasmMemory=wasmExports["memory"];__indirect_function_table=wasmTable=wasmExports["__indirect_function_table"]}var wasmImports={__syscall_accept4:___syscall_accept4,__syscall_bind:___syscall_bind,__syscall_connect:___syscall_connect,__syscall_dup3:___syscall_dup3,__syscall_fcntl64:___syscall_fcntl64,__syscall_fstat64:___syscall_fstat64,__syscall_getcwd:___syscall_getcwd,__syscall_ioctl:___syscall_ioctl,__syscall_listen:___syscall_listen,__syscall_lstat64:___syscall_lstat64,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_pipe2:___syscall_pipe2,__syscall_renameat:___syscall_renameat,__syscall_socket:___syscall_socket,__syscall_stat64:___syscall_stat64,__syscall_unlinkat:___syscall_unlinkat,_emscripten_lookup_name:__emscripten_lookup_name,_emscripten_throw_longjmp:__emscripten_throw_longjmp,clock_time_get:_clock_time_get,emscripten_get_now:_emscripten_get_now,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,exit:_exit,fd_close:_fd_close,fd_fdstat_get:_fd_fdstat_get,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write,invoke_i,invoke_ii,invoke_iii,invoke_iiii,invoke_iiiii,invoke_iiiiiiiiii,invoke_iiiiijiiiii,invoke_iiiijii,invoke_iiij,invoke_iiijiii,invoke_iijj,invoke_ij,invoke_iji,invoke_ijj,invoke_ji,invoke_jii,invoke_jiii,invoke_jij,invoke_jj,invoke_jji,invoke_jjii,invoke_jjiii,invoke_jjj,invoke_jjjjjjj,invoke_v,invoke_vi,invoke_vii,invoke_viii,invoke_viiii,invoke_viiiii,invoke_viiji,invoke_vij,invoke_vijj,invoke_vjii,invoke_vjiii,proc_exit:_proc_exit};function invoke_jij(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jji(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiiijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jjiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_ijj(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iji(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vij(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ij(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiijiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vijj(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iijj(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jjii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jj(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vjii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jjj(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jjjjjjj(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiij(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vjiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiiiijiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viiji(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})} +async function createLumbdaC(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var programArgs=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}programArgs=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");class EmscriptenEH{}class EmscriptenSjLj extends EmscriptenEH{}var readyPromiseResolve,readyPromiseReject;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();PIPEFS.root=FS.mount(PIPEFS,{},null);wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("lumbda-c.wasm")}return new URL("lumbda-c.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>(crypto.getRandomValues(view),0)};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}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,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=MEMFS.emptyFileContents??=new Uint8Array(0)}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.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity)newCapacity=Math.max(newCapacity,256);var oldContents=MEMFS.getFileDataAsTypedArray(node);node.contents=new Uint8Array(newCapacity);node.contents.set(oldContents)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;var oldContents=node.contents;node.contents=new Uint8Array(newSize);node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)));node.usedBytes=newSize},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);buffer.set(contents.subarray(position,position+size),offset);return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length}else{MEMFS.expandFileStorage(node,position+length);node.contents.set(buffer.subarray(offset,offset+length),position);node.usedBytes=Math.max(node.usedBytes,position+length)}return length},llseek(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.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}if(contents){if(position>0||position+length{if(typeof str!="string")return str;var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_fileDataToTypedArray=data=>{if(typeof data=="string"){data=intArrayFromString(data,true)}if(!data.subarray){data=new Uint8Array(data)}return data};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{FS_preloadFile(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish).then(onload).catch(onerror)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,filesystems:null,syncFSRequests:0,ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else if(FS.isDir(node.mode)){return 31}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);try{setattr(arg,attr)}catch(e){if(e instanceof RangeError){throw new FS.ErrnoError(22)}throw e}},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);for(var[hash,current]of Object.entries(FS.nameTable)){while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}}node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=FS_modeStringToFlags(flags);if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags??0;opts.encoding=opts.encoding??"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){abort(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags??577;var stream=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data);FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){data=FS_fileDataToTypedArray(data);FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort(`invalid range (${from}, ${to}) or no bytes requested!`);if(to>datalength-1)abort(`only ${datalength} bytes available! programmer error!`);var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText??"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,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={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents(sock,peer){var first=true;function handleOpen(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}}function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(data,isBinary)=>{if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",()=>SOCKFS.emit("close",sock.stream.fd));peer.socket.on("error",error=>{sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])});return}peer.socket.onopen=handleOpen;peer.socket.onclose=()=>SOCKFS.emit("close",sock.stream.fd);peer.socket.onmessage=event=>handleMessage(event.data);peer.socket.onerror=error=>{sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}},poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 0;default:return 28}},close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}for(var peer of Object.values(sock.peers)){try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0},bind(sock,addr,port){if(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},listen(sock,backlog){if(!ENVIRONMENT_IS_NODE){throw new FS.ErrnoError(138)}if(sock.server){throw new FS.ErrnoError(28)}var WebSocketServer=require("ws").Server;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",ws=>{if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var peer=SOCKFS.websocket_sock_ops.createPeer(newsock,ws);newsock.daddr=peer.addr;newsock.dport=peer.port;sock.pending.push(newsock);SOCKFS.emit("connection",newsock.stream.fd)}else{SOCKFS.websocket_sock_ops.createPeer(sock,ws);SOCKFS.emit("connection",sock.stream.fd)}});sock.server.on("close",()=>{SOCKFS.emit("close",sock.stream.fd);sock.server=null});sock.server.on("error",error=>{sock.error=23;SOCKFS.emit("error",[sock.stream.fd,sock.error,"EHOSTUNREACH: Host is unreachable"])})},accept(listensock){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},writeStat(buf,stat){HEAPU32[buf>>2]=stat.dev;HEAPU32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAPU32[buf+12>>2]=stat.uid;HEAPU32[buf+16>>2]=stat.gid;HEAPU32[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;HEAPU32[buf+60>>2]=stats.bsize;HEAP64[buf+8>>3]=BigInt(stats.blocks);HEAP64[buf+16>>3]=BigInt(stats.bfree);HEAP64[buf+24>>3]=BigInt(stats.bavail);HEAP64[buf+32>>3]=BigInt(stats.files);HEAP64[buf+40>>3]=BigInt(stats.ffree);HEAPU32[buf+48>>2]=stats.fsid;HEAPU32[buf+64>>2]=stats.flags;HEAPU32[buf+56>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_dup3(fd,newfd,flags){try{if(fd===newfd)return-28;if(flags&~524288)return-28;var old=SYSCALLS.getStreamFromFD(fd);if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);var stream=FS.dupStream(old,newfd);if(flags&524288){stream.flags|=524288}return stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();var mask=289792;stream.flags=stream.flags&~mask|arg&mask;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;if(flags&64){mode&=~SYSCALLS.currentUmask}return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(mount){return FS.createNode(null,"/",16384|511,0)},createPipe(){var pipe={buckets:[],refcnt:2,timestamp:new Date};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;return{dev:14,ino:node.id,mode:4480,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:timestamp,mtime:timestamp,ctime:timestamp,blksize:4096,blocks:0}},poll(stream,timeout,notifyCallback){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){return 256|4}for(var bucket of pipe.buckets){if(bucket.offset-bucket.roffset>0){return 64|1}}return 0},dup(stream){stream.node.pipe.refcnt++},ioctl(stream,request,argp){if(request==21531){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}HEAP32[argp>>2]=currentLength;return 0}return 28},fsync(stream){return 28},read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}var data=buffer.subarray(offset,offset+length);if(length<=0){return 0}if(currentLength==0){throw new FS.ErrnoError(6)}var toRead=Math.min(currentLength,length);var totalRead=toRead;var toRemove=0;for(var bucket of pipe.buckets){var bucketSize=bucket.offset-bucket.roffset;if(toRead<=bucketSize){var tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);if(toRead=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i0){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}return dataLen},close(stream){var pipe=stream.node.pipe;pipe.refcnt--;if(pipe.refcnt===0){pipe.buckets=null}}},nextname(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe2(fdPtr,flags){try{if(fdPtr==0){throw new FS.ErrnoError(21)}var validFlags=524288|2048;if(flags&~validFlags){throw new FS.ErrnoError(138)}var res=PIPEFS.createPipe();if(flags&2048){FS.getStream(res.readable_fd).flags|=2048;FS.getStream(res.writable_fd).flags|=2048}HEAP32[fdPtr>>2]=res.readable_fd;HEAP32[fdPtr+4>>2]=res.writable_fd;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw new EmscriptenSjLj};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 22;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])programArgs=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;function js_lumbda_bend_call(payload_ptr,payload_len,resp_buf,resp_cap){var bendUrl=globalThis._lumbdaCBendUrl;if(!bendUrl){var msg="no bend URL configured";var n=Math.min(msg.length,resp_cap-1);for(var i=0;i0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})} ;return moduleRtn}export default createLumbdaC; diff --git a/www/playground/c/lumbda-c.loader.js b/www/playground/c/lumbda-c.loader.js index 0a2f5e3..71b0e54 100644 --- a/www/playground/c/lumbda-c.loader.js +++ b/www/playground/c/lumbda-c.loader.js @@ -27,7 +27,13 @@ async function _bootstrap() { _init(); + // bend!-call host bridge — js_lumbda_bend_call inside the wasm + // (EM_JS in lumbda_wasm_entry.c) reads globalThis._lumbdaCBendUrl + // for the destination, then does sync XHR POST and writes the + // response bytes back into the wasm heap. setBendUrl mutates that + // global so runner.js can propagate a saved playground URL. return { + setBendUrl(url) { globalThis._lumbdaCBendUrl = url || null; }, async evalLisp(src) { outBuf = []; errBuf = []; diff --git a/www/playground/c/lumbda-c.wasm b/www/playground/c/lumbda-c.wasm index 01d63e31f30f8d4f7f66ec763947a7e3236e593d..961ed9abb1c723b0cb4ff58d6d9d5c8ee11e16a5 100755 GIT binary patch delta 92315 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 z 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 IXnXO00j1x&IRF3v diff --git a/www/repl/c/lumbda-c.js b/www/repl/c/lumbda-c.js index f2a7c51..7e9d5de 100644 --- a/www/repl/c/lumbda-c.js +++ b/www/repl/c/lumbda-c.js @@ -1,2 +1,2 @@ -async function createLumbdaC(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var programArgs=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}programArgs=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");class EmscriptenEH{}class EmscriptenSjLj extends EmscriptenEH{}var readyPromiseResolve,readyPromiseReject;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();PIPEFS.root=FS.mount(PIPEFS,{},null);wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("lumbda-c.wasm")}return new URL("lumbda-c.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>(crypto.getRandomValues(view),0)};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}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,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=MEMFS.emptyFileContents??=new Uint8Array(0)}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.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity)newCapacity=Math.max(newCapacity,256);var oldContents=MEMFS.getFileDataAsTypedArray(node);node.contents=new Uint8Array(newCapacity);node.contents.set(oldContents)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;var oldContents=node.contents;node.contents=new Uint8Array(newSize);node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)));node.usedBytes=newSize},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);buffer.set(contents.subarray(position,position+size),offset);return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length}else{MEMFS.expandFileStorage(node,position+length);node.contents.set(buffer.subarray(offset,offset+length),position);node.usedBytes=Math.max(node.usedBytes,position+length)}return length},llseek(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.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}if(contents){if(position>0||position+length{if(typeof str!="string")return str;var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_fileDataToTypedArray=data=>{if(typeof data=="string"){data=intArrayFromString(data,true)}if(!data.subarray){data=new Uint8Array(data)}return data};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{FS_preloadFile(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish).then(onload).catch(onerror)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,filesystems:null,syncFSRequests:0,ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else if(FS.isDir(node.mode)){return 31}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);try{setattr(arg,attr)}catch(e){if(e instanceof RangeError){throw new FS.ErrnoError(22)}throw e}},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);for(var[hash,current]of Object.entries(FS.nameTable)){while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}}node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=FS_modeStringToFlags(flags);if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags??0;opts.encoding=opts.encoding??"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){abort(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags??577;var stream=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data);FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){data=FS_fileDataToTypedArray(data);FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort(`invalid range (${from}, ${to}) or no bytes requested!`);if(to>datalength-1)abort(`only ${datalength} bytes available! programmer error!`);var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText??"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,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={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents(sock,peer){var first=true;function handleOpen(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}}function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(data,isBinary)=>{if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",()=>SOCKFS.emit("close",sock.stream.fd));peer.socket.on("error",error=>{sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])});return}peer.socket.onopen=handleOpen;peer.socket.onclose=()=>SOCKFS.emit("close",sock.stream.fd);peer.socket.onmessage=event=>handleMessage(event.data);peer.socket.onerror=error=>{sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}},poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 0;default:return 28}},close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}for(var peer of Object.values(sock.peers)){try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0},bind(sock,addr,port){if(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},listen(sock,backlog){if(!ENVIRONMENT_IS_NODE){throw new FS.ErrnoError(138)}if(sock.server){throw new FS.ErrnoError(28)}var WebSocketServer=require("ws").Server;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",ws=>{if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var peer=SOCKFS.websocket_sock_ops.createPeer(newsock,ws);newsock.daddr=peer.addr;newsock.dport=peer.port;sock.pending.push(newsock);SOCKFS.emit("connection",newsock.stream.fd)}else{SOCKFS.websocket_sock_ops.createPeer(sock,ws);SOCKFS.emit("connection",sock.stream.fd)}});sock.server.on("close",()=>{SOCKFS.emit("close",sock.stream.fd);sock.server=null});sock.server.on("error",error=>{sock.error=23;SOCKFS.emit("error",[sock.stream.fd,sock.error,"EHOSTUNREACH: Host is unreachable"])})},accept(listensock){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},writeStat(buf,stat){HEAPU32[buf>>2]=stat.dev;HEAPU32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAPU32[buf+12>>2]=stat.uid;HEAPU32[buf+16>>2]=stat.gid;HEAPU32[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;HEAPU32[buf+60>>2]=stats.bsize;HEAP64[buf+8>>3]=BigInt(stats.blocks);HEAP64[buf+16>>3]=BigInt(stats.bfree);HEAP64[buf+24>>3]=BigInt(stats.bavail);HEAP64[buf+32>>3]=BigInt(stats.files);HEAP64[buf+40>>3]=BigInt(stats.ffree);HEAPU32[buf+48>>2]=stats.fsid;HEAPU32[buf+64>>2]=stats.flags;HEAPU32[buf+56>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_dup3(fd,newfd,flags){try{if(fd===newfd)return-28;if(flags&~524288)return-28;var old=SYSCALLS.getStreamFromFD(fd);if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);var stream=FS.dupStream(old,newfd);if(flags&524288){stream.flags|=524288}return stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();var mask=289792;stream.flags=stream.flags&~mask|arg&mask;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;if(flags&64){mode&=~SYSCALLS.currentUmask}return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(mount){return FS.createNode(null,"/",16384|511,0)},createPipe(){var pipe={buckets:[],refcnt:2,timestamp:new Date};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;return{dev:14,ino:node.id,mode:4480,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:timestamp,mtime:timestamp,ctime:timestamp,blksize:4096,blocks:0}},poll(stream,timeout,notifyCallback){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){return 256|4}for(var bucket of pipe.buckets){if(bucket.offset-bucket.roffset>0){return 64|1}}return 0},dup(stream){stream.node.pipe.refcnt++},ioctl(stream,request,argp){if(request==21531){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}HEAP32[argp>>2]=currentLength;return 0}return 28},fsync(stream){return 28},read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}var data=buffer.subarray(offset,offset+length);if(length<=0){return 0}if(currentLength==0){throw new FS.ErrnoError(6)}var toRead=Math.min(currentLength,length);var totalRead=toRead;var toRemove=0;for(var bucket of pipe.buckets){var bucketSize=bucket.offset-bucket.roffset;if(toRead<=bucketSize){var tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);if(toRead=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i0){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}return dataLen},close(stream){var pipe=stream.node.pipe;pipe.refcnt--;if(pipe.refcnt===0){pipe.buckets=null}}},nextname(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe2(fdPtr,flags){try{if(fdPtr==0){throw new FS.ErrnoError(21)}var validFlags=524288|2048;if(flags&~validFlags){throw new FS.ErrnoError(138)}var res=PIPEFS.createPipe();if(flags&2048){FS.getStream(res.readable_fd).flags|=2048;FS.getStream(res.writable_fd).flags|=2048}HEAP32[fdPtr>>2]=res.readable_fd;HEAP32[fdPtr+4>>2]=res.writable_fd;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw new EmscriptenSjLj};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 22;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])programArgs=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;var _malloc,_free,_htons,_lumbda_wasm_init,_lumbda_wasm_eval,_lumbda_wasm_free_result,_ntohs,_setThrew,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,memory,__indirect_function_table,wasmMemory,wasmTable;function assignWasmExports(wasmExports){_malloc=Module["_malloc"]=wasmExports["malloc"];_free=Module["_free"]=wasmExports["free"];_htons=wasmExports["htons"];_lumbda_wasm_init=Module["_lumbda_wasm_init"]=wasmExports["lumbda_wasm_init"];_lumbda_wasm_eval=Module["_lumbda_wasm_eval"]=wasmExports["lumbda_wasm_eval"];_lumbda_wasm_free_result=Module["_lumbda_wasm_free_result"]=wasmExports["lumbda_wasm_free_result"];_ntohs=wasmExports["ntohs"];_setThrew=wasmExports["setThrew"];__emscripten_stack_restore=wasmExports["_emscripten_stack_restore"];__emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"];_emscripten_stack_get_current=wasmExports["emscripten_stack_get_current"];memory=wasmMemory=wasmExports["memory"];__indirect_function_table=wasmTable=wasmExports["__indirect_function_table"]}var wasmImports={__syscall_accept4:___syscall_accept4,__syscall_bind:___syscall_bind,__syscall_connect:___syscall_connect,__syscall_dup3:___syscall_dup3,__syscall_fcntl64:___syscall_fcntl64,__syscall_fstat64:___syscall_fstat64,__syscall_getcwd:___syscall_getcwd,__syscall_ioctl:___syscall_ioctl,__syscall_listen:___syscall_listen,__syscall_lstat64:___syscall_lstat64,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_pipe2:___syscall_pipe2,__syscall_renameat:___syscall_renameat,__syscall_socket:___syscall_socket,__syscall_stat64:___syscall_stat64,__syscall_unlinkat:___syscall_unlinkat,_emscripten_lookup_name:__emscripten_lookup_name,_emscripten_throw_longjmp:__emscripten_throw_longjmp,clock_time_get:_clock_time_get,emscripten_get_now:_emscripten_get_now,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,exit:_exit,fd_close:_fd_close,fd_fdstat_get:_fd_fdstat_get,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write,invoke_i,invoke_ii,invoke_iii,invoke_iiii,invoke_iiiii,invoke_iiiiiiiiii,invoke_iiiiijiiiii,invoke_iiiijii,invoke_iiij,invoke_iiijiii,invoke_iijj,invoke_ij,invoke_iji,invoke_ijj,invoke_ji,invoke_jii,invoke_jiii,invoke_jij,invoke_jj,invoke_jji,invoke_jjii,invoke_jjiii,invoke_jjj,invoke_jjjjjjj,invoke_v,invoke_vi,invoke_vii,invoke_viii,invoke_viiii,invoke_viiiii,invoke_viiji,invoke_vij,invoke_vijj,invoke_vjii,invoke_vjiii,proc_exit:_proc_exit};function invoke_jij(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jji(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiiijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jjiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_ijj(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iji(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vij(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ij(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiijiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vijj(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iijj(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jjii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jj(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vjii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jjj(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jjjjjjj(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0);return 0n}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiij(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vjiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiiiijiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_viiji(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(!(e instanceof EmscriptenEH))throw e;_setThrew(1,0)}}function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})} +async function createLumbdaC(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var programArgs=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}programArgs=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");class EmscriptenEH{}class EmscriptenSjLj extends EmscriptenEH{}var readyPromiseResolve,readyPromiseReject;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();PIPEFS.root=FS.mount(PIPEFS,{},null);wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("lumbda-c.wasm")}return new URL("lumbda-c.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>(crypto.getRandomValues(view),0)};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}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,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=MEMFS.emptyFileContents??=new Uint8Array(0)}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.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity)newCapacity=Math.max(newCapacity,256);var oldContents=MEMFS.getFileDataAsTypedArray(node);node.contents=new Uint8Array(newCapacity);node.contents.set(oldContents)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;var oldContents=node.contents;node.contents=new Uint8Array(newSize);node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)));node.usedBytes=newSize},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);buffer.set(contents.subarray(position,position+size),offset);return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length}else{MEMFS.expandFileStorage(node,position+length);node.contents.set(buffer.subarray(offset,offset+length),position);node.usedBytes=Math.max(node.usedBytes,position+length)}return length},llseek(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.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}if(contents){if(position>0||position+length{if(typeof str!="string")return str;var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_fileDataToTypedArray=data=>{if(typeof data=="string"){data=intArrayFromString(data,true)}if(!data.subarray){data=new Uint8Array(data)}return data};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{FS_preloadFile(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish).then(onload).catch(onerror)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,filesystems:null,syncFSRequests:0,ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else if(FS.isDir(node.mode)){return 31}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);try{setattr(arg,attr)}catch(e){if(e instanceof RangeError){throw new FS.ErrnoError(22)}throw e}},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);for(var[hash,current]of Object.entries(FS.nameTable)){while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}}node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=FS_modeStringToFlags(flags);if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags??0;opts.encoding=opts.encoding??"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){abort(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags??577;var stream=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data);FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){data=FS_fileDataToTypedArray(data);FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort(`invalid range (${from}, ${to}) or no bytes requested!`);if(to>datalength-1)abort(`only ${datalength} bytes available! programmer error!`);var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText??"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,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={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents(sock,peer){var first=true;function handleOpen(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}}function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(data,isBinary)=>{if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",()=>SOCKFS.emit("close",sock.stream.fd));peer.socket.on("error",error=>{sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])});return}peer.socket.onopen=handleOpen;peer.socket.onclose=()=>SOCKFS.emit("close",sock.stream.fd);peer.socket.onmessage=event=>handleMessage(event.data);peer.socket.onerror=error=>{sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}},poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 0;default:return 28}},close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}for(var peer of Object.values(sock.peers)){try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0},bind(sock,addr,port){if(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},listen(sock,backlog){if(!ENVIRONMENT_IS_NODE){throw new FS.ErrnoError(138)}if(sock.server){throw new FS.ErrnoError(28)}var WebSocketServer=require("ws").Server;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",ws=>{if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var peer=SOCKFS.websocket_sock_ops.createPeer(newsock,ws);newsock.daddr=peer.addr;newsock.dport=peer.port;sock.pending.push(newsock);SOCKFS.emit("connection",newsock.stream.fd)}else{SOCKFS.websocket_sock_ops.createPeer(sock,ws);SOCKFS.emit("connection",sock.stream.fd)}});sock.server.on("close",()=>{SOCKFS.emit("close",sock.stream.fd);sock.server=null});sock.server.on("error",error=>{sock.error=23;SOCKFS.emit("error",[sock.stream.fd,sock.error,"EHOSTUNREACH: Host is unreachable"])})},accept(listensock){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},writeStat(buf,stat){HEAPU32[buf>>2]=stat.dev;HEAPU32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAPU32[buf+12>>2]=stat.uid;HEAPU32[buf+16>>2]=stat.gid;HEAPU32[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;HEAPU32[buf+60>>2]=stats.bsize;HEAP64[buf+8>>3]=BigInt(stats.blocks);HEAP64[buf+16>>3]=BigInt(stats.bfree);HEAP64[buf+24>>3]=BigInt(stats.bavail);HEAP64[buf+32>>3]=BigInt(stats.files);HEAP64[buf+40>>3]=BigInt(stats.ffree);HEAPU32[buf+48>>2]=stats.fsid;HEAPU32[buf+64>>2]=stats.flags;HEAPU32[buf+56>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_dup3(fd,newfd,flags){try{if(fd===newfd)return-28;if(flags&~524288)return-28;var old=SYSCALLS.getStreamFromFD(fd);if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);var stream=FS.dupStream(old,newfd);if(flags&524288){stream.flags|=524288}return stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();var mask=289792;stream.flags=stream.flags&~mask|arg&mask;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;if(flags&64){mode&=~SYSCALLS.currentUmask}return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(mount){return FS.createNode(null,"/",16384|511,0)},createPipe(){var pipe={buckets:[],refcnt:2,timestamp:new Date};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;return{dev:14,ino:node.id,mode:4480,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:timestamp,mtime:timestamp,ctime:timestamp,blksize:4096,blocks:0}},poll(stream,timeout,notifyCallback){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){return 256|4}for(var bucket of pipe.buckets){if(bucket.offset-bucket.roffset>0){return 64|1}}return 0},dup(stream){stream.node.pipe.refcnt++},ioctl(stream,request,argp){if(request==21531){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}HEAP32[argp>>2]=currentLength;return 0}return 28},fsync(stream){return 28},read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets){currentLength+=bucket.offset-bucket.roffset}var data=buffer.subarray(offset,offset+length);if(length<=0){return 0}if(currentLength==0){throw new FS.ErrnoError(6)}var toRead=Math.min(currentLength,length);var totalRead=toRead;var toRemove=0;for(var bucket of pipe.buckets){var bucketSize=bucket.offset-bucket.roffset;if(toRead<=bucketSize){var tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);if(toRead=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i0){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}return dataLen},close(stream){var pipe=stream.node.pipe;pipe.refcnt--;if(pipe.refcnt===0){pipe.buckets=null}}},nextname(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe2(fdPtr,flags){try{if(fdPtr==0){throw new FS.ErrnoError(21)}var validFlags=524288|2048;if(flags&~validFlags){throw new FS.ErrnoError(138)}var res=PIPEFS.createPipe();if(flags&2048){FS.getStream(res.readable_fd).flags|=2048;FS.getStream(res.writable_fd).flags|=2048}HEAP32[fdPtr>>2]=res.readable_fd;HEAP32[fdPtr+4>>2]=res.writable_fd;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw new EmscriptenSjLj};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 22;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])programArgs=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;function js_lumbda_bend_call(payload_ptr,payload_len,resp_buf,resp_cap){var bendUrl=globalThis._lumbdaCBendUrl;if(!bendUrl){var msg="no bend URL configured";var n=Math.min(msg.length,resp_cap-1);for(var i=0;i0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})} ;return moduleRtn}export default createLumbdaC; diff --git a/www/repl/c/lumbda-c.loader.js b/www/repl/c/lumbda-c.loader.js index 0a2f5e3..71b0e54 100644 --- a/www/repl/c/lumbda-c.loader.js +++ b/www/repl/c/lumbda-c.loader.js @@ -27,7 +27,13 @@ async function _bootstrap() { _init(); + // bend!-call host bridge — js_lumbda_bend_call inside the wasm + // (EM_JS in lumbda_wasm_entry.c) reads globalThis._lumbdaCBendUrl + // for the destination, then does sync XHR POST and writes the + // response bytes back into the wasm heap. setBendUrl mutates that + // global so runner.js can propagate a saved playground URL. return { + setBendUrl(url) { globalThis._lumbdaCBendUrl = url || null; }, async evalLisp(src) { outBuf = []; errBuf = []; diff --git a/www/repl/c/lumbda-c.wasm b/www/repl/c/lumbda-c.wasm index 01d63e31f30f8d4f7f66ec763947a7e3236e593d..961ed9abb1c723b0cb4ff58d6d9d5c8ee11e16a5 100755 GIT binary patch delta 92315 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 z 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 IXnXO00j1x&IRF3v