diff --git a/docs/bocfel-core.ee206e48.wasm b/docs/bocfel-core.ee206e48.wasm new file mode 100644 index 0000000..6a47a99 Binary files /dev/null and b/docs/bocfel-core.ee206e48.wasm differ diff --git a/docs/emglken/bocfel-core.js b/docs/emglken/bocfel-core.js new file mode 100644 index 0000000..a860d3f --- /dev/null +++ b/docs/emglken/bocfel-core.js @@ -0,0 +1,4497 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +function(Module = {}) { + +var Module = typeof Module != "undefined" ? Module : {}; + +var readyPromiseResolve, readyPromiseReject; + +Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; +}); + +var moduleOverrides = Object.assign({}, Module); + +var arguments_ = []; + +var thisProgram = "./this.program"; + +var quit_ = (status, toThrow) => { + throw toThrow; +}; + +var ENVIRONMENT_IS_WEB = true; + +var ENVIRONMENT_IS_WORKER = false; + +var scriptDirectory = ""; + +function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; +} + +var read_, readAsync, readBinary, setWindowTitle; + +if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (typeof document != "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (_scriptDir) { + scriptDirectory = _scriptDir; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + { + read_ = url => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = url => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + readAsync = (url, onload, onerror) => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = () => { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + } + setWindowTitle = title => document.title = title; +} else {} + +var out = Module["print"] || console.log.bind(console); + +var err = Module["printErr"] || console.warn.bind(console); + +Object.assign(Module, moduleOverrides); + +moduleOverrides = null; + +if (Module["arguments"]) arguments_ = Module["arguments"]; + +if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; + +if (Module["quit"]) quit_ = Module["quit"]; + +var wasmBinary; + +if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + +var noExitRuntime = Module["noExitRuntime"] || false; + +if (typeof WebAssembly != "object") { + abort("no native wasm support detected"); +} + +var wasmMemory; + +var ABORT = false; + +var EXITSTATUS; + +function assert(condition, text) { + if (!condition) { + abort(text); + } +} + +var UTF8Decoder = new TextDecoder("utf8"); + +function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; + return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr))); +} + +function UTF8ToString(ptr, maxBytesToRead) { + if (!ptr) return ""; + var maxPtr = ptr + maxBytesToRead; + for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end; + return UTF8Decoder.decode(HEAPU8.subarray(ptr, end)); +} + +function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; +} + +function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); +} + +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i); + if (c <= 127) { + len++; + } else if (c <= 2047) { + len += 2; + } else if (c >= 55296 && c <= 57343) { + len += 4; + ++i; + } else { + len += 3; + } + } + return len; +} + +var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + +function updateMemoryViews() { + var b = wasmMemory.buffer; + Module["HEAP8"] = HEAP8 = new Int8Array(b); + Module["HEAP16"] = HEAP16 = new Int16Array(b); + Module["HEAP32"] = HEAP32 = new Int32Array(b); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); + Module["HEAPF32"] = HEAPF32 = new Float32Array(b); + Module["HEAPF64"] = HEAPF64 = new Float64Array(b); +} + +var wasmTable; + +var __ATPRERUN__ = []; + +var __ATINIT__ = []; + +var __ATMAIN__ = []; + +var __ATEXIT__ = []; + +var __ATPOSTRUN__ = []; + +var runtimeInitialized = false; + +var runtimeExited = false; + +var runtimeKeepaliveCounter = 0; + +function keepRuntimeAlive() { + return noExitRuntime || runtimeKeepaliveCounter > 0; +} + +function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); +} + +function initRuntime() { + runtimeInitialized = true; + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); + FS.ignorePermissions = false; + TTY.init(); + callRuntimeCallbacks(__ATINIT__); +} + +function preMain() { + callRuntimeCallbacks(__ATMAIN__); +} + +function exitRuntime() { + ___funcs_on_exit(); + callRuntimeCallbacks(__ATEXIT__); + FS.quit(); + TTY.shutdown(); + runtimeExited = true; +} + +function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); +} + +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} + +var runDependencies = 0; + +var runDependencyWatcher = null; + +var dependenciesFulfilled = null; + +function getUniqueRunDependency(id) { + return id; +} + +function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } +} + +function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } +} + +function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what = "Aborted(" + what + ")"; + err(what); + ABORT = true; + EXITSTATUS = 1; + what += ". Build with -sASSERTIONS for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; +} + +var dataURIPrefix = "data:application/octet-stream;base64,"; + +function isDataURI(filename) { + return filename.startsWith(dataURIPrefix); +} + +var wasmBinaryFile; + +if (Module["locateFile"]) { + wasmBinaryFile = "bocfel-core.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } +} else { + wasmBinaryFile = new URL("bocfel-core.wasm", import.meta.url).href; +} + +function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } + throw "both async and sync fetching of the wasm failed"; + } catch (err) { + abort(err); + } +} + +function getBinaryPromise(binaryFile) { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function(response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + binaryFile + "'"; + } + return response["arrayBuffer"](); + }).catch(function() { + return getBinary(binaryFile); + }); + } + } + return Promise.resolve().then(function() { + return getBinary(binaryFile); + }); +} + +function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile).then(function(binary) { + return WebAssembly.instantiate(binary, imports); + }).then(function(instance) { + return instance; + }).then(receiver, function(reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason); + }); +} + +function instantiateAsync(binary, binaryFile, imports, callback) { + if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function(response) { + var result = WebAssembly.instantiateStreaming(response, imports); + return result.then(callback, function(reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(binaryFile, imports, callback); + }); + }); + } else { + return instantiateArrayBuffer(binaryFile, imports, callback); + } +} + +function createWasm() { + var info = { + "a": wasmImports + }; + function receiveInstance(instance, module) { + var exports = instance.exports; + exports = Asyncify.instrumentWasmExports(exports); + Module["asm"] = exports; + wasmMemory = Module["asm"]["da"]; + updateMemoryViews(); + wasmTable = Module["asm"]["na"]; + addOnInit(Module["asm"]["ea"]); + removeRunDependency("wasm-instantiate"); + return exports; + } + addRunDependency("wasm-instantiate"); + function receiveInstantiationResult(result) { + receiveInstance(result["instance"]); + } + if (Module["instantiateWasm"]) { + try { + return Module["instantiateWasm"](info, receiveInstance); + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + readyPromiseReject(e); + } + } + instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject); + return {}; +} + +var tempDouble; + +var tempI64; + +function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) { + return Asyncify.handleAsync(async () => { + if (!Module.emglken_stdin_buffers.length) { + await new Promise(resolve => { + Module.emglken_stdin_ready = resolve; + }); + } + const input = Module.emglken_stdin_buffers.shift(); + const len = Math.min(input.length, maxlen); + if (len == input.length) { + HEAPU8.set(input, buffer); + } else { + HEAPU8.set(input.subarray(0, len), buffer); + Module.emglken_stdin_buffers.unshift(input.subarray(len)); + } + return len; + }); +} + +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +} + +function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + callbacks.shift()(Module); + } +} + +var exceptionCaught = []; + +function exception_addRef(info) { + info.add_ref(); +} + +var uncaughtExceptionCount = 0; + +function ___cxa_begin_catch(ptr) { + var info = new ExceptionInfo(ptr); + if (!info.get_caught()) { + info.set_caught(true); + uncaughtExceptionCount--; + } + info.set_rethrown(false); + exceptionCaught.push(info); + exception_addRef(info); + return info.get_exception_ptr(); +} + +var exceptionLast = 0; + +function exception_decRef(info) { + if (info.release_ref() && !info.get_rethrown()) { + var destructor = info.get_destructor(); + if (destructor) { + (a1 => dynCall_ii.apply(null, [ destructor, a1 ]))(info.excPtr); + } + ___cxa_free_exception(info.excPtr); + } +} + +function ___cxa_end_catch() { + _setThrew(0); + var info = exceptionCaught.pop(); + exception_decRef(info); + exceptionLast = 0; +} + +function ExceptionInfo(excPtr) { + this.excPtr = excPtr; + this.ptr = excPtr - 24; + this.set_type = function(type) { + HEAPU32[this.ptr + 4 >> 2] = type; + }; + this.get_type = function() { + return HEAPU32[this.ptr + 4 >> 2]; + }; + this.set_destructor = function(destructor) { + HEAPU32[this.ptr + 8 >> 2] = destructor; + }; + this.get_destructor = function() { + return HEAPU32[this.ptr + 8 >> 2]; + }; + this.set_refcount = function(refcount) { + HEAP32[this.ptr >> 2] = refcount; + }; + this.set_caught = function(caught) { + caught = caught ? 1 : 0; + HEAP8[this.ptr + 12 >> 0] = caught; + }; + this.get_caught = function() { + return HEAP8[this.ptr + 12 >> 0] != 0; + }; + this.set_rethrown = function(rethrown) { + rethrown = rethrown ? 1 : 0; + HEAP8[this.ptr + 13 >> 0] = rethrown; + }; + this.get_rethrown = function() { + return HEAP8[this.ptr + 13 >> 0] != 0; + }; + this.init = function(type, destructor) { + this.set_adjusted_ptr(0); + this.set_type(type); + this.set_destructor(destructor); + this.set_refcount(0); + this.set_caught(false); + this.set_rethrown(false); + }; + this.add_ref = function() { + var value = HEAP32[this.ptr >> 2]; + HEAP32[this.ptr >> 2] = value + 1; + }; + this.release_ref = function() { + var prev = HEAP32[this.ptr >> 2]; + HEAP32[this.ptr >> 2] = prev - 1; + return prev === 1; + }; + this.set_adjusted_ptr = function(adjustedPtr) { + HEAPU32[this.ptr + 16 >> 2] = adjustedPtr; + }; + this.get_adjusted_ptr = function() { + return HEAPU32[this.ptr + 16 >> 2]; + }; + this.get_exception_ptr = function() { + var isPointer = ___cxa_is_pointer_type(this.get_type()); + if (isPointer) { + return HEAPU32[this.excPtr >> 2]; + } + var adjusted = this.get_adjusted_ptr(); + if (adjusted !== 0) return adjusted; + return this.excPtr; + }; +} + +function ___resumeException(ptr) { + if (!exceptionLast) { + exceptionLast = ptr; + } + throw ptr; +} + +function ___cxa_find_matching_catch() { + var thrown = exceptionLast; + if (!thrown) { + setTempRet0(0); + return 0; + } + var info = new ExceptionInfo(thrown); + info.set_adjusted_ptr(thrown); + var thrownType = info.get_type(); + if (!thrownType) { + setTempRet0(0); + return thrown; + } + for (var i = 0; i < arguments.length; i++) { + var caughtType = arguments[i]; + if (caughtType === 0 || caughtType === thrownType) { + break; + } + var adjusted_ptr_addr = info.ptr + 16; + if (___cxa_can_catch(caughtType, thrownType, adjusted_ptr_addr)) { + setTempRet0(caughtType); + return thrown; + } + } + setTempRet0(thrownType); + return thrown; +} + +var ___cxa_find_matching_catch_2 = ___cxa_find_matching_catch; + +var ___cxa_find_matching_catch_3 = ___cxa_find_matching_catch; + +var ___cxa_find_matching_catch_4 = ___cxa_find_matching_catch; + +var ___cxa_find_matching_catch_5 = ___cxa_find_matching_catch; + +var ___cxa_find_matching_catch_6 = ___cxa_find_matching_catch; + +var ___cxa_find_matching_catch_7 = ___cxa_find_matching_catch; + +function ___cxa_rethrow() { + var info = exceptionCaught.pop(); + if (!info) { + abort("no exception to throw"); + } + var ptr = info.excPtr; + if (!info.get_rethrown()) { + exceptionCaught.push(info); + info.set_rethrown(true); + info.set_caught(false); + uncaughtExceptionCount++; + } + exceptionLast = ptr; + throw ptr; +} + +function ___cxa_throw(ptr, type, destructor) { + var info = new ExceptionInfo(ptr); + info.init(type, destructor); + exceptionLast = ptr; + uncaughtExceptionCount++; + throw ptr; +} + +function ___cxa_uncaught_exceptions() { + return uncaughtExceptionCount; +} + +var PATH = { + isAbs: path => path.charAt(0) === "/", + splitPath: filename => { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + }, + normalizeArray: (parts, allowAboveRoot) => { + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === ".") { + parts.splice(i, 1); + } else if (last === "..") { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + if (allowAboveRoot) { + for (;up; up--) { + parts.unshift(".."); + } + } + return parts; + }, + normalize: path => { + var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === "/"; + path = PATH.normalizeArray(path.split("/").filter(p => !!p), !isAbsolute).join("/"); + if (!path && !isAbsolute) { + path = "."; + } + if (path && trailingSlash) { + path += "/"; + } + return (isAbsolute ? "/" : "") + path; + }, + dirname: path => { + var result = PATH.splitPath(path), root = result[0], dir = result[1]; + if (!root && !dir) { + return "."; + } + if (dir) { + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + }, + basename: path => { + if (path === "/") return "/"; + path = PATH.normalize(path); + path = path.replace(/\/$/, ""); + var lastSlash = path.lastIndexOf("/"); + if (lastSlash === -1) return path; + return path.substr(lastSlash + 1); + }, + join: function() { + var paths = Array.prototype.slice.call(arguments); + return PATH.normalize(paths.join("/")); + }, + join2: (l, r) => { + return PATH.normalize(l + "/" + r); + } +}; + +function getRandomDevice() { + if (typeof crypto == "object" && typeof crypto["getRandomValues"] == "function") { + var randomBuffer = new Uint8Array(1); + return () => { + crypto.getRandomValues(randomBuffer); + return randomBuffer[0]; + }; + } else return () => abort("randomDevice"); +} + +var PATH_FS = { + resolve: function() { + var resolvedPath = "", resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = i >= 0 ? arguments[i] : FS.cwd(); + if (typeof path != "string") { + throw new TypeError("Arguments to path.resolve must be strings"); + } else if (!path) { + return ""; + } + resolvedPath = path + "/" + resolvedPath; + resolvedAbsolute = PATH.isAbs(path); + } + resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter(p => !!p), !resolvedAbsolute).join("/"); + return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; + }, + relative: (from, to) => { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (;start < arr.length; start++) { + if (arr[start] !== "") break; + } + var end = arr.length - 1; + for (;end >= 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 < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push(".."); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join("/"); + } +}; + +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} + +var TTY = { + ttys: [], + init: function() {}, + shutdown: function() {}, + register: function(dev, ops) { + TTY.ttys[dev] = { + input: [], + output: [], + ops: ops + }; + FS.registerDevice(dev, TTY.stream_ops); + }, + stream_ops: { + open: function(stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43); + } + stream.tty = tty; + stream.seekable = false; + }, + close: function(stream) { + stream.tty.ops.fsync(stream.tty); + }, + fsync: function(stream) { + stream.tty.ops.fsync(stream.tty); + }, + read: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60); + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset + i]); + } + } catch (e) { + throw new FS.ErrnoError(29); + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }, + default_tty_ops: { + get_char: function(tty) { + if (!tty.input.length) { + var result = null; + if (typeof window != "undefined" && typeof window.prompt == "function") { + result = window.prompt("Input: "); + if (result !== null) { + result += "\n"; + } + } else if (typeof readline == "function") { + result = readline(); + if (result !== null) { + result += "\n"; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + }, + put_char: function(tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function(tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + }, + default_tty1_ops: { + put_char: function(tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function(tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + } +}; + +function mmapAlloc(size) { + abort(); +} + +var MEMFS = { + ops_table: null, + mount: function(mount) { + return MEMFS.createNode(null, "/", 16384 | 511, 0); + }, + createNode: function(parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + throw new FS.ErrnoError(63); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, + stream: { + llseek: MEMFS.stream_ops.llseek + } + }, + file: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: FS.chrdev_stream_ops + } + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + if (parent) { + parent.contents[name] = node; + parent.timestamp = node.timestamp; + } + return node; + }, + getFileDataAsTypedArray: function(node) { + if (!node.contents) return new Uint8Array(0); + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); + return new Uint8Array(node.contents); + }, + expandFileStorage: function(node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); + }, + resizeFileStorage: function(node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; + node.usedBytes = 0; + } else { + var oldContents = node.contents; + node.contents = new Uint8Array(newSize); + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); + } + node.usedBytes = newSize; + } + }, + node_ops: { + getattr: function(node) { + var attr = {}; + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + }, + setattr: function(node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + }, + lookup: function(parent, name) { + throw FS.genericErrors[44]; + }, + mknod: function(parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + }, + rename: function(old_node, new_dir, new_name) { + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) {} + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(55); + } + } + } + delete old_node.parent.contents[old_node.name]; + old_node.parent.timestamp = Date.now(); + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + new_dir.timestamp = old_node.parent.timestamp; + old_node.parent = new_dir; + }, + unlink: function(parent, name) { + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + rmdir: function(parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(55); + } + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + readdir: function(node) { + var entries = [ ".", ".." ]; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + }, + symlink: function(parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); + node.link = oldpath; + return node; + }, + readlink: function(node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(28); + } + return node.link; + } + }, + stream_ops: { + read: function(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + if (size > 8 && contents.subarray) { + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; + } + return size; + }, + write: function(stream, buffer, offset, length, position, canOwn) { + if (buffer.buffer === HEAP8.buffer) { + canOwn = false; + } + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + if (buffer.subarray && (!node.contents || node.contents.subarray)) { + if (canOwn) { + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { + node.contents = buffer.slice(offset, offset + length); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + MEMFS.expandFileStorage(node, position + length); + if (node.contents.subarray && buffer.subarray) { + node.contents.set(buffer.subarray(offset, offset + length), position); + } else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; + } + } + node.usedBytes = Math.max(node.usedBytes, position + length); + return length; + }, + llseek: function(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + }, + allocate: function(stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + }, + mmap: function(stream, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + var ptr; + var allocated; + var contents = stream.node.contents; + if (!(flags & 2) && contents.buffer === HEAP8.buffer) { + allocated = false; + ptr = contents.byteOffset; + } else { + if (position > 0 || position + length < contents.length) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + HEAP8.set(contents, ptr); + } + return { + ptr: ptr, + allocated: allocated + }; + }, + msync: function(stream, buffer, offset, length, mmapFlags) { + MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + return 0; + } + } +}; + +function asyncLoad(url, onload, onerror, noRunDep) { + var dep = !noRunDep ? getUniqueRunDependency("al " + url) : ""; + readAsync(url, arrayBuffer => { + assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); + onload(new Uint8Array(arrayBuffer)); + if (dep) removeRunDependency(dep); + }, event => { + if (onerror) { + onerror(); + } else { + throw 'Loading data file "' + url + '" failed.'; + } + }); + if (dep) addRunDependency(dep); +} + +var FS = { + root: null, + mounts: [], + devices: {}, + streams: [], + nextInode: 1, + nameTable: null, + currentPath: "/", + initialized: false, + ignorePermissions: true, + ErrnoError: null, + genericErrors: {}, + filesystems: null, + syncFSRequests: 0, + lookupPath: (path, opts = {}) => { + path = PATH_FS.resolve(path); + if (!path) return { + path: "", + node: null + }; + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + opts = Object.assign(defaults, opts); + if (opts.recurse_count > 8) { + throw new FS.ErrnoError(32); + } + var parts = path.split("/").filter(p => !!p); + var current = FS.root; + var current_path = "/"; + for (var i = 0; i < parts.length; i++) { + var islast = i === parts.length - 1; + if (islast && opts.parent) { + break; + } + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + if (FS.isMountpoint(current)) { + if (!islast || islast && opts.follow_mount) { + current = current.mounted.root; + } + } + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + var lookup = FS.lookupPath(current_path, { + recurse_count: opts.recurse_count + 1 + }); + current = lookup.node; + if (count++ > 40) { + throw new FS.ErrnoError(32); + } + } + } + } + return { + path: current_path, + node: current + }; + }, + getPath: node => { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path; + } + path = path ? node.name + "/" + path : node.name; + node = node.parent; + } + }, + hashName: (parentid, name) => { + var hash = 0; + for (var i = 0; i < name.length; i++) { + hash = (hash << 5) - hash + name.charCodeAt(i) | 0; + } + return (parentid + hash >>> 0) % FS.nameTable.length; + }, + hashAddNode: node => { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + }, + hashRemoveNode: node => { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + }, + lookupNode: (parent, name) => { + var errCode = FS.mayLookup(parent); + if (errCode) { + throw new FS.ErrnoError(errCode, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + return FS.lookup(parent, name); + }, + createNode: (parent, name, mode, rdev) => { + var node = new FS.FSNode(parent, name, mode, rdev); + FS.hashAddNode(node); + return node; + }, + destroyNode: node => { + FS.hashRemoveNode(node); + }, + isRoot: node => { + return node === node.parent; + }, + isMountpoint: node => { + return !!node.mounted; + }, + isFile: mode => { + return (mode & 61440) === 32768; + }, + isDir: mode => { + return (mode & 61440) === 16384; + }, + isLink: mode => { + return (mode & 61440) === 40960; + }, + isChrdev: mode => { + return (mode & 61440) === 8192; + }, + isBlkdev: mode => { + return (mode & 61440) === 24576; + }, + isFIFO: mode => { + return (mode & 61440) === 4096; + }, + isSocket: mode => { + return (mode & 49152) === 49152; + }, + flagModes: { + "r": 0, + "r+": 2, + "w": 577, + "w+": 578, + "a": 1089, + "a+": 1090 + }, + modeStringToFlags: str => { + var flags = FS.flagModes[str]; + if (typeof flags == "undefined") { + throw new Error("Unknown file open mode: " + str); + } + return flags; + }, + flagsToPermissionString: flag => { + var perms = [ "r", "w", "rw" ][flag & 3]; + if (flag & 512) { + perms += "w"; + } + return perms; + }, + nodePermissions: (node, perms) => { + if (FS.ignorePermissions) { + return 0; + } + if (perms.includes("r") && !(node.mode & 292)) { + return 2; + } else if (perms.includes("w") && !(node.mode & 146)) { + return 2; + } else if (perms.includes("x") && !(node.mode & 73)) { + return 2; + } + return 0; + }, + mayLookup: dir => { + var errCode = FS.nodePermissions(dir, "x"); + if (errCode) return errCode; + if (!dir.node_ops.lookup) return 2; + return 0; + }, + mayCreate: (dir, name) => { + try { + var node = FS.lookupNode(dir, name); + return 20; + } catch (e) {} + return FS.nodePermissions(dir, "wx"); + }, + mayDelete: (dir, name, isdir) => { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var errCode = FS.nodePermissions(dir, "wx"); + if (errCode) { + return errCode; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 54; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 10; + } + } else { + if (FS.isDir(node.mode)) { + return 31; + } + } + return 0; + }, + mayOpen: (node, flags) => { + if (!node) { + return 44; + } + if (FS.isLink(node.mode)) { + return 32; + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { + return 31; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + }, + MAX_OPEN_FDS: 4096, + nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => { + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(33); + }, + getStream: fd => FS.streams[fd], + createStream: (stream, fd_start, fd_end) => { + if (!FS.FSStream) { + FS.FSStream = function() { + this.shared = {}; + }; + FS.FSStream.prototype = {}; + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: function() { + return this.node; + }, + set: function(val) { + this.node = val; + } + }, + isRead: { + get: function() { + return (this.flags & 2097155) !== 1; + } + }, + isWrite: { + get: function() { + return (this.flags & 2097155) !== 0; + } + }, + isAppend: { + get: function() { + return this.flags & 1024; + } + }, + flags: { + get: function() { + return this.shared.flags; + }, + set: function(val) { + this.shared.flags = val; + } + }, + position: { + get: function() { + return this.shared.position; + }, + set: function(val) { + this.shared.position = val; + } + } + }); + } + stream = Object.assign(new FS.FSStream(), stream); + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + }, + closeStream: fd => { + FS.streams[fd] = null; + }, + chrdev_stream_ops: { + open: stream => { + var device = FS.getDevice(stream.node.rdev); + stream.stream_ops = device.stream_ops; + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + }, + llseek: () => { + throw new FS.ErrnoError(70); + } + }, + major: dev => dev >> 8, + minor: dev => dev & 255, + makedev: (ma, mi) => ma << 8 | mi, + registerDevice: (dev, ops) => { + FS.devices[dev] = { + stream_ops: ops + }; + }, + getDevice: dev => FS.devices[dev], + getMounts: mount => { + var mounts = []; + var check = [ mount ]; + while (check.length) { + var m = check.pop(); + mounts.push(m); + check.push.apply(check, m.mounts); + } + return mounts; + }, + syncfs: (populate, callback) => { + if (typeof populate == "function") { + callback = populate; + populate = false; + } + FS.syncFSRequests++; + if (FS.syncFSRequests > 1) { + err("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"); + } + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + function doCallback(errCode) { + FS.syncFSRequests--; + return callback(errCode); + } + function done(errCode) { + if (errCode) { + if (!done.errored) { + done.errored = true; + return doCallback(errCode); + } + return; + } + if (++completed >= mounts.length) { + doCallback(null); + } + } + mounts.forEach(mount => { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + }, + mount: (type, opts, mountpoint) => { + var root = mountpoint === "/"; + var pseudo = !mountpoint; + var node; + if (root && FS.root) { + throw new FS.ErrnoError(10); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + mountpoint = lookup.path; + node = lookup.node; + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + } + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + if (root) { + FS.root = mountRoot; + } else if (node) { + node.mounted = mount; + if (node.mount) { + node.mount.mounts.push(mount); + } + } + return mountRoot; + }, + unmount: mountpoint => { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(28); + } + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + Object.keys(FS.nameTable).forEach(hash => { + var current = FS.nameTable[hash]; + while (current) { + var next = current.name_next; + if (mounts.includes(current.mount)) { + FS.destroyNode(current); + } + current = next; + } + }); + node.mounted = null; + var idx = node.mount.mounts.indexOf(mount); + node.mount.mounts.splice(idx, 1); + }, + lookup: (parent, name) => { + return parent.node_ops.lookup(parent, name); + }, + mknod: (path, mode, dev) => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === "." || name === "..") { + throw new FS.ErrnoError(28); + } + var errCode = FS.mayCreate(parent, name); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.mknod(parent, name, mode, dev); + }, + create: (path, mode) => { + mode = mode !== undefined ? mode : 438; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + }, + mkdir: (path, mode) => { + mode = mode !== undefined ? mode : 511; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + }, + mkdirTree: (path, mode) => { + var dirs = path.split("/"); + var d = ""; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += "/" + dirs[i]; + 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); + } catch (e) { + throw e; + } finally { + FS.hashAddNode(old_node); + } + }, + rmdir: path => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, true); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + }, + readdir: path => { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(54); + } + return node.node_ops.readdir(node); + }, + unlink: path => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, false); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + }, + readlink: path => { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(44); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(28); + } + return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + }, + stat: (path, dontFollow) => { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(44); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(63); + } + return node.node_ops.getattr(node); + }, + lstat: path => { + return FS.stat(path, true); + }, + chmod: (path, mode, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + mode: mode & 4095 | node.mode & ~4095, + timestamp: Date.now() + }); + }, + lchmod: (path, mode) => { + FS.chmod(path, mode, true); + }, + fchmod: (fd, mode) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chmod(stream.node, mode); + }, + chown: (path, uid, gid, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + }); + }, + lchown: (path, uid, gid) => { + FS.chown(path, uid, gid, true); + }, + fchown: (fd, uid, gid) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chown(stream.node, uid, gid); + }, + truncate: (path, len) => { + if (len < 0) { + throw new FS.ErrnoError(28); + } + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: true + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(31); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(28); + } + var errCode = FS.nodePermissions(node, "w"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + }, + ftruncate: (fd, len) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(28); + } + FS.truncate(stream.node, len); + }, + utime: (path, atime, mtime) => { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + }, + open: (path, flags, mode) => { + if (path === "") { + throw new FS.ErrnoError(44); + } + flags = typeof flags == "string" ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode == "undefined" ? 438 : mode; + if (flags & 64) { + mode = mode & 4095 | 32768; + } else { + mode = 0; + } + var node; + if (typeof path == "object") { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 131072) + }); + node = lookup.node; + } catch (e) {} + } + var created = false; + if (flags & 64) { + if (node) { + if (flags & 128) { + throw new FS.ErrnoError(20); + } + } else { + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(44); + } + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + if (flags & 65536 && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + if (!created) { + var errCode = FS.mayOpen(node, flags); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + } + if (flags & 512 && !created) { + FS.truncate(node, 0); + } + flags &= ~(128 | 512 | 131072); + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + ungotten: [], + error: false + }); + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module["logReadFiles"] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + } + } + return stream; + }, + close: stream => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (stream.getdents) stream.getdents = null; + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + stream.fd = null; + }, + isClosed: stream => { + return stream.fd === null; + }, + llseek: (stream, offset, whence) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(70); + } + if (whence != 0 && whence != 1 && whence != 2) { + throw new FS.ErrnoError(28); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + }, + read: (stream, buffer, offset, length, position) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(28); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + }, + write: (stream, buffer, offset, length, position, canOwn) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(28); + } + if (stream.seekable && stream.flags & 1024) { + FS.llseek(stream, 0, 2); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + return bytesWritten; + }, + allocate: (stream, offset, length) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(28); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(138); + } + stream.stream_ops.allocate(stream, offset, length); + }, + mmap: (stream, length, position, prot, flags) => { + if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) { + throw new FS.ErrnoError(2); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(2); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(43); + } + return stream.stream_ops.mmap(stream, length, position, prot, flags); + }, + msync: (stream, buffer, offset, length, mmapFlags) => { + if (!stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + }, + munmap: stream => 0, + ioctl: (stream, cmd, arg) => { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + }, + readFile: (path, opts = {}) => { + opts.flags = opts.flags || 0; + opts.encoding = opts.encoding || "binary"; + if (opts.encoding !== "utf8" && opts.encoding !== "binary") { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === "utf8") { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === "binary") { + ret = buf; + } + FS.close(stream); + return ret; + }, + writeFile: (path, data, opts = {}) => { + opts.flags = opts.flags || 577; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data == "string") { + var buf = new Uint8Array(lengthBytesUTF8(data) + 1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); + } else { + throw new Error("Unsupported data type"); + } + FS.close(stream); + }, + cwd: () => FS.currentPath, + chdir: path => { + var lookup = FS.lookupPath(path, { + follow: true + }); + if (lookup.node === null) { + throw new FS.ErrnoError(44); + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(54); + } + var errCode = FS.nodePermissions(lookup.node, "x"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + FS.currentPath = lookup.path; + }, + createDefaultDirectories: () => { + FS.mkdir("/tmp"); + FS.mkdir("/home"); + FS.mkdir("/home/web_user"); + }, + createDefaultDevices: () => { + FS.mkdir("/dev"); + FS.registerDevice(FS.makedev(1, 3), { + read: () => 0, + write: (stream, buffer, offset, length, pos) => length + }); + FS.mkdev("/dev/null", FS.makedev(1, 3)); + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev("/dev/tty", FS.makedev(5, 0)); + FS.mkdev("/dev/tty1", FS.makedev(6, 0)); + var random_device = getRandomDevice(); + FS.createDevice("/dev", "random", random_device); + FS.createDevice("/dev", "urandom", random_device); + FS.mkdir("/dev/shm"); + FS.mkdir("/dev/shm/tmp"); + }, + createSpecialDirectories: () => { + FS.mkdir("/proc"); + var proc_self = FS.mkdir("/proc/self"); + FS.mkdir("/proc/self/fd"); + FS.mount({ + mount: () => { + var node = FS.createNode(proc_self, "fd", 16384 | 511, 73); + node.node_ops = { + lookup: (parent, name) => { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + var ret = { + parent: null, + mount: { + mountpoint: "fake" + }, + node_ops: { + readlink: () => stream.path + } + }; + ret.parent = ret; + return ret; + } + }; + return node; + } + }, {}, "/proc/self/fd"); + }, + createStandardStreams: () => { + if (Module["stdin"]) { + FS.createDevice("/dev", "stdin", Module["stdin"]); + } else { + FS.symlink("/dev/tty", "/dev/stdin"); + } + if (Module["stdout"]) { + FS.createDevice("/dev", "stdout", null, Module["stdout"]); + } else { + FS.symlink("/dev/tty", "/dev/stdout"); + } + if (Module["stderr"]) { + FS.createDevice("/dev", "stderr", null, Module["stderr"]); + } else { + FS.symlink("/dev/tty1", "/dev/stderr"); + } + var stdin = FS.open("/dev/stdin", 0); + var stdout = FS.open("/dev/stdout", 1); + var stderr = FS.open("/dev/stderr", 1); + }, + ensureErrnoError: () => { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + this.name = "ErrnoError"; + this.node = node; + this.setErrno = function(errno) { + this.errno = errno; + }; + this.setErrno(errno); + this.message = "FS error"; + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + [ 44 ].forEach(code => { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = ""; + }); + }, + staticInit: () => { + FS.ensureErrnoError(); + FS.nameTable = new Array(4096); + FS.mount(MEMFS, {}, "/"); + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + FS.filesystems = { + "MEMFS": MEMFS + }; + }, + init: (input, output, error) => { + FS.init.initialized = true; + FS.ensureErrnoError(); + Module["stdin"] = input || Module["stdin"]; + Module["stdout"] = output || Module["stdout"]; + Module["stderr"] = error || Module["stderr"]; + FS.createStandardStreams(); + }, + quit: () => { + FS.init.initialized = false; + _fflush(0); + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + }, + getMode: (canRead, canWrite) => { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + }, + 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) {} + parent = current; + } + return current; + }, + createFile: (parent, name, properties, canRead, canWrite) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + }, + createDataFile: (parent, name, data, canRead, canWrite, canOwn) => { + var path = name; + if (parent) { + parent = typeof parent == "string" ? parent : FS.getPath(parent); + path = name ? PATH.join2(parent, name) : parent; + } + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data == "string") { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + 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); + } + return node; + }, + createDevice: (parent, name, input, output) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + FS.registerDevice(dev, { + open: stream => { + stream.seekable = false; + }, + close: stream => { + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: (stream, buffer, offset, length, pos) => { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: (stream, buffer, offset, length, pos) => { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset + i]); + } catch (e) { + throw new FS.ErrnoError(29); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + }, + forceLoadFile: obj => { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + if (typeof XMLHttpRequest != "undefined") { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (read_) { + try { + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + throw new FS.ErrnoError(29); + } + } else { + throw new Error("Cannot load without read() or XMLHttpRequest."); + } + }, + createLazyFile: (parent, name, url, canRead, canWrite) => { + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; + } + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length - 1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = idx / this.chunkSize | 0; + return this.getter(chunkNum)[chunkOffset]; + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + var xhr = new XMLHttpRequest(); + xhr.open("HEAD", url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + var chunkSize = 1024 * 1024; + if (!hasByteServing) chunkSize = datalength; + var doXHR = (from, to) => { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!"); + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + xhr.responseType = "arraybuffer"; + if (xhr.overrideMimeType) { + xhr.overrideMimeType("text/plain; charset=x-user-defined"); + } + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } + return intArrayFromString(xhr.responseText || "", true); + }; + var lazyArray = this; + lazyArray.setDataGetter(chunkNum => { + var start = chunkNum * chunkSize; + var end = (chunkNum + 1) * chunkSize - 1; + end = Math.min(end, datalength - 1); + if (typeof lazyArray.chunks[chunkNum] == "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof lazyArray.chunks[chunkNum] == "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + if (usesGzip || !datalength) { + chunkSize = datalength = 1; + datalength = this.getter(0).length; + chunkSize = datalength; + out("LazyFiles on gzip forces download of the whole file when length is accessed"); + } + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + }; + if (typeof XMLHttpRequest != "undefined") { + if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; + var lazyArray = new LazyUint8Array(); + Object.defineProperties(lazyArray, { + length: { + get: function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }, + chunkSize: { + get: function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + } + }); + var properties = { + isDevice: false, + contents: lazyArray + }; + } else { + var properties = { + isDevice: false, + url: url + }; + } + var node = FS.createFile(parent, name, properties, canRead, canWrite); + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + Object.defineProperties(node, { + usedBytes: { + get: function() { + return this.contents.length; + } + } + }); + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(key => { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + FS.forceLoadFile(node); + return fn.apply(null, arguments); + }; + }); + function writeChunks(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= contents.length) return 0; + var size = Math.min(contents.length - position, length); + if (contents.slice) { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents.get(position + i); + } + } + return size; + } + stream_ops.read = (stream, buffer, offset, length, position) => { + FS.forceLoadFile(node); + return writeChunks(stream, buffer, offset, length, position); + }; + stream_ops.mmap = (stream, length, position, prot, flags) => { + FS.forceLoadFile(node); + var ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + writeChunks(stream, HEAP8, ptr, length, position); + return { + ptr: ptr, + allocated: true + }; + }; + node.stream_ops = stream_ops; + return node; + }, + createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => { + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency("cp " + fullname); + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => { + if (onerror) onerror(); + removeRunDependency(dep); + })) { + return; + } + finish(byteArray); + } + addRunDependency(dep); + if (typeof url == "string") { + asyncLoad(url, byteArray => processData(byteArray), onerror); + } else { + processData(url); + } + }, + indexedDB: () => { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + }, + DB_NAME: () => { + return "EM_FS_" + window.location.pathname; + }, + DB_VERSION: 20, + DB_STORE_NAME: "FILE_DATA", + saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => { + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = () => { + out("creating db"); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = () => { + var db = openRequest.result; + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readwrite"); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(path => { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = () => { + ok++; + if (ok + fail == total) finish(); + }; + putRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }, + loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => { + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; + openRequest.onsuccess = () => { + var db = openRequest.result; + try { + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readonly"); + } catch (e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(path => { + var getRequest = files.get(path); + getRequest.onsuccess = () => { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + } +}; + +var SYSCALLS = { + DEFAULT_POLLMASK: 5, + calculateAt: function(dirfd, path, allowEmpty) { + if (PATH.isAbs(path)) { + return path; + } + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = SYSCALLS.getStreamFromFD(dirfd); + dir = dirstream.path; + } + if (path.length == 0) { + if (!allowEmpty) { + throw new FS.ErrnoError(44); + } + return dir; + } + return PATH.join2(dir, path); + }, + doStat: function(func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + return -54; + } + throw e; + } + HEAP32[buf >> 2] = stat.dev; + HEAP32[buf + 8 >> 2] = stat.ino; + HEAP32[buf + 12 >> 2] = stat.mode; + HEAPU32[buf + 16 >> 2] = stat.nlink; + HEAP32[buf + 20 >> 2] = stat.uid; + HEAP32[buf + 24 >> 2] = stat.gid; + HEAP32[buf + 28 >> 2] = stat.rdev; + tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1]; + HEAP32[buf + 48 >> 2] = 4096; + HEAP32[buf + 52 >> 2] = stat.blocks; + var atime = stat.atime.getTime(); + var mtime = stat.mtime.getTime(); + var ctime = stat.ctime.getTime(); + tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1]; + HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3; + tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1]; + HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3; + tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1]; + HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3; + tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1]; + return 0; + }, + doMsync: function(addr, stream, len, flags, offset) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (flags & 2) { + return 0; + } + var buffer = HEAPU8.slice(addr, addr + len); + FS.msync(stream, buffer, offset, len, flags); + }, + varargs: undefined, + get: function() { + SYSCALLS.varargs += 4; + var ret = HEAP32[SYSCALLS.varargs - 4 >> 2]; + return ret; + }, + getStr: function(ptr) { + var ret = UTF8ToString(ptr); + return ret; + }, + getStreamFromFD: function(fd) { + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + return stream; + } +}; + +function ___syscall_faccessat(dirfd, path, amode, flags) { + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + if (amode & ~7) { + return -28; + } + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + if (!node) { + return -44; + } + var perms = ""; + if (amode & 4) perms += "r"; + if (amode & 2) perms += "w"; + if (amode & 1) perms += "x"; + if (perms && FS.nodePermissions(node, perms)) { + return -2; + } + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function setErrNo(value) { + HEAP32[___errno_location() >> 2] = value; + return value; +} + +function ___syscall_fcntl64(fd, cmd, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (cmd) { + case 0: + { + var arg = SYSCALLS.get(); + if (arg < 0) { + return -28; + } + var newStream; + newStream = FS.createStream(stream, arg); + return newStream.fd; + } + + case 1: + case 2: + return 0; + + case 3: + return stream.flags; + + case 4: + { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0; + } + + case 5: + { + var arg = SYSCALLS.get(); + var offset = 0; + HEAP16[arg + offset >> 1] = 2; + return 0; + } + + case 6: + case 7: + return 0; + + case 16: + case 8: + return -28; + + case 9: + setErrNo(28); + return -1; + + default: + { + return -28; + } + } + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_getcwd(buf, size) { + try { + if (size === 0) return -28; + var cwd = FS.cwd(); + var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1; + if (size < cwdLengthInBytes) return -68; + stringToUTF8(cwd, buf, size); + return cwdLengthInBytes; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_ioctl(fd, op, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (op) { + case 21509: + case 21505: + { + if (!stream.tty) return -59; + return 0; + } + + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: + { + if (!stream.tty) return -59; + return 0; + } + + case 21519: + { + if (!stream.tty) return -59; + var argp = SYSCALLS.get(); + HEAP32[argp >> 2] = 0; + return 0; + } + + case 21520: + { + if (!stream.tty) return -59; + return -28; + } + + case 21531: + { + var argp = SYSCALLS.get(); + return FS.ioctl(stream, op, argp); + } + + case 21523: + { + if (!stream.tty) return -59; + return 0; + } + + case 21524: + { + if (!stream.tty) return -59; + return 0; + } + + default: + return -28; + } + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_openat(dirfd, path, flags, varargs) { + SYSCALLS.varargs = varargs; + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + var mode = varargs ? SYSCALLS.get() : 0; + return FS.open(path, flags, mode).fd; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +var nowIsMonotonic = true; + +function __emscripten_get_now_is_monotonic() { + return nowIsMonotonic; +} + +function readI53FromI64(ptr) { + return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296; +} + +function __isLeapYear(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +} + +var __MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ]; + +var __MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ]; + +function __yday_from_date(date) { + var isLeapYear = __isLeapYear(date.getFullYear()); + var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE; + var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1; + return yday; +} + +function __localtime_js(time, tmPtr) { + var date = new Date(readI53FromI64(time) * 1e3); + HEAP32[tmPtr >> 2] = date.getSeconds(); + HEAP32[tmPtr + 4 >> 2] = date.getMinutes(); + HEAP32[tmPtr + 8 >> 2] = date.getHours(); + HEAP32[tmPtr + 12 >> 2] = date.getDate(); + HEAP32[tmPtr + 16 >> 2] = date.getMonth(); + HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900; + HEAP32[tmPtr + 24 >> 2] = date.getDay(); + var yday = __yday_from_date(date) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; + HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60); + var start = new Date(date.getFullYear(), 0, 1); + var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); + var winterOffset = start.getTimezoneOffset(); + var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0; + HEAP32[tmPtr + 32 >> 2] = dst; +} + +function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +function __tzset_js(timezone, daylight, tzname) { + var currentYear = new Date().getFullYear(); + var winter = new Date(currentYear, 0, 1); + var summer = new Date(currentYear, 6, 1); + var winterOffset = winter.getTimezoneOffset(); + var summerOffset = summer.getTimezoneOffset(); + var stdTimezoneOffset = Math.max(winterOffset, summerOffset); + HEAPU32[timezone >> 2] = stdTimezoneOffset * 60; + HEAP32[daylight >> 2] = Number(winterOffset != summerOffset); + function extractZone(date) { + var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); + return match ? match[1] : "GMT"; + } + var winterName = extractZone(winter); + var summerName = extractZone(summer); + var winterNamePtr = allocateUTF8(winterName); + var summerNamePtr = allocateUTF8(summerName); + if (summerOffset < winterOffset) { + HEAPU32[tzname >> 2] = winterNamePtr; + HEAPU32[tzname + 4 >> 2] = summerNamePtr; + } else { + HEAPU32[tzname >> 2] = summerNamePtr; + HEAPU32[tzname + 4 >> 2] = winterNamePtr; + } +} + +function _abort() { + abort(""); +} + +function _emscripten_date_now() { + return Date.now(); +} + +var _emscripten_get_now; + +_emscripten_get_now = () => performance.now(); + +function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); +} + +function getHeapMax() { + return 2147483648; +} + +function emscripten_realloc_buffer(size) { + var b = wasmMemory.buffer; + try { + wasmMemory.grow(size - b.byteLength + 65535 >>> 16); + updateMemoryViews(); + return 1; + } catch (e) {} +} + +function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + var maxHeapSize = getHeapMax(); + if (requestedSize > maxHeapSize) { + return false; + } + let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple; + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + .2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; +} + +var ENV = {}; + +function getExecutableName() { + return thisProgram || "./this.program"; +} + +function getEnvStrings() { + if (!getEnvStrings.strings) { + var lang = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8"; + var env = { + "USER": "web_user", + "LOGNAME": "web_user", + "PATH": "/", + "PWD": "/", + "HOME": "/home/web_user", + "LANG": lang, + "_": getExecutableName() + }; + for (var x in ENV) { + if (ENV[x] === undefined) delete env[x]; else env[x] = ENV[x]; + } + var strings = []; + for (var x in env) { + strings.push(x + "=" + env[x]); + } + getEnvStrings.strings = strings; + } + return getEnvStrings.strings; +} + +function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + HEAP8[buffer++ >> 0] = str.charCodeAt(i); + } + if (!dontAddNull) HEAP8[buffer >> 0] = 0; +} + +function _environ_get(__environ, environ_buf) { + var bufSize = 0; + getEnvStrings().forEach(function(string, i) { + var ptr = environ_buf + bufSize; + HEAPU32[__environ + i * 4 >> 2] = ptr; + writeAsciiToMemory(string, ptr); + bufSize += string.length + 1; + }); + return 0; +} + +function _environ_sizes_get(penviron_count, penviron_buf_size) { + var strings = getEnvStrings(); + HEAPU32[penviron_count >> 2] = strings.length; + var bufSize = 0; + strings.forEach(function(string) { + bufSize += string.length + 1; + }); + HEAPU32[penviron_buf_size >> 2] = bufSize; + return 0; +} + +function _proc_exit(code) { + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + if (Module["onExit"]) Module["onExit"](code); + ABORT = true; + } + quit_(code, new ExitStatus(code)); +} + +function exitJS(status, implicit) { + EXITSTATUS = status; + if (!keepRuntimeAlive()) { + exitRuntime(); + } + _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 doReadv(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 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 < len) break; + if (typeof offset !== "undefined") { + offset += curr; + } + } + return ret; +} + +function _fd_read(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doReadv(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function convertI32PairToI53Checked(lo, hi) { + return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN; +} + +function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + try { + var offset = convertI32PairToI53Checked(offset_low, offset_high); + if (isNaN(offset)) return 61; + var stream = SYSCALLS.getStreamFromFD(fd); + FS.llseek(stream, offset, whence); + tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1]; + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function doWritev(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[iov + 4 >> 2]; + iov += 8; + var curr = FS.write(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (typeof offset !== "undefined") { + offset += curr; + } + } + return ret; +} + +function _fd_write(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doWritev(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function _llvm_eh_typeid_for(type) { + return type; +} + +function __arraySum(array, index) { + var sum = 0; + for (var i = 0; i <= index; sum += array[i++]) {} + return sum; +} + +var __MONTH_DAYS_LEAP = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; + +var __MONTH_DAYS_REGULAR = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; + +function __addDays(date, days) { + var newDate = new Date(date.getTime()); + while (days > 0) { + var leap = __isLeapYear(newDate.getFullYear()); + var currentMonth = newDate.getMonth(); + var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth]; + if (days > daysInCurrentMonth - newDate.getDate()) { + days -= daysInCurrentMonth - newDate.getDate() + 1; + newDate.setDate(1); + if (currentMonth < 11) { + newDate.setMonth(currentMonth + 1); + } else { + newDate.setMonth(0); + newDate.setFullYear(newDate.getFullYear() + 1); + } + } else { + newDate.setDate(newDate.getDate() + days); + return newDate; + } + } + return newDate; +} + +function writeArrayToMemory(array, buffer) { + HEAP8.set(array, buffer); +} + +function _strftime(s, maxsize, format, tm) { + var tm_zone = HEAP32[tm + 40 >> 2]; + var date = { + tm_sec: HEAP32[tm >> 2], + tm_min: HEAP32[tm + 4 >> 2], + tm_hour: HEAP32[tm + 8 >> 2], + tm_mday: HEAP32[tm + 12 >> 2], + tm_mon: HEAP32[tm + 16 >> 2], + tm_year: HEAP32[tm + 20 >> 2], + tm_wday: HEAP32[tm + 24 >> 2], + tm_yday: HEAP32[tm + 28 >> 2], + tm_isdst: HEAP32[tm + 32 >> 2], + tm_gmtoff: HEAP32[tm + 36 >> 2], + tm_zone: tm_zone ? UTF8ToString(tm_zone) : "" + }; + var pattern = UTF8ToString(format); + var EXPANSION_RULES_1 = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var rule in EXPANSION_RULES_1) { + pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule]); + } + var WEEKDAYS = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]; + var MONTHS = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; + function leadingSomething(value, digits, character) { + var str = typeof value == "number" ? value.toString() : value || ""; + while (str.length < digits) { + str = character[0] + str; + } + return str; + } + function leadingNulls(value, digits) { + return leadingSomething(value, digits, "0"); + } + function compareByDay(date1, date2) { + function sgn(value) { + return value < 0 ? -1 : value > 0 ? 1 : 0; + } + var compare; + if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) { + if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) { + compare = sgn(date1.getDate() - date2.getDate()); + } + } + return compare; + } + function getFirstWeekStartDate(janFourth) { + switch (janFourth.getDay()) { + case 0: + return new Date(janFourth.getFullYear() - 1, 11, 29); + + case 1: + return janFourth; + + case 2: + return new Date(janFourth.getFullYear(), 0, 3); + + case 3: + return new Date(janFourth.getFullYear(), 0, 2); + + case 4: + return new Date(janFourth.getFullYear(), 0, 1); + + case 5: + return new Date(janFourth.getFullYear() - 1, 11, 31); + + case 6: + return new Date(janFourth.getFullYear() - 1, 11, 30); + } + } + function getWeekBasedYear(date) { + var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday); + var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4); + var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4); + var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); + var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); + if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) { + if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) { + return thisDate.getFullYear() + 1; + } + return thisDate.getFullYear(); + } + return thisDate.getFullYear() - 1; + } + var EXPANSION_RULES_2 = { + "%a": function(date) { + return WEEKDAYS[date.tm_wday].substring(0, 3); + }, + "%A": function(date) { + return WEEKDAYS[date.tm_wday]; + }, + "%b": function(date) { + return MONTHS[date.tm_mon].substring(0, 3); + }, + "%B": function(date) { + return MONTHS[date.tm_mon]; + }, + "%C": function(date) { + var year = date.tm_year + 1900; + return leadingNulls(year / 100 | 0, 2); + }, + "%d": function(date) { + return leadingNulls(date.tm_mday, 2); + }, + "%e": function(date) { + return leadingSomething(date.tm_mday, 2, " "); + }, + "%g": function(date) { + return getWeekBasedYear(date).toString().substring(2); + }, + "%G": function(date) { + return getWeekBasedYear(date); + }, + "%H": function(date) { + return leadingNulls(date.tm_hour, 2); + }, + "%I": function(date) { + var twelveHour = date.tm_hour; + if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12; + return leadingNulls(twelveHour, 2); + }, + "%j": function(date) { + return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3); + }, + "%m": function(date) { + return leadingNulls(date.tm_mon + 1, 2); + }, + "%M": function(date) { + return leadingNulls(date.tm_min, 2); + }, + "%n": function() { + return "\n"; + }, + "%p": function(date) { + if (date.tm_hour >= 0 && date.tm_hour < 12) { + return "AM"; + } + return "PM"; + }, + "%S": function(date) { + return leadingNulls(date.tm_sec, 2); + }, + "%t": function() { + return "\t"; + }, + "%u": function(date) { + return date.tm_wday || 7; + }, + "%U": function(date) { + var days = date.tm_yday + 7 - date.tm_wday; + return leadingNulls(Math.floor(days / 7), 2); + }, + "%V": function(date) { + var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7); + if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) { + val++; + } + if (!val) { + val = 52; + var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7; + if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) { + val++; + } + } else if (val == 53) { + var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7; + if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1; + } + return leadingNulls(val, 2); + }, + "%w": function(date) { + return date.tm_wday; + }, + "%W": function(date) { + var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7; + return leadingNulls(Math.floor(days / 7), 2); + }, + "%y": function(date) { + return (date.tm_year + 1900).toString().substring(2); + }, + "%Y": function(date) { + return date.tm_year + 1900; + }, + "%z": function(date) { + var off = date.tm_gmtoff; + var ahead = off >= 0; + off = Math.abs(off) / 60; + off = off / 60 * 100 + off % 60; + return (ahead ? "+" : "-") + String("0000" + off).slice(-4); + }, + "%Z": function(date) { + return date.tm_zone; + }, + "%%": function() { + return "%"; + } + }; + pattern = pattern.replace(/%%/g, "\0\0"); + for (var rule in EXPANSION_RULES_2) { + if (pattern.includes(rule)) { + pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date)); + } + } + pattern = pattern.replace(/\0\0/g, "%"); + var bytes = intArrayFromString(pattern, false); + if (bytes.length > maxsize) { + return 0; + } + writeArrayToMemory(bytes, s); + return bytes.length - 1; +} + +function _strftime_l(s, maxsize, format, tm, loc) { + return _strftime(s, maxsize, format, tm); +} + +function handleException(e) { + if (e instanceof ExitStatus || e == "unwind") { + return EXITSTATUS; + } + quit_(1, e); +} + +function allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +function runAndAbortIfError(func) { + try { + return func(); + } catch (e) { + abort(e); + } +} + +function maybeExit() { + if (!keepRuntimeAlive()) { + try { + _exit(EXITSTATUS); + } catch (e) { + handleException(e); + } + } +} + +function callUserCallback(func) { + if (runtimeExited || ABORT) { + return; + } + try { + func(); + maybeExit(); + } catch (e) { + handleException(e); + } +} + +function runtimeKeepalivePush() { + runtimeKeepaliveCounter += 1; +} + +function runtimeKeepalivePop() { + runtimeKeepaliveCounter -= 1; +} + +var Asyncify = { + instrumentWasmImports: function(imports) { + var ASYNCIFY_IMPORTS = [ "invoke_*", "emscripten_sleep", "emscripten_wget", "emscripten_wget_data", "emscripten_idb_load", "emscripten_idb_store", "emscripten_idb_delete", "emscripten_idb_exists", "emscripten_idb_load_blob", "emscripten_idb_store_blob", "SDL_Delay", "emscripten_scan_registers", "emscripten_lazy_load_code", "emscripten_fiber_swap", "__load_secondary_module", "fd_sync", "__wasi_fd_sync", "_emval_await", "_dlopen_js", "__asyncjs__*" ]; + for (var x in imports) { + (function(x) { + var original = imports[x]; + var sig = original.sig; + if (typeof original == "function") { + var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith("__asyncjs__"); + } + })(x); + } + }, + instrumentWasmExports: function(exports) { + var ret = {}; + for (var x in exports) { + (function(x) { + var original = exports[x]; + if (typeof original == "function") { + ret[x] = function() { + Asyncify.exportCallStack.push(x); + try { + return original.apply(null, arguments); + } finally { + if (!ABORT) { + var y = Asyncify.exportCallStack.pop(); + assert(y === x); + Asyncify.maybeStopUnwind(); + } + } + }; + } else { + ret[x] = original; + } + })(x); + } + return ret; + }, + State: { + Normal: 0, + Unwinding: 1, + Rewinding: 2, + Disabled: 3 + }, + state: 0, + StackSize: 8192, + currData: null, + handleSleepReturnValue: 0, + exportCallStack: [], + callStackNameToId: {}, + callStackIdToName: {}, + callStackId: 0, + asyncPromiseHandlers: null, + sleepCallbacks: [], + getCallStackId: function(funcName) { + var id = Asyncify.callStackNameToId[funcName]; + if (id === undefined) { + id = Asyncify.callStackId++; + Asyncify.callStackNameToId[funcName] = id; + Asyncify.callStackIdToName[id] = funcName; + } + return id; + }, + maybeStopUnwind: function() { + if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) { + Asyncify.state = Asyncify.State.Normal; + runtimeKeepalivePush(); + runAndAbortIfError(_asyncify_stop_unwind); + if (typeof Fibers != "undefined") { + Fibers.trampoline(); + } + } + }, + whenDone: function() { + return new Promise((resolve, reject) => { + Asyncify.asyncPromiseHandlers = { + resolve: resolve, + reject: reject + }; + }); + }, + allocateData: function() { + var ptr = _malloc(12 + Asyncify.StackSize); + Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize); + Asyncify.setDataRewindFunc(ptr); + return ptr; + }, + setDataHeader: function(ptr, stack, stackSize) { + HEAP32[ptr >> 2] = stack; + HEAP32[ptr + 4 >> 2] = stack + stackSize; + }, + setDataRewindFunc: function(ptr) { + var bottomOfCallStack = Asyncify.exportCallStack[0]; + var rewindId = Asyncify.getCallStackId(bottomOfCallStack); + HEAP32[ptr + 8 >> 2] = rewindId; + }, + getDataRewindFunc: function(ptr) { + var id = HEAP32[ptr + 8 >> 2]; + var name = Asyncify.callStackIdToName[id]; + var func = Module["asm"][name]; + return func; + }, + doRewind: function(ptr) { + var start = Asyncify.getDataRewindFunc(ptr); + runtimeKeepalivePop(); + return start(); + }, + handleSleep: function(startAsync) { + if (ABORT) return; + if (Asyncify.state === Asyncify.State.Normal) { + var reachedCallback = false; + var reachedAfterCallback = false; + startAsync((handleSleepReturnValue = 0) => { + if (ABORT) return; + Asyncify.handleSleepReturnValue = handleSleepReturnValue; + reachedCallback = true; + if (!reachedAfterCallback) { + return; + } + Asyncify.state = Asyncify.State.Rewinding; + runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData)); + if (typeof Browser != "undefined" && Browser.mainLoop.func) { + Browser.mainLoop.resume(); + } + var asyncWasmReturnValue, isError = false; + try { + asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData); + } catch (err) { + asyncWasmReturnValue = err; + isError = true; + } + var handled = false; + if (!Asyncify.currData) { + var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers; + if (asyncPromiseHandlers) { + Asyncify.asyncPromiseHandlers = null; + (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue); + handled = true; + } + } + if (isError && !handled) { + throw asyncWasmReturnValue; + } + }); + reachedAfterCallback = true; + if (!reachedCallback) { + Asyncify.state = Asyncify.State.Unwinding; + Asyncify.currData = Asyncify.allocateData(); + if (typeof Browser != "undefined" && Browser.mainLoop.func) { + Browser.mainLoop.pause(); + } + runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData)); + } + } else if (Asyncify.state === Asyncify.State.Rewinding) { + Asyncify.state = Asyncify.State.Normal; + runAndAbortIfError(_asyncify_stop_rewind); + _free(Asyncify.currData); + Asyncify.currData = null; + Asyncify.sleepCallbacks.forEach(func => callUserCallback(func)); + } else { + abort("invalid state: " + Asyncify.state); + } + return Asyncify.handleSleepReturnValue; + }, + handleAsync: function(startAsync) { + return Asyncify.handleSleep(wakeUp => { + startAsync().then(wakeUp); + }); + } +}; + +function AsciiToString(ptr) { + var str = ""; + while (1) { + var ch = HEAPU8[ptr++ >> 0]; + if (!ch) return str; + str += String.fromCharCode(ch); + } +} + +var FSNode = function(parent, name, mode, rdev) { + if (!parent) { + parent = this; + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; +}; + +var readMode = 292 | 73; + +var writeMode = 146; + +Object.defineProperties(FSNode.prototype, { + read: { + get: function() { + return (this.mode & readMode) === readMode; + }, + set: function(val) { + val ? this.mode |= readMode : this.mode &= ~readMode; + } + }, + write: { + get: function() { + return (this.mode & writeMode) === writeMode; + }, + set: function(val) { + val ? this.mode |= writeMode : this.mode &= ~writeMode; + } + }, + isFolder: { + get: function() { + return FS.isDir(this.mode); + } + }, + isDevice: { + get: function() { + return FS.isChrdev(this.mode); + } + } +}); + +FS.FSNode = FSNode; + +FS.staticInit(); + +var wasmImports = { + "S": __asyncjs__emglken_fill_stdin_buffer, + "k": ___cxa_begin_catch, + "n": ___cxa_end_catch, + "a": ___cxa_find_matching_catch_2, + "d": ___cxa_find_matching_catch_3, + "m": ___cxa_find_matching_catch_4, + "s": ___cxa_find_matching_catch_5, + "x": ___cxa_find_matching_catch_6, + "ca": ___cxa_find_matching_catch_7, + "K": ___cxa_rethrow, + "o": ___cxa_throw, + "ba": ___cxa_uncaught_exceptions, + "g": ___resumeException, + "aa": ___syscall_faccessat, + "J": ___syscall_fcntl64, + "$": ___syscall_getcwd, + "_": ___syscall_ioctl, + "Z": ___syscall_openat, + "V": __emscripten_get_now_is_monotonic, + "U": __localtime_js, + "T": __tzset_js, + "D": _abort, + "B": _emscripten_date_now, + "R": _emscripten_memcpy_big, + "Q": _emscripten_resize_heap, + "Y": _environ_get, + "X": _environ_sizes_get, + "C": _exit, + "I": _fd_close, + "W": _fd_read, + "P": _fd_seek, + "H": _fd_write, + "G": invoke_diii, + "F": invoke_fiii, + "q": invoke_i, + "b": invoke_ii, + "c": invoke_iii, + "e": invoke_iiii, + "p": invoke_iiiii, + "u": invoke_iiiiii, + "w": invoke_iiiiiii, + "E": invoke_iiiiiiii, + "A": invoke_iiiiiiiiiiii, + "O": invoke_ji, + "N": invoke_jiiii, + "h": invoke_v, + "i": invoke_vi, + "f": invoke_vii, + "j": invoke_viii, + "r": invoke_viiii, + "t": invoke_viiiii, + "v": invoke_viiiiiii, + "y": invoke_viiiiiiiiii, + "z": invoke_viiiiiiiiiiiiiii, + "l": _llvm_eh_typeid_for, + "M": _strftime, + "L": _strftime_l +}; + +var asm = createWasm(); + +var ___wasm_call_ctors = function() { + return (___wasm_call_ctors = Module["asm"]["ea"]).apply(null, arguments); +}; + +var ___cxa_free_exception = function() { + return (___cxa_free_exception = Module["asm"]["fa"]).apply(null, arguments); +}; + +var _fflush = Module["_fflush"] = function() { + return (_fflush = Module["_fflush"] = Module["asm"]["ga"]).apply(null, arguments); +}; + +var ___errno_location = function() { + return (___errno_location = Module["asm"]["ha"]).apply(null, arguments); +}; + +var _main = Module["_main"] = function() { + return (_main = Module["_main"] = Module["asm"]["ia"]).apply(null, arguments); +}; + +var _malloc = function() { + return (_malloc = Module["asm"]["ja"]).apply(null, arguments); +}; + +var _free = function() { + return (_free = Module["asm"]["ka"]).apply(null, arguments); +}; + +var _gidispatch_get_game_id = Module["_gidispatch_get_game_id"] = function() { + return (_gidispatch_get_game_id = Module["_gidispatch_get_game_id"] = Module["asm"]["la"]).apply(null, arguments); +}; + +var ___funcs_on_exit = function() { + return (___funcs_on_exit = Module["asm"]["ma"]).apply(null, arguments); +}; + +var _setThrew = function() { + return (_setThrew = Module["asm"]["oa"]).apply(null, arguments); +}; + +var setTempRet0 = function() { + return (setTempRet0 = Module["asm"]["pa"]).apply(null, arguments); +}; + +var _emscripten_stack_set_limits = function() { + return (_emscripten_stack_set_limits = Module["asm"]["emscripten_stack_set_limits"]).apply(null, arguments); +}; + +var _emscripten_stack_get_base = function() { + return (_emscripten_stack_get_base = Module["asm"]["emscripten_stack_get_base"]).apply(null, arguments); +}; + +var _emscripten_stack_get_end = function() { + return (_emscripten_stack_get_end = Module["asm"]["emscripten_stack_get_end"]).apply(null, arguments); +}; + +var stackSave = function() { + return (stackSave = Module["asm"]["qa"]).apply(null, arguments); +}; + +var stackRestore = function() { + return (stackRestore = Module["asm"]["ra"]).apply(null, arguments); +}; + +var stackAlloc = function() { + return (stackAlloc = Module["asm"]["sa"]).apply(null, arguments); +}; + +var ___cxa_can_catch = function() { + return (___cxa_can_catch = Module["asm"]["ta"]).apply(null, arguments); +}; + +var ___cxa_is_pointer_type = function() { + return (___cxa_is_pointer_type = Module["asm"]["ua"]).apply(null, arguments); +}; + +var dynCall_ii = Module["dynCall_ii"] = function() { + return (dynCall_ii = Module["dynCall_ii"] = Module["asm"]["va"]).apply(null, arguments); +}; + +var dynCall_iiii = Module["dynCall_iiii"] = function() { + return (dynCall_iiii = Module["dynCall_iiii"] = Module["asm"]["wa"]).apply(null, arguments); +}; + +var dynCall_viii = Module["dynCall_viii"] = function() { + return (dynCall_viii = Module["dynCall_viii"] = Module["asm"]["xa"]).apply(null, arguments); +}; + +var dynCall_v = Module["dynCall_v"] = function() { + return (dynCall_v = Module["dynCall_v"] = Module["asm"]["ya"]).apply(null, arguments); +}; + +var dynCall_vi = Module["dynCall_vi"] = function() { + return (dynCall_vi = Module["dynCall_vi"] = Module["asm"]["za"]).apply(null, arguments); +}; + +var dynCall_iii = Module["dynCall_iii"] = function() { + return (dynCall_iii = Module["dynCall_iii"] = Module["asm"]["Aa"]).apply(null, arguments); +}; + +var dynCall_vii = Module["dynCall_vii"] = function() { + return (dynCall_vii = Module["dynCall_vii"] = Module["asm"]["Ba"]).apply(null, arguments); +}; + +var dynCall_iiiiii = Module["dynCall_iiiiii"] = function() { + return (dynCall_iiiiii = Module["dynCall_iiiiii"] = Module["asm"]["Ca"]).apply(null, arguments); +}; + +var dynCall_iiiii = Module["dynCall_iiiii"] = function() { + return (dynCall_iiiii = Module["dynCall_iiiii"] = Module["asm"]["Da"]).apply(null, arguments); +}; + +var dynCall_i = Module["dynCall_i"] = function() { + return (dynCall_i = Module["dynCall_i"] = Module["asm"]["Ea"]).apply(null, arguments); +}; + +var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = function() { + return (dynCall_iiiiiii = Module["dynCall_iiiiiii"] = Module["asm"]["Fa"]).apply(null, arguments); +}; + +var dynCall_viiii = Module["dynCall_viiii"] = function() { + return (dynCall_viiii = Module["dynCall_viiii"] = Module["asm"]["Ga"]).apply(null, arguments); +}; + +var dynCall_ji = Module["dynCall_ji"] = function() { + return (dynCall_ji = Module["dynCall_ji"] = Module["asm"]["Ha"]).apply(null, arguments); +}; + +var dynCall_viiiii = Module["dynCall_viiiii"] = function() { + return (dynCall_viiiii = Module["dynCall_viiiii"] = Module["asm"]["Ia"]).apply(null, arguments); +}; + +var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = function() { + return (dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = Module["asm"]["Ja"]).apply(null, arguments); +}; + +var dynCall_jiiii = Module["dynCall_jiiii"] = function() { + return (dynCall_jiiii = Module["dynCall_jiiii"] = Module["asm"]["Ka"]).apply(null, arguments); +}; + +var dynCall_fiii = Module["dynCall_fiii"] = function() { + return (dynCall_fiii = Module["dynCall_fiii"] = Module["asm"]["La"]).apply(null, arguments); +}; + +var dynCall_diii = Module["dynCall_diii"] = function() { + return (dynCall_diii = Module["dynCall_diii"] = Module["asm"]["Ma"]).apply(null, arguments); +}; + +var dynCall_viiiiiii = Module["dynCall_viiiiiii"] = function() { + return (dynCall_viiiiiii = Module["dynCall_viiiiiii"] = Module["asm"]["Na"]).apply(null, arguments); +}; + +var dynCall_iiiiiiiiiiii = Module["dynCall_iiiiiiiiiiii"] = function() { + return (dynCall_iiiiiiiiiiii = Module["dynCall_iiiiiiiiiiii"] = Module["asm"]["Oa"]).apply(null, arguments); +}; + +var dynCall_viiiiiiiiii = Module["dynCall_viiiiiiiiii"] = function() { + return (dynCall_viiiiiiiiii = Module["dynCall_viiiiiiiiii"] = Module["asm"]["Pa"]).apply(null, arguments); +}; + +var dynCall_viiiiiiiiiiiiiii = Module["dynCall_viiiiiiiiiiiiiii"] = function() { + return (dynCall_viiiiiiiiiiiiiii = Module["dynCall_viiiiiiiiiiiiiii"] = Module["asm"]["Qa"]).apply(null, arguments); +}; + +var _asyncify_start_unwind = function() { + return (_asyncify_start_unwind = Module["asm"]["Ra"]).apply(null, arguments); +}; + +var _asyncify_stop_unwind = function() { + return (_asyncify_stop_unwind = Module["asm"]["Sa"]).apply(null, arguments); +}; + +var _asyncify_start_rewind = function() { + return (_asyncify_start_rewind = Module["asm"]["Ta"]).apply(null, arguments); +}; + +var _asyncify_stop_rewind = function() { + return (_asyncify_stop_rewind = Module["asm"]["Ua"]).apply(null, arguments); +}; + +var ___start_em_js = Module["___start_em_js"] = 52440; + +var ___stop_em_js = Module["___stop_em_js"] = 55125; + +function invoke_ii(index, a1) { + var sp = stackSave(); + try { + return dynCall_ii(index, a1); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiii(index, a1, a2, a3) { + var sp = stackSave(); + try { + return dynCall_iiii(index, a1, a2, a3); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viii(index, a1, a2, a3) { + var sp = stackSave(); + try { + dynCall_viii(index, a1, a2, a3); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_v(index) { + var sp = stackSave(); + try { + dynCall_v(index); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_vi(index, a1) { + var sp = stackSave(); + try { + dynCall_vi(index, a1); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iii(index, a1, a2) { + var sp = stackSave(); + try { + return dynCall_iii(index, a1, a2); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_vii(index, a1, a2) { + var sp = stackSave(); + try { + dynCall_vii(index, a1, a2); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiii(index, a1, a2, a3, a4, a5) { + var sp = stackSave(); + try { + return dynCall_iiiiii(index, a1, a2, a3, a4, a5); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiii(index, a1, a2, a3, a4) { + var sp = stackSave(); + try { + return dynCall_iiiii(index, a1, a2, a3, a4); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) { + var sp = stackSave(); + try { + return dynCall_iiiiiii(index, a1, a2, a3, a4, a5, a6); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiii(index, a1, a2, a3, a4) { + var sp = stackSave(); + try { + dynCall_viiii(index, a1, a2, a3, a4); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiiii(index, a1, a2, a3, a4, a5) { + var sp = stackSave(); + try { + dynCall_viiiii(index, a1, a2, a3, a4, a5); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) { + var sp = stackSave(); + try { + return dynCall_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_fiii(index, a1, a2, a3) { + var sp = stackSave(); + try { + return dynCall_fiii(index, a1, a2, a3); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_diii(index, a1, a2, a3) { + var sp = stackSave(); + try { + return dynCall_diii(index, a1, a2, a3); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_i(index) { + var sp = stackSave(); + try { + return dynCall_i(index); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) { + var sp = stackSave(); + try { + dynCall_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) { + var sp = stackSave(); + try { + return dynCall_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) { + var sp = stackSave(); + try { + dynCall_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) { + var sp = stackSave(); + try { + dynCall_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_ji(index, a1) { + var sp = stackSave(); + try { + return dynCall_ji(index, a1); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_jiiii(index, a1, a2, a3, a4) { + var sp = stackSave(); + try { + return dynCall_jiiii(index, a1, a2, a3, a4); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +Module["AsciiToString"] = AsciiToString; + +Module["FS"] = FS; + +var calledRun; + +dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; +}; + +function callMain(args = []) { + var entryFunction = _main; + args.unshift(thisProgram); + var argc = args.length; + var argv = stackAlloc((argc + 1) * 4); + var argv_ptr = argv >> 2; + args.forEach(arg => { + HEAP32[argv_ptr++] = allocateUTF8OnStack(arg); + }); + HEAP32[argv_ptr] = 0; + try { + var ret = entryFunction(argc, argv); + exitJS(ret, true); + return ret; + } catch (e) { + return handleException(e); + } +} + +function run(args = arguments_) { + if (runDependencies > 0) { + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + preMain(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + if (shouldRunNow) callMain(args); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } +} + +if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } +} + +var shouldRunNow = true; + +if (Module["noInitialRun"]) shouldRunNow = false; + +run(); + + + return Module.ready +} + +); +})(); +export default Module; \ No newline at end of file diff --git a/docs/emglken/bocfel-core.wasm b/docs/emglken/bocfel-core.wasm new file mode 100755 index 0000000..6a47a99 Binary files /dev/null and b/docs/emglken/bocfel-core.wasm differ diff --git a/docs/emglken/git-core.js b/docs/emglken/git-core.js new file mode 100644 index 0000000..b4a1750 --- /dev/null +++ b/docs/emglken/git-core.js @@ -0,0 +1,3804 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +function(Module = {}) { + +var Module = typeof Module != "undefined" ? Module : {}; + +var readyPromiseResolve, readyPromiseReject; + +Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; +}); + +var moduleOverrides = Object.assign({}, Module); + +var arguments_ = []; + +var thisProgram = "./this.program"; + +var quit_ = (status, toThrow) => { + throw toThrow; +}; + +var ENVIRONMENT_IS_WEB = true; + +var ENVIRONMENT_IS_WORKER = false; + +var scriptDirectory = ""; + +function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; +} + +var read_, readAsync, readBinary, setWindowTitle; + +if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (typeof document != "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (_scriptDir) { + scriptDirectory = _scriptDir; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + { + read_ = url => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = url => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + readAsync = (url, onload, onerror) => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = () => { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + } + setWindowTitle = title => document.title = title; +} else {} + +var out = Module["print"] || console.log.bind(console); + +var err = Module["printErr"] || console.warn.bind(console); + +Object.assign(Module, moduleOverrides); + +moduleOverrides = null; + +if (Module["arguments"]) arguments_ = Module["arguments"]; + +if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; + +if (Module["quit"]) quit_ = Module["quit"]; + +var wasmBinary; + +if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + +var noExitRuntime = Module["noExitRuntime"] || false; + +if (typeof WebAssembly != "object") { + abort("no native wasm support detected"); +} + +var wasmMemory; + +var ABORT = false; + +var EXITSTATUS; + +function assert(condition, text) { + if (!condition) { + abort(text); + } +} + +var UTF8Decoder = new TextDecoder("utf8"); + +function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; + return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr))); +} + +function UTF8ToString(ptr, maxBytesToRead) { + if (!ptr) return ""; + var maxPtr = ptr + maxBytesToRead; + for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end; + return UTF8Decoder.decode(HEAPU8.subarray(ptr, end)); +} + +function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; +} + +function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); +} + +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i); + if (c <= 127) { + len++; + } else if (c <= 2047) { + len += 2; + } else if (c >= 55296 && c <= 57343) { + len += 4; + ++i; + } else { + len += 3; + } + } + return len; +} + +var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + +function updateMemoryViews() { + var b = wasmMemory.buffer; + Module["HEAP8"] = HEAP8 = new Int8Array(b); + Module["HEAP16"] = HEAP16 = new Int16Array(b); + Module["HEAP32"] = HEAP32 = new Int32Array(b); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); + Module["HEAPF32"] = HEAPF32 = new Float32Array(b); + Module["HEAPF64"] = HEAPF64 = new Float64Array(b); +} + +var wasmTable; + +var __ATPRERUN__ = []; + +var __ATINIT__ = []; + +var __ATMAIN__ = []; + +var __ATEXIT__ = []; + +var __ATPOSTRUN__ = []; + +var runtimeInitialized = false; + +var runtimeExited = false; + +var runtimeKeepaliveCounter = 0; + +function keepRuntimeAlive() { + return noExitRuntime || runtimeKeepaliveCounter > 0; +} + +function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); +} + +function initRuntime() { + runtimeInitialized = true; + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); + FS.ignorePermissions = false; + TTY.init(); + callRuntimeCallbacks(__ATINIT__); +} + +function preMain() { + callRuntimeCallbacks(__ATMAIN__); +} + +function exitRuntime() { + ___funcs_on_exit(); + callRuntimeCallbacks(__ATEXIT__); + FS.quit(); + TTY.shutdown(); + runtimeExited = true; +} + +function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); +} + +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} + +var runDependencies = 0; + +var runDependencyWatcher = null; + +var dependenciesFulfilled = null; + +function getUniqueRunDependency(id) { + return id; +} + +function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } +} + +function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } +} + +function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what = "Aborted(" + what + ")"; + err(what); + ABORT = true; + EXITSTATUS = 1; + what += ". Build with -sASSERTIONS for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; +} + +var dataURIPrefix = "data:application/octet-stream;base64,"; + +function isDataURI(filename) { + return filename.startsWith(dataURIPrefix); +} + +var wasmBinaryFile; + +if (Module["locateFile"]) { + wasmBinaryFile = "git-core.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } +} else { + wasmBinaryFile = new URL("git-core.wasm", import.meta.url).href; +} + +function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } + throw "both async and sync fetching of the wasm failed"; + } catch (err) { + abort(err); + } +} + +function getBinaryPromise(binaryFile) { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function(response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + binaryFile + "'"; + } + return response["arrayBuffer"](); + }).catch(function() { + return getBinary(binaryFile); + }); + } + } + return Promise.resolve().then(function() { + return getBinary(binaryFile); + }); +} + +function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile).then(function(binary) { + return WebAssembly.instantiate(binary, imports); + }).then(function(instance) { + return instance; + }).then(receiver, function(reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason); + }); +} + +function instantiateAsync(binary, binaryFile, imports, callback) { + if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function(response) { + var result = WebAssembly.instantiateStreaming(response, imports); + return result.then(callback, function(reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(binaryFile, imports, callback); + }); + }); + } else { + return instantiateArrayBuffer(binaryFile, imports, callback); + } +} + +function createWasm() { + var info = { + "a": wasmImports + }; + function receiveInstance(instance, module) { + var exports = instance.exports; + exports = Asyncify.instrumentWasmExports(exports); + Module["asm"] = exports; + wasmMemory = Module["asm"]["E"]; + updateMemoryViews(); + wasmTable = Module["asm"]["N"]; + addOnInit(Module["asm"]["F"]); + removeRunDependency("wasm-instantiate"); + return exports; + } + addRunDependency("wasm-instantiate"); + function receiveInstantiationResult(result) { + receiveInstance(result["instance"]); + } + if (Module["instantiateWasm"]) { + try { + return Module["instantiateWasm"](info, receiveInstance); + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + readyPromiseReject(e); + } + } + instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject); + return {}; +} + +var tempDouble; + +var tempI64; + +function emglken_common_buffer_transformer(buf, len, numchars, func, dont_reduce) { + const index = buf >> 2; + const utf32 = HEAPU32.subarray(index, index + numchars); + const data = dont_reduce ? utf32 : utf32.reduce((prev, ch) => prev + String.fromCodePoint(ch), ""); + const new_str = func(data); + const newbuf = Uint32Array.from(new_str, ch => ch.codePointAt(0)); + const newlen = newbuf.length; + HEAPU32.set(newbuf.subarray(0, Math.min(len, newlen)), index); + return newlen; +} + +function glk_buffer_to_lower_case_uni(buf, len, numchars) { + return emglken_common_buffer_transformer(buf, len, numchars, str => str.toLowerCase()); +} + +function glk_buffer_to_upper_case_uni(buf, len, numchars) { + return emglken_common_buffer_transformer(buf, len, numchars, str => str.toUpperCase()); +} + +function glk_buffer_to_title_case_uni(buf, len, numchars, lowerrest) { + return emglken_common_buffer_transformer(buf, len, numchars, utf32 => utf32.reduce((prev, ch, index) => { + const special_cases = { + "ß": "Ss", + "DŽ": "Dž", + "Dž": "Dž", + "dž": "Dž", + "LJ": "Lj", + "Lj": "Lj", + "lj": "Lj", + "NJ": "Nj", + "Nj": "Nj", + "nj": "Nj", + "DZ": "Dz", + "Dz": "Dz", + "dz": "Dz", + "և": "Եւ", + "ᾲ": "Ὰͅ", + "ᾳ": "ᾼ", + "ᾴ": "Άͅ", + "ᾷ": "ᾼ͂", + "ᾼ": "ᾼ", + "ῂ": "Ὴͅ", + "ῃ": "ῌ", + "ῄ": "Ήͅ", + "ῇ": "ῌ͂", + "ῌ": "ῌ", + "ῲ": "Ὼͅ", + "ῳ": "ῼ", + "ῴ": "Ώͅ", + "ῷ": "ῼ͂", + "ῼ": "ῼ", + "ff": "Ff", + "fi": "Fi", + "fl": "Fl", + "ffi": "Ffi", + "ffl": "Ffl", + "ſt": "St", + "st": "St", + "ﬓ": "Մն", + "ﬔ": "Մե", + "ﬕ": "Մի", + "ﬖ": "Վն", + "ﬗ": "Մխ" + }; + const slightly_less_special_cases = [ "ᾈᾉᾊᾋᾌᾍᾎᾏ", "ᾘᾙᾚᾛᾜᾝᾞᾟ", "ᾨᾩᾪᾫᾬᾭᾮᾯ" ]; + let thischar = String.fromCodePoint(ch); + if (index === 0) { + if (special_cases[thischar]) { + thischar = special_cases[thischar]; + } else if (ch >= 8064 && ch < 8112) { + thischar = slightly_less_special_cases[(ch - 8064) / 16 | 0][ch % 8]; + } else { + thischar = thischar.toUpperCase(); + } + } else if (lowerrest) { + thischar = thischar.toLowerCase(); + } + return prev + thischar; + }, ""), 1); +} + +function glk_buffer_canon_decompose_uni(buf, len, numchars) { + return emglken_common_buffer_transformer(buf, len, numchars, str => str.normalize("NFD")); +} + +function glk_buffer_canon_normalize_uni(buf, len, numchars) { + return emglken_common_buffer_transformer(buf, len, numchars, str => str.normalize("NFC")); +} + +function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) { + return Asyncify.handleAsync(async () => { + if (!Module.emglken_stdin_buffers.length) { + await new Promise(resolve => { + Module.emglken_stdin_ready = resolve; + }); + } + const input = Module.emglken_stdin_buffers.shift(); + const len = Math.min(input.length, maxlen); + if (len == input.length) { + HEAPU8.set(input, buffer); + } else { + HEAPU8.set(input.subarray(0, len), buffer); + Module.emglken_stdin_buffers.unshift(input.subarray(len)); + } + return len; + }); +} + +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +} + +function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + callbacks.shift()(Module); + } +} + +var PATH = { + isAbs: path => path.charAt(0) === "/", + splitPath: filename => { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + }, + normalizeArray: (parts, allowAboveRoot) => { + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === ".") { + parts.splice(i, 1); + } else if (last === "..") { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + if (allowAboveRoot) { + for (;up; up--) { + parts.unshift(".."); + } + } + return parts; + }, + normalize: path => { + var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === "/"; + path = PATH.normalizeArray(path.split("/").filter(p => !!p), !isAbsolute).join("/"); + if (!path && !isAbsolute) { + path = "."; + } + if (path && trailingSlash) { + path += "/"; + } + return (isAbsolute ? "/" : "") + path; + }, + dirname: path => { + var result = PATH.splitPath(path), root = result[0], dir = result[1]; + if (!root && !dir) { + return "."; + } + if (dir) { + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + }, + basename: path => { + if (path === "/") return "/"; + path = PATH.normalize(path); + path = path.replace(/\/$/, ""); + var lastSlash = path.lastIndexOf("/"); + if (lastSlash === -1) return path; + return path.substr(lastSlash + 1); + }, + join: function() { + var paths = Array.prototype.slice.call(arguments); + return PATH.normalize(paths.join("/")); + }, + join2: (l, r) => { + return PATH.normalize(l + "/" + r); + } +}; + +function getRandomDevice() { + if (typeof crypto == "object" && typeof crypto["getRandomValues"] == "function") { + var randomBuffer = new Uint8Array(1); + return () => { + crypto.getRandomValues(randomBuffer); + return randomBuffer[0]; + }; + } else return () => abort("randomDevice"); +} + +var PATH_FS = { + resolve: function() { + var resolvedPath = "", resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = i >= 0 ? arguments[i] : FS.cwd(); + if (typeof path != "string") { + throw new TypeError("Arguments to path.resolve must be strings"); + } else if (!path) { + return ""; + } + resolvedPath = path + "/" + resolvedPath; + resolvedAbsolute = PATH.isAbs(path); + } + resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter(p => !!p), !resolvedAbsolute).join("/"); + return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; + }, + relative: (from, to) => { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (;start < arr.length; start++) { + if (arr[start] !== "") break; + } + var end = arr.length - 1; + for (;end >= 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 < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push(".."); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join("/"); + } +}; + +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} + +var TTY = { + ttys: [], + init: function() {}, + shutdown: function() {}, + register: function(dev, ops) { + TTY.ttys[dev] = { + input: [], + output: [], + ops: ops + }; + FS.registerDevice(dev, TTY.stream_ops); + }, + stream_ops: { + open: function(stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43); + } + stream.tty = tty; + stream.seekable = false; + }, + close: function(stream) { + stream.tty.ops.fsync(stream.tty); + }, + fsync: function(stream) { + stream.tty.ops.fsync(stream.tty); + }, + read: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60); + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset + i]); + } + } catch (e) { + throw new FS.ErrnoError(29); + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }, + default_tty_ops: { + get_char: function(tty) { + if (!tty.input.length) { + var result = null; + if (typeof window != "undefined" && typeof window.prompt == "function") { + result = window.prompt("Input: "); + if (result !== null) { + result += "\n"; + } + } else if (typeof readline == "function") { + result = readline(); + if (result !== null) { + result += "\n"; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + }, + put_char: function(tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function(tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + }, + default_tty1_ops: { + put_char: function(tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function(tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + } +}; + +function mmapAlloc(size) { + abort(); +} + +var MEMFS = { + ops_table: null, + mount: function(mount) { + return MEMFS.createNode(null, "/", 16384 | 511, 0); + }, + createNode: function(parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + throw new FS.ErrnoError(63); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, + stream: { + llseek: MEMFS.stream_ops.llseek + } + }, + file: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: FS.chrdev_stream_ops + } + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + if (parent) { + parent.contents[name] = node; + parent.timestamp = node.timestamp; + } + return node; + }, + getFileDataAsTypedArray: function(node) { + if (!node.contents) return new Uint8Array(0); + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); + return new Uint8Array(node.contents); + }, + expandFileStorage: function(node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); + }, + resizeFileStorage: function(node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; + node.usedBytes = 0; + } else { + var oldContents = node.contents; + node.contents = new Uint8Array(newSize); + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); + } + node.usedBytes = newSize; + } + }, + node_ops: { + getattr: function(node) { + var attr = {}; + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + }, + setattr: function(node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + }, + lookup: function(parent, name) { + throw FS.genericErrors[44]; + }, + mknod: function(parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + }, + rename: function(old_node, new_dir, new_name) { + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) {} + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(55); + } + } + } + delete old_node.parent.contents[old_node.name]; + old_node.parent.timestamp = Date.now(); + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + new_dir.timestamp = old_node.parent.timestamp; + old_node.parent = new_dir; + }, + unlink: function(parent, name) { + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + rmdir: function(parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(55); + } + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + readdir: function(node) { + var entries = [ ".", ".." ]; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + }, + symlink: function(parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); + node.link = oldpath; + return node; + }, + readlink: function(node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(28); + } + return node.link; + } + }, + stream_ops: { + read: function(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + if (size > 8 && contents.subarray) { + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; + } + return size; + }, + write: function(stream, buffer, offset, length, position, canOwn) { + if (buffer.buffer === HEAP8.buffer) { + canOwn = false; + } + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + if (buffer.subarray && (!node.contents || node.contents.subarray)) { + if (canOwn) { + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { + node.contents = buffer.slice(offset, offset + length); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + MEMFS.expandFileStorage(node, position + length); + if (node.contents.subarray && buffer.subarray) { + node.contents.set(buffer.subarray(offset, offset + length), position); + } else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; + } + } + node.usedBytes = Math.max(node.usedBytes, position + length); + return length; + }, + llseek: function(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + }, + allocate: function(stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + }, + mmap: function(stream, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + var ptr; + var allocated; + var contents = stream.node.contents; + if (!(flags & 2) && contents.buffer === HEAP8.buffer) { + allocated = false; + ptr = contents.byteOffset; + } else { + if (position > 0 || position + length < contents.length) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + HEAP8.set(contents, ptr); + } + return { + ptr: ptr, + allocated: allocated + }; + }, + msync: function(stream, buffer, offset, length, mmapFlags) { + MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + return 0; + } + } +}; + +function asyncLoad(url, onload, onerror, noRunDep) { + var dep = !noRunDep ? getUniqueRunDependency("al " + url) : ""; + readAsync(url, arrayBuffer => { + assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); + onload(new Uint8Array(arrayBuffer)); + if (dep) removeRunDependency(dep); + }, event => { + if (onerror) { + onerror(); + } else { + throw 'Loading data file "' + url + '" failed.'; + } + }); + if (dep) addRunDependency(dep); +} + +var FS = { + root: null, + mounts: [], + devices: {}, + streams: [], + nextInode: 1, + nameTable: null, + currentPath: "/", + initialized: false, + ignorePermissions: true, + ErrnoError: null, + genericErrors: {}, + filesystems: null, + syncFSRequests: 0, + lookupPath: (path, opts = {}) => { + path = PATH_FS.resolve(path); + if (!path) return { + path: "", + node: null + }; + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + opts = Object.assign(defaults, opts); + if (opts.recurse_count > 8) { + throw new FS.ErrnoError(32); + } + var parts = path.split("/").filter(p => !!p); + var current = FS.root; + var current_path = "/"; + for (var i = 0; i < parts.length; i++) { + var islast = i === parts.length - 1; + if (islast && opts.parent) { + break; + } + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + if (FS.isMountpoint(current)) { + if (!islast || islast && opts.follow_mount) { + current = current.mounted.root; + } + } + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + var lookup = FS.lookupPath(current_path, { + recurse_count: opts.recurse_count + 1 + }); + current = lookup.node; + if (count++ > 40) { + throw new FS.ErrnoError(32); + } + } + } + } + return { + path: current_path, + node: current + }; + }, + getPath: node => { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path; + } + path = path ? node.name + "/" + path : node.name; + node = node.parent; + } + }, + hashName: (parentid, name) => { + var hash = 0; + for (var i = 0; i < name.length; i++) { + hash = (hash << 5) - hash + name.charCodeAt(i) | 0; + } + return (parentid + hash >>> 0) % FS.nameTable.length; + }, + hashAddNode: node => { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + }, + hashRemoveNode: node => { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + }, + lookupNode: (parent, name) => { + var errCode = FS.mayLookup(parent); + if (errCode) { + throw new FS.ErrnoError(errCode, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + return FS.lookup(parent, name); + }, + createNode: (parent, name, mode, rdev) => { + var node = new FS.FSNode(parent, name, mode, rdev); + FS.hashAddNode(node); + return node; + }, + destroyNode: node => { + FS.hashRemoveNode(node); + }, + isRoot: node => { + return node === node.parent; + }, + isMountpoint: node => { + return !!node.mounted; + }, + isFile: mode => { + return (mode & 61440) === 32768; + }, + isDir: mode => { + return (mode & 61440) === 16384; + }, + isLink: mode => { + return (mode & 61440) === 40960; + }, + isChrdev: mode => { + return (mode & 61440) === 8192; + }, + isBlkdev: mode => { + return (mode & 61440) === 24576; + }, + isFIFO: mode => { + return (mode & 61440) === 4096; + }, + isSocket: mode => { + return (mode & 49152) === 49152; + }, + flagModes: { + "r": 0, + "r+": 2, + "w": 577, + "w+": 578, + "a": 1089, + "a+": 1090 + }, + modeStringToFlags: str => { + var flags = FS.flagModes[str]; + if (typeof flags == "undefined") { + throw new Error("Unknown file open mode: " + str); + } + return flags; + }, + flagsToPermissionString: flag => { + var perms = [ "r", "w", "rw" ][flag & 3]; + if (flag & 512) { + perms += "w"; + } + return perms; + }, + nodePermissions: (node, perms) => { + if (FS.ignorePermissions) { + return 0; + } + if (perms.includes("r") && !(node.mode & 292)) { + return 2; + } else if (perms.includes("w") && !(node.mode & 146)) { + return 2; + } else if (perms.includes("x") && !(node.mode & 73)) { + return 2; + } + return 0; + }, + mayLookup: dir => { + var errCode = FS.nodePermissions(dir, "x"); + if (errCode) return errCode; + if (!dir.node_ops.lookup) return 2; + return 0; + }, + mayCreate: (dir, name) => { + try { + var node = FS.lookupNode(dir, name); + return 20; + } catch (e) {} + return FS.nodePermissions(dir, "wx"); + }, + mayDelete: (dir, name, isdir) => { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var errCode = FS.nodePermissions(dir, "wx"); + if (errCode) { + return errCode; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 54; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 10; + } + } else { + if (FS.isDir(node.mode)) { + return 31; + } + } + return 0; + }, + mayOpen: (node, flags) => { + if (!node) { + return 44; + } + if (FS.isLink(node.mode)) { + return 32; + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { + return 31; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + }, + MAX_OPEN_FDS: 4096, + nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => { + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(33); + }, + getStream: fd => FS.streams[fd], + createStream: (stream, fd_start, fd_end) => { + if (!FS.FSStream) { + FS.FSStream = function() { + this.shared = {}; + }; + FS.FSStream.prototype = {}; + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: function() { + return this.node; + }, + set: function(val) { + this.node = val; + } + }, + isRead: { + get: function() { + return (this.flags & 2097155) !== 1; + } + }, + isWrite: { + get: function() { + return (this.flags & 2097155) !== 0; + } + }, + isAppend: { + get: function() { + return this.flags & 1024; + } + }, + flags: { + get: function() { + return this.shared.flags; + }, + set: function(val) { + this.shared.flags = val; + } + }, + position: { + get: function() { + return this.shared.position; + }, + set: function(val) { + this.shared.position = val; + } + } + }); + } + stream = Object.assign(new FS.FSStream(), stream); + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + }, + closeStream: fd => { + FS.streams[fd] = null; + }, + chrdev_stream_ops: { + open: stream => { + var device = FS.getDevice(stream.node.rdev); + stream.stream_ops = device.stream_ops; + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + }, + llseek: () => { + throw new FS.ErrnoError(70); + } + }, + major: dev => dev >> 8, + minor: dev => dev & 255, + makedev: (ma, mi) => ma << 8 | mi, + registerDevice: (dev, ops) => { + FS.devices[dev] = { + stream_ops: ops + }; + }, + getDevice: dev => FS.devices[dev], + getMounts: mount => { + var mounts = []; + var check = [ mount ]; + while (check.length) { + var m = check.pop(); + mounts.push(m); + check.push.apply(check, m.mounts); + } + return mounts; + }, + syncfs: (populate, callback) => { + if (typeof populate == "function") { + callback = populate; + populate = false; + } + FS.syncFSRequests++; + if (FS.syncFSRequests > 1) { + err("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"); + } + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + function doCallback(errCode) { + FS.syncFSRequests--; + return callback(errCode); + } + function done(errCode) { + if (errCode) { + if (!done.errored) { + done.errored = true; + return doCallback(errCode); + } + return; + } + if (++completed >= mounts.length) { + doCallback(null); + } + } + mounts.forEach(mount => { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + }, + mount: (type, opts, mountpoint) => { + var root = mountpoint === "/"; + var pseudo = !mountpoint; + var node; + if (root && FS.root) { + throw new FS.ErrnoError(10); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + mountpoint = lookup.path; + node = lookup.node; + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + } + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + if (root) { + FS.root = mountRoot; + } else if (node) { + node.mounted = mount; + if (node.mount) { + node.mount.mounts.push(mount); + } + } + return mountRoot; + }, + unmount: mountpoint => { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(28); + } + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + Object.keys(FS.nameTable).forEach(hash => { + var current = FS.nameTable[hash]; + while (current) { + var next = current.name_next; + if (mounts.includes(current.mount)) { + FS.destroyNode(current); + } + current = next; + } + }); + node.mounted = null; + var idx = node.mount.mounts.indexOf(mount); + node.mount.mounts.splice(idx, 1); + }, + lookup: (parent, name) => { + return parent.node_ops.lookup(parent, name); + }, + mknod: (path, mode, dev) => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === "." || name === "..") { + throw new FS.ErrnoError(28); + } + var errCode = FS.mayCreate(parent, name); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.mknod(parent, name, mode, dev); + }, + create: (path, mode) => { + mode = mode !== undefined ? mode : 438; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + }, + mkdir: (path, mode) => { + mode = mode !== undefined ? mode : 511; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + }, + mkdirTree: (path, mode) => { + var dirs = path.split("/"); + var d = ""; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += "/" + dirs[i]; + 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); + } catch (e) { + throw e; + } finally { + FS.hashAddNode(old_node); + } + }, + rmdir: path => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, true); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + }, + readdir: path => { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(54); + } + return node.node_ops.readdir(node); + }, + unlink: path => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, false); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + }, + readlink: path => { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(44); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(28); + } + return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + }, + stat: (path, dontFollow) => { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(44); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(63); + } + return node.node_ops.getattr(node); + }, + lstat: path => { + return FS.stat(path, true); + }, + chmod: (path, mode, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + mode: mode & 4095 | node.mode & ~4095, + timestamp: Date.now() + }); + }, + lchmod: (path, mode) => { + FS.chmod(path, mode, true); + }, + fchmod: (fd, mode) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chmod(stream.node, mode); + }, + chown: (path, uid, gid, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + }); + }, + lchown: (path, uid, gid) => { + FS.chown(path, uid, gid, true); + }, + fchown: (fd, uid, gid) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chown(stream.node, uid, gid); + }, + truncate: (path, len) => { + if (len < 0) { + throw new FS.ErrnoError(28); + } + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: true + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(31); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(28); + } + var errCode = FS.nodePermissions(node, "w"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + }, + ftruncate: (fd, len) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(28); + } + FS.truncate(stream.node, len); + }, + utime: (path, atime, mtime) => { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + }, + open: (path, flags, mode) => { + if (path === "") { + throw new FS.ErrnoError(44); + } + flags = typeof flags == "string" ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode == "undefined" ? 438 : mode; + if (flags & 64) { + mode = mode & 4095 | 32768; + } else { + mode = 0; + } + var node; + if (typeof path == "object") { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 131072) + }); + node = lookup.node; + } catch (e) {} + } + var created = false; + if (flags & 64) { + if (node) { + if (flags & 128) { + throw new FS.ErrnoError(20); + } + } else { + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(44); + } + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + if (flags & 65536 && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + if (!created) { + var errCode = FS.mayOpen(node, flags); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + } + if (flags & 512 && !created) { + FS.truncate(node, 0); + } + flags &= ~(128 | 512 | 131072); + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + ungotten: [], + error: false + }); + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module["logReadFiles"] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + } + } + return stream; + }, + close: stream => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (stream.getdents) stream.getdents = null; + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + stream.fd = null; + }, + isClosed: stream => { + return stream.fd === null; + }, + llseek: (stream, offset, whence) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(70); + } + if (whence != 0 && whence != 1 && whence != 2) { + throw new FS.ErrnoError(28); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + }, + read: (stream, buffer, offset, length, position) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(28); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + }, + write: (stream, buffer, offset, length, position, canOwn) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(28); + } + if (stream.seekable && stream.flags & 1024) { + FS.llseek(stream, 0, 2); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + return bytesWritten; + }, + allocate: (stream, offset, length) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(28); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(138); + } + stream.stream_ops.allocate(stream, offset, length); + }, + mmap: (stream, length, position, prot, flags) => { + if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) { + throw new FS.ErrnoError(2); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(2); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(43); + } + return stream.stream_ops.mmap(stream, length, position, prot, flags); + }, + msync: (stream, buffer, offset, length, mmapFlags) => { + if (!stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + }, + munmap: stream => 0, + ioctl: (stream, cmd, arg) => { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + }, + readFile: (path, opts = {}) => { + opts.flags = opts.flags || 0; + opts.encoding = opts.encoding || "binary"; + if (opts.encoding !== "utf8" && opts.encoding !== "binary") { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === "utf8") { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === "binary") { + ret = buf; + } + FS.close(stream); + return ret; + }, + writeFile: (path, data, opts = {}) => { + opts.flags = opts.flags || 577; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data == "string") { + var buf = new Uint8Array(lengthBytesUTF8(data) + 1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); + } else { + throw new Error("Unsupported data type"); + } + FS.close(stream); + }, + cwd: () => FS.currentPath, + chdir: path => { + var lookup = FS.lookupPath(path, { + follow: true + }); + if (lookup.node === null) { + throw new FS.ErrnoError(44); + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(54); + } + var errCode = FS.nodePermissions(lookup.node, "x"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + FS.currentPath = lookup.path; + }, + createDefaultDirectories: () => { + FS.mkdir("/tmp"); + FS.mkdir("/home"); + FS.mkdir("/home/web_user"); + }, + createDefaultDevices: () => { + FS.mkdir("/dev"); + FS.registerDevice(FS.makedev(1, 3), { + read: () => 0, + write: (stream, buffer, offset, length, pos) => length + }); + FS.mkdev("/dev/null", FS.makedev(1, 3)); + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev("/dev/tty", FS.makedev(5, 0)); + FS.mkdev("/dev/tty1", FS.makedev(6, 0)); + var random_device = getRandomDevice(); + FS.createDevice("/dev", "random", random_device); + FS.createDevice("/dev", "urandom", random_device); + FS.mkdir("/dev/shm"); + FS.mkdir("/dev/shm/tmp"); + }, + createSpecialDirectories: () => { + FS.mkdir("/proc"); + var proc_self = FS.mkdir("/proc/self"); + FS.mkdir("/proc/self/fd"); + FS.mount({ + mount: () => { + var node = FS.createNode(proc_self, "fd", 16384 | 511, 73); + node.node_ops = { + lookup: (parent, name) => { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + var ret = { + parent: null, + mount: { + mountpoint: "fake" + }, + node_ops: { + readlink: () => stream.path + } + }; + ret.parent = ret; + return ret; + } + }; + return node; + } + }, {}, "/proc/self/fd"); + }, + createStandardStreams: () => { + if (Module["stdin"]) { + FS.createDevice("/dev", "stdin", Module["stdin"]); + } else { + FS.symlink("/dev/tty", "/dev/stdin"); + } + if (Module["stdout"]) { + FS.createDevice("/dev", "stdout", null, Module["stdout"]); + } else { + FS.symlink("/dev/tty", "/dev/stdout"); + } + if (Module["stderr"]) { + FS.createDevice("/dev", "stderr", null, Module["stderr"]); + } else { + FS.symlink("/dev/tty1", "/dev/stderr"); + } + var stdin = FS.open("/dev/stdin", 0); + var stdout = FS.open("/dev/stdout", 1); + var stderr = FS.open("/dev/stderr", 1); + }, + ensureErrnoError: () => { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + this.name = "ErrnoError"; + this.node = node; + this.setErrno = function(errno) { + this.errno = errno; + }; + this.setErrno(errno); + this.message = "FS error"; + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + [ 44 ].forEach(code => { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = ""; + }); + }, + staticInit: () => { + FS.ensureErrnoError(); + FS.nameTable = new Array(4096); + FS.mount(MEMFS, {}, "/"); + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + FS.filesystems = { + "MEMFS": MEMFS + }; + }, + init: (input, output, error) => { + FS.init.initialized = true; + FS.ensureErrnoError(); + Module["stdin"] = input || Module["stdin"]; + Module["stdout"] = output || Module["stdout"]; + Module["stderr"] = error || Module["stderr"]; + FS.createStandardStreams(); + }, + quit: () => { + FS.init.initialized = false; + _fflush(0); + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + }, + getMode: (canRead, canWrite) => { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + }, + 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) {} + parent = current; + } + return current; + }, + createFile: (parent, name, properties, canRead, canWrite) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + }, + createDataFile: (parent, name, data, canRead, canWrite, canOwn) => { + var path = name; + if (parent) { + parent = typeof parent == "string" ? parent : FS.getPath(parent); + path = name ? PATH.join2(parent, name) : parent; + } + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data == "string") { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + 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); + } + return node; + }, + createDevice: (parent, name, input, output) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + FS.registerDevice(dev, { + open: stream => { + stream.seekable = false; + }, + close: stream => { + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: (stream, buffer, offset, length, pos) => { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: (stream, buffer, offset, length, pos) => { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset + i]); + } catch (e) { + throw new FS.ErrnoError(29); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + }, + forceLoadFile: obj => { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + if (typeof XMLHttpRequest != "undefined") { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (read_) { + try { + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + throw new FS.ErrnoError(29); + } + } else { + throw new Error("Cannot load without read() or XMLHttpRequest."); + } + }, + createLazyFile: (parent, name, url, canRead, canWrite) => { + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; + } + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length - 1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = idx / this.chunkSize | 0; + return this.getter(chunkNum)[chunkOffset]; + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + var xhr = new XMLHttpRequest(); + xhr.open("HEAD", url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + var chunkSize = 1024 * 1024; + if (!hasByteServing) chunkSize = datalength; + var doXHR = (from, to) => { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!"); + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + xhr.responseType = "arraybuffer"; + if (xhr.overrideMimeType) { + xhr.overrideMimeType("text/plain; charset=x-user-defined"); + } + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } + return intArrayFromString(xhr.responseText || "", true); + }; + var lazyArray = this; + lazyArray.setDataGetter(chunkNum => { + var start = chunkNum * chunkSize; + var end = (chunkNum + 1) * chunkSize - 1; + end = Math.min(end, datalength - 1); + if (typeof lazyArray.chunks[chunkNum] == "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof lazyArray.chunks[chunkNum] == "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + if (usesGzip || !datalength) { + chunkSize = datalength = 1; + datalength = this.getter(0).length; + chunkSize = datalength; + out("LazyFiles on gzip forces download of the whole file when length is accessed"); + } + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + }; + if (typeof XMLHttpRequest != "undefined") { + if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; + var lazyArray = new LazyUint8Array(); + Object.defineProperties(lazyArray, { + length: { + get: function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }, + chunkSize: { + get: function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + } + }); + var properties = { + isDevice: false, + contents: lazyArray + }; + } else { + var properties = { + isDevice: false, + url: url + }; + } + var node = FS.createFile(parent, name, properties, canRead, canWrite); + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + Object.defineProperties(node, { + usedBytes: { + get: function() { + return this.contents.length; + } + } + }); + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(key => { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + FS.forceLoadFile(node); + return fn.apply(null, arguments); + }; + }); + function writeChunks(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= contents.length) return 0; + var size = Math.min(contents.length - position, length); + if (contents.slice) { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents.get(position + i); + } + } + return size; + } + stream_ops.read = (stream, buffer, offset, length, position) => { + FS.forceLoadFile(node); + return writeChunks(stream, buffer, offset, length, position); + }; + stream_ops.mmap = (stream, length, position, prot, flags) => { + FS.forceLoadFile(node); + var ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + writeChunks(stream, HEAP8, ptr, length, position); + return { + ptr: ptr, + allocated: true + }; + }; + node.stream_ops = stream_ops; + return node; + }, + createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => { + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency("cp " + fullname); + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => { + if (onerror) onerror(); + removeRunDependency(dep); + })) { + return; + } + finish(byteArray); + } + addRunDependency(dep); + if (typeof url == "string") { + asyncLoad(url, byteArray => processData(byteArray), onerror); + } else { + processData(url); + } + }, + indexedDB: () => { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + }, + DB_NAME: () => { + return "EM_FS_" + window.location.pathname; + }, + DB_VERSION: 20, + DB_STORE_NAME: "FILE_DATA", + saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => { + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = () => { + out("creating db"); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = () => { + var db = openRequest.result; + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readwrite"); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(path => { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = () => { + ok++; + if (ok + fail == total) finish(); + }; + putRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }, + loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => { + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; + openRequest.onsuccess = () => { + var db = openRequest.result; + try { + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readonly"); + } catch (e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(path => { + var getRequest = files.get(path); + getRequest.onsuccess = () => { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + } +}; + +var SYSCALLS = { + DEFAULT_POLLMASK: 5, + calculateAt: function(dirfd, path, allowEmpty) { + if (PATH.isAbs(path)) { + return path; + } + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = SYSCALLS.getStreamFromFD(dirfd); + dir = dirstream.path; + } + if (path.length == 0) { + if (!allowEmpty) { + throw new FS.ErrnoError(44); + } + return dir; + } + return PATH.join2(dir, path); + }, + doStat: function(func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + return -54; + } + throw e; + } + HEAP32[buf >> 2] = stat.dev; + HEAP32[buf + 8 >> 2] = stat.ino; + HEAP32[buf + 12 >> 2] = stat.mode; + HEAPU32[buf + 16 >> 2] = stat.nlink; + HEAP32[buf + 20 >> 2] = stat.uid; + HEAP32[buf + 24 >> 2] = stat.gid; + HEAP32[buf + 28 >> 2] = stat.rdev; + tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1]; + HEAP32[buf + 48 >> 2] = 4096; + HEAP32[buf + 52 >> 2] = stat.blocks; + var atime = stat.atime.getTime(); + var mtime = stat.mtime.getTime(); + var ctime = stat.ctime.getTime(); + tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1]; + HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3; + tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1]; + HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3; + tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1]; + HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3; + tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1]; + return 0; + }, + doMsync: function(addr, stream, len, flags, offset) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (flags & 2) { + return 0; + } + var buffer = HEAPU8.slice(addr, addr + len); + FS.msync(stream, buffer, offset, len, flags); + }, + varargs: undefined, + get: function() { + SYSCALLS.varargs += 4; + var ret = HEAP32[SYSCALLS.varargs - 4 >> 2]; + return ret; + }, + getStr: function(ptr) { + var ret = UTF8ToString(ptr); + return ret; + }, + getStreamFromFD: function(fd) { + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + return stream; + } +}; + +function ___syscall_faccessat(dirfd, path, amode, flags) { + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + if (amode & ~7) { + return -28; + } + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + if (!node) { + return -44; + } + var perms = ""; + if (amode & 4) perms += "r"; + if (amode & 2) perms += "w"; + if (amode & 1) perms += "x"; + if (perms && FS.nodePermissions(node, perms)) { + return -2; + } + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function setErrNo(value) { + HEAP32[___errno_location() >> 2] = value; + return value; +} + +function ___syscall_fcntl64(fd, cmd, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (cmd) { + case 0: + { + var arg = SYSCALLS.get(); + if (arg < 0) { + return -28; + } + var newStream; + newStream = FS.createStream(stream, arg); + return newStream.fd; + } + + case 1: + case 2: + return 0; + + case 3: + return stream.flags; + + case 4: + { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0; + } + + case 5: + { + var arg = SYSCALLS.get(); + var offset = 0; + HEAP16[arg + offset >> 1] = 2; + return 0; + } + + case 6: + case 7: + return 0; + + case 16: + case 8: + return -28; + + case 9: + setErrNo(28); + return -1; + + default: + { + return -28; + } + } + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_getcwd(buf, size) { + try { + if (size === 0) return -28; + var cwd = FS.cwd(); + var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1; + if (size < cwdLengthInBytes) return -68; + stringToUTF8(cwd, buf, size); + return cwdLengthInBytes; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_ioctl(fd, op, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (op) { + case 21509: + case 21505: + { + if (!stream.tty) return -59; + return 0; + } + + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: + { + if (!stream.tty) return -59; + return 0; + } + + case 21519: + { + if (!stream.tty) return -59; + var argp = SYSCALLS.get(); + HEAP32[argp >> 2] = 0; + return 0; + } + + case 21520: + { + if (!stream.tty) return -59; + return -28; + } + + case 21531: + { + var argp = SYSCALLS.get(); + return FS.ioctl(stream, op, argp); + } + + case 21523: + { + if (!stream.tty) return -59; + return 0; + } + + case 21524: + { + if (!stream.tty) return -59; + return 0; + } + + default: + return -28; + } + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_openat(dirfd, path, flags, varargs) { + SYSCALLS.varargs = varargs; + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + var mode = varargs ? SYSCALLS.get() : 0; + return FS.open(path, flags, mode).fd; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_stat64(path, buf) { + try { + path = SYSCALLS.getStr(path); + return SYSCALLS.doStat(FS.stat, path, buf); + } 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 === 0) { + FS.unlink(path); + } else if (flags === 512) { + FS.rmdir(path); + } else { + abort("Invalid flags passed to unlinkat"); + } + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +var nowIsMonotonic = true; + +function __emscripten_get_now_is_monotonic() { + return nowIsMonotonic; +} + +function __emscripten_throw_longjmp() { + throw Infinity; +} + +function readI53FromI64(ptr) { + return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296; +} + +function __gmtime_js(time, tmPtr) { + var date = new Date(readI53FromI64(time) * 1e3); + HEAP32[tmPtr >> 2] = date.getUTCSeconds(); + HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes(); + HEAP32[tmPtr + 8 >> 2] = date.getUTCHours(); + HEAP32[tmPtr + 12 >> 2] = date.getUTCDate(); + HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth(); + HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900; + HEAP32[tmPtr + 24 >> 2] = date.getUTCDay(); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; +} + +function __isLeapYear(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +} + +var __MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ]; + +var __MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ]; + +function __yday_from_date(date) { + var isLeapYear = __isLeapYear(date.getFullYear()); + var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE; + var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1; + return yday; +} + +function __localtime_js(time, tmPtr) { + var date = new Date(readI53FromI64(time) * 1e3); + HEAP32[tmPtr >> 2] = date.getSeconds(); + HEAP32[tmPtr + 4 >> 2] = date.getMinutes(); + HEAP32[tmPtr + 8 >> 2] = date.getHours(); + HEAP32[tmPtr + 12 >> 2] = date.getDate(); + HEAP32[tmPtr + 16 >> 2] = date.getMonth(); + HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900; + HEAP32[tmPtr + 24 >> 2] = date.getDay(); + var yday = __yday_from_date(date) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; + HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60); + var start = new Date(date.getFullYear(), 0, 1); + var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); + var winterOffset = start.getTimezoneOffset(); + var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0; + HEAP32[tmPtr + 32 >> 2] = dst; +} + +function __mktime_js(tmPtr) { + var date = new Date(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0); + var dst = HEAP32[tmPtr + 32 >> 2]; + var guessedOffset = date.getTimezoneOffset(); + var start = new Date(date.getFullYear(), 0, 1); + var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); + var winterOffset = start.getTimezoneOffset(); + var dstOffset = Math.min(winterOffset, summerOffset); + if (dst < 0) { + HEAP32[tmPtr + 32 >> 2] = Number(summerOffset != winterOffset && dstOffset == guessedOffset); + } else if (dst > 0 != (dstOffset == guessedOffset)) { + var nonDstOffset = Math.max(winterOffset, summerOffset); + var trueOffset = dst > 0 ? dstOffset : nonDstOffset; + date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4); + } + HEAP32[tmPtr + 24 >> 2] = date.getDay(); + var yday = __yday_from_date(date) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; + HEAP32[tmPtr >> 2] = date.getSeconds(); + HEAP32[tmPtr + 4 >> 2] = date.getMinutes(); + HEAP32[tmPtr + 8 >> 2] = date.getHours(); + HEAP32[tmPtr + 12 >> 2] = date.getDate(); + HEAP32[tmPtr + 16 >> 2] = date.getMonth(); + HEAP32[tmPtr + 20 >> 2] = date.getYear(); + return date.getTime() / 1e3 | 0; +} + +function __timegm_js(tmPtr) { + var time = Date.UTC(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0); + var date = new Date(time); + HEAP32[tmPtr + 24 >> 2] = date.getUTCDay(); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; + return date.getTime() / 1e3 | 0; +} + +function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +function __tzset_js(timezone, daylight, tzname) { + var currentYear = new Date().getFullYear(); + var winter = new Date(currentYear, 0, 1); + var summer = new Date(currentYear, 6, 1); + var winterOffset = winter.getTimezoneOffset(); + var summerOffset = summer.getTimezoneOffset(); + var stdTimezoneOffset = Math.max(winterOffset, summerOffset); + HEAPU32[timezone >> 2] = stdTimezoneOffset * 60; + HEAP32[daylight >> 2] = Number(winterOffset != summerOffset); + function extractZone(date) { + var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); + return match ? match[1] : "GMT"; + } + var winterName = extractZone(winter); + var summerName = extractZone(summer); + var winterNamePtr = allocateUTF8(winterName); + var summerNamePtr = allocateUTF8(summerName); + if (summerOffset < winterOffset) { + HEAPU32[tzname >> 2] = winterNamePtr; + HEAPU32[tzname + 4 >> 2] = summerNamePtr; + } else { + HEAPU32[tzname >> 2] = summerNamePtr; + HEAPU32[tzname + 4 >> 2] = winterNamePtr; + } +} + +function _emscripten_date_now() { + return Date.now(); +} + +var _emscripten_get_now; + +_emscripten_get_now = () => performance.now(); + +function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); +} + +function getHeapMax() { + return 2147483648; +} + +function emscripten_realloc_buffer(size) { + var b = wasmMemory.buffer; + try { + wasmMemory.grow(size - b.byteLength + 65535 >>> 16); + updateMemoryViews(); + return 1; + } catch (e) {} +} + +function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + var maxHeapSize = getHeapMax(); + if (requestedSize > maxHeapSize) { + return false; + } + let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple; + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + .2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; +} + +function _proc_exit(code) { + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + if (Module["onExit"]) Module["onExit"](code); + ABORT = true; + } + quit_(code, new ExitStatus(code)); +} + +function exitJS(status, implicit) { + EXITSTATUS = status; + if (!keepRuntimeAlive()) { + exitRuntime(); + } + _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 doReadv(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 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 < len) break; + if (typeof offset !== "undefined") { + offset += curr; + } + } + return ret; +} + +function _fd_read(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doReadv(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function convertI32PairToI53Checked(lo, hi) { + return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN; +} + +function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + try { + var offset = convertI32PairToI53Checked(offset_low, offset_high); + if (isNaN(offset)) return 61; + var stream = SYSCALLS.getStreamFromFD(fd); + FS.llseek(stream, offset, whence); + tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1]; + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function doWritev(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[iov + 4 >> 2]; + iov += 8; + var curr = FS.write(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (typeof offset !== "undefined") { + offset += curr; + } + } + return ret; +} + +function _fd_write(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doWritev(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function handleException(e) { + if (e instanceof ExitStatus || e == "unwind") { + return EXITSTATUS; + } + quit_(1, e); +} + +function allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +function runAndAbortIfError(func) { + try { + return func(); + } catch (e) { + abort(e); + } +} + +function maybeExit() { + if (!keepRuntimeAlive()) { + try { + _exit(EXITSTATUS); + } catch (e) { + handleException(e); + } + } +} + +function callUserCallback(func) { + if (runtimeExited || ABORT) { + return; + } + try { + func(); + maybeExit(); + } catch (e) { + handleException(e); + } +} + +function runtimeKeepalivePush() { + runtimeKeepaliveCounter += 1; +} + +function runtimeKeepalivePop() { + runtimeKeepaliveCounter -= 1; +} + +var Asyncify = { + instrumentWasmImports: function(imports) { + var ASYNCIFY_IMPORTS = [ "emscripten_sleep", "emscripten_wget", "emscripten_wget_data", "emscripten_idb_load", "emscripten_idb_store", "emscripten_idb_delete", "emscripten_idb_exists", "emscripten_idb_load_blob", "emscripten_idb_store_blob", "SDL_Delay", "emscripten_scan_registers", "emscripten_lazy_load_code", "emscripten_fiber_swap", "__load_secondary_module", "fd_sync", "__wasi_fd_sync", "_emval_await", "_dlopen_js", "__asyncjs__*" ]; + for (var x in imports) { + (function(x) { + var original = imports[x]; + var sig = original.sig; + if (typeof original == "function") { + var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith("__asyncjs__"); + } + })(x); + } + }, + instrumentWasmExports: function(exports) { + var ret = {}; + for (var x in exports) { + (function(x) { + var original = exports[x]; + if (typeof original == "function") { + ret[x] = function() { + Asyncify.exportCallStack.push(x); + try { + return original.apply(null, arguments); + } finally { + if (!ABORT) { + var y = Asyncify.exportCallStack.pop(); + assert(y === x); + Asyncify.maybeStopUnwind(); + } + } + }; + } else { + ret[x] = original; + } + })(x); + } + return ret; + }, + State: { + Normal: 0, + Unwinding: 1, + Rewinding: 2, + Disabled: 3 + }, + state: 0, + StackSize: 8192, + currData: null, + handleSleepReturnValue: 0, + exportCallStack: [], + callStackNameToId: {}, + callStackIdToName: {}, + callStackId: 0, + asyncPromiseHandlers: null, + sleepCallbacks: [], + getCallStackId: function(funcName) { + var id = Asyncify.callStackNameToId[funcName]; + if (id === undefined) { + id = Asyncify.callStackId++; + Asyncify.callStackNameToId[funcName] = id; + Asyncify.callStackIdToName[id] = funcName; + } + return id; + }, + maybeStopUnwind: function() { + if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) { + Asyncify.state = Asyncify.State.Normal; + runtimeKeepalivePush(); + runAndAbortIfError(_asyncify_stop_unwind); + if (typeof Fibers != "undefined") { + Fibers.trampoline(); + } + } + }, + whenDone: function() { + return new Promise((resolve, reject) => { + Asyncify.asyncPromiseHandlers = { + resolve: resolve, + reject: reject + }; + }); + }, + allocateData: function() { + var ptr = _malloc(12 + Asyncify.StackSize); + Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize); + Asyncify.setDataRewindFunc(ptr); + return ptr; + }, + setDataHeader: function(ptr, stack, stackSize) { + HEAP32[ptr >> 2] = stack; + HEAP32[ptr + 4 >> 2] = stack + stackSize; + }, + setDataRewindFunc: function(ptr) { + var bottomOfCallStack = Asyncify.exportCallStack[0]; + var rewindId = Asyncify.getCallStackId(bottomOfCallStack); + HEAP32[ptr + 8 >> 2] = rewindId; + }, + getDataRewindFunc: function(ptr) { + var id = HEAP32[ptr + 8 >> 2]; + var name = Asyncify.callStackIdToName[id]; + var func = Module["asm"][name]; + return func; + }, + doRewind: function(ptr) { + var start = Asyncify.getDataRewindFunc(ptr); + runtimeKeepalivePop(); + return start(); + }, + handleSleep: function(startAsync) { + if (ABORT) return; + if (Asyncify.state === Asyncify.State.Normal) { + var reachedCallback = false; + var reachedAfterCallback = false; + startAsync((handleSleepReturnValue = 0) => { + if (ABORT) return; + Asyncify.handleSleepReturnValue = handleSleepReturnValue; + reachedCallback = true; + if (!reachedAfterCallback) { + return; + } + Asyncify.state = Asyncify.State.Rewinding; + runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData)); + if (typeof Browser != "undefined" && Browser.mainLoop.func) { + Browser.mainLoop.resume(); + } + var asyncWasmReturnValue, isError = false; + try { + asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData); + } catch (err) { + asyncWasmReturnValue = err; + isError = true; + } + var handled = false; + if (!Asyncify.currData) { + var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers; + if (asyncPromiseHandlers) { + Asyncify.asyncPromiseHandlers = null; + (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue); + handled = true; + } + } + if (isError && !handled) { + throw asyncWasmReturnValue; + } + }); + reachedAfterCallback = true; + if (!reachedCallback) { + Asyncify.state = Asyncify.State.Unwinding; + Asyncify.currData = Asyncify.allocateData(); + if (typeof Browser != "undefined" && Browser.mainLoop.func) { + Browser.mainLoop.pause(); + } + runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData)); + } + } else if (Asyncify.state === Asyncify.State.Rewinding) { + Asyncify.state = Asyncify.State.Normal; + runAndAbortIfError(_asyncify_stop_rewind); + _free(Asyncify.currData); + Asyncify.currData = null; + Asyncify.sleepCallbacks.forEach(func => callUserCallback(func)); + } else { + abort("invalid state: " + Asyncify.state); + } + return Asyncify.handleSleepReturnValue; + }, + handleAsync: function(startAsync) { + return Asyncify.handleSleep(wakeUp => { + startAsync().then(wakeUp); + }); + } +}; + +function AsciiToString(ptr) { + var str = ""; + while (1) { + var ch = HEAPU8[ptr++ >> 0]; + if (!ch) return str; + str += String.fromCharCode(ch); + } +} + +var FSNode = function(parent, name, mode, rdev) { + if (!parent) { + parent = this; + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; +}; + +var readMode = 292 | 73; + +var writeMode = 146; + +Object.defineProperties(FSNode.prototype, { + read: { + get: function() { + return (this.mode & readMode) === readMode; + }, + set: function(val) { + val ? this.mode |= readMode : this.mode &= ~readMode; + } + }, + write: { + get: function() { + return (this.mode & writeMode) === writeMode; + }, + set: function(val) { + val ? this.mode |= writeMode : this.mode &= ~writeMode; + } + }, + isFolder: { + get: function() { + return FS.isDir(this.mode); + } + }, + isDevice: { + get: function() { + return FS.isChrdev(this.mode); + } + } +}); + +FS.FSNode = FSNode; + +FS.staticInit(); + +var wasmImports = { + "q": __asyncjs__emglken_fill_stdin_buffer, + "D": ___syscall_faccessat, + "l": ___syscall_fcntl64, + "C": ___syscall_getcwd, + "B": ___syscall_ioctl, + "k": ___syscall_openat, + "A": ___syscall_stat64, + "z": ___syscall_unlinkat, + "x": __emscripten_get_now_is_monotonic, + "w": __emscripten_throw_longjmp, + "v": __gmtime_js, + "u": __localtime_js, + "t": __mktime_js, + "s": __timegm_js, + "r": __tzset_js, + "i": _emscripten_date_now, + "p": _emscripten_memcpy_big, + "o": _emscripten_resize_heap, + "a": _exit, + "c": _fd_close, + "y": _fd_read, + "m": _fd_seek, + "j": _fd_write, + "h": glk_buffer_canon_decompose_uni, + "g": glk_buffer_canon_normalize_uni, + "f": glk_buffer_to_lower_case_uni, + "e": glk_buffer_to_title_case_uni, + "d": glk_buffer_to_upper_case_uni, + "n": invoke_vi, + "b": invoke_vii +}; + +var asm = createWasm(); + +var ___wasm_call_ctors = function() { + return (___wasm_call_ctors = Module["asm"]["F"]).apply(null, arguments); +}; + +var _malloc = function() { + return (_malloc = Module["asm"]["G"]).apply(null, arguments); +}; + +var _free = function() { + return (_free = Module["asm"]["H"]).apply(null, arguments); +}; + +var _main = Module["_main"] = function() { + return (_main = Module["_main"] = Module["asm"]["I"]).apply(null, arguments); +}; + +var _gidispatch_get_game_id = Module["_gidispatch_get_game_id"] = function() { + return (_gidispatch_get_game_id = Module["_gidispatch_get_game_id"] = Module["asm"]["J"]).apply(null, arguments); +}; + +var _fflush = Module["_fflush"] = function() { + return (_fflush = Module["_fflush"] = Module["asm"]["K"]).apply(null, arguments); +}; + +var ___errno_location = function() { + return (___errno_location = Module["asm"]["L"]).apply(null, arguments); +}; + +var ___funcs_on_exit = function() { + return (___funcs_on_exit = Module["asm"]["M"]).apply(null, arguments); +}; + +var _setThrew = function() { + return (_setThrew = Module["asm"]["O"]).apply(null, arguments); +}; + +var _saveSetjmp = function() { + return (_saveSetjmp = Module["asm"]["saveSetjmp"]).apply(null, arguments); +}; + +var _emscripten_stack_set_limits = function() { + return (_emscripten_stack_set_limits = Module["asm"]["emscripten_stack_set_limits"]).apply(null, arguments); +}; + +var _emscripten_stack_get_base = function() { + return (_emscripten_stack_get_base = Module["asm"]["emscripten_stack_get_base"]).apply(null, arguments); +}; + +var _emscripten_stack_get_end = function() { + return (_emscripten_stack_get_end = Module["asm"]["emscripten_stack_get_end"]).apply(null, arguments); +}; + +var stackSave = function() { + return (stackSave = Module["asm"]["P"]).apply(null, arguments); +}; + +var stackRestore = function() { + return (stackRestore = Module["asm"]["Q"]).apply(null, arguments); +}; + +var stackAlloc = function() { + return (stackAlloc = Module["asm"]["R"]).apply(null, arguments); +}; + +var dynCall_vii = Module["dynCall_vii"] = function() { + return (dynCall_vii = Module["dynCall_vii"] = Module["asm"]["S"]).apply(null, arguments); +}; + +var dynCall_vi = Module["dynCall_vi"] = function() { + return (dynCall_vi = Module["dynCall_vi"] = Module["asm"]["T"]).apply(null, arguments); +}; + +var _asyncify_start_unwind = function() { + return (_asyncify_start_unwind = Module["asm"]["U"]).apply(null, arguments); +}; + +var _asyncify_stop_unwind = function() { + return (_asyncify_stop_unwind = Module["asm"]["V"]).apply(null, arguments); +}; + +var _asyncify_start_rewind = function() { + return (_asyncify_start_rewind = Module["asm"]["W"]).apply(null, arguments); +}; + +var _asyncify_stop_rewind = function() { + return (_asyncify_stop_rewind = Module["asm"]["X"]).apply(null, arguments); +}; + +var ___start_em_js = Module["___start_em_js"] = 33568; + +var ___stop_em_js = Module["___stop_em_js"] = 36253; + +function invoke_vii(index, a1, a2) { + var sp = stackSave(); + try { + dynCall_vii(index, a1, a2); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_vi(index, a1) { + var sp = stackSave(); + try { + dynCall_vi(index, a1); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +Module["AsciiToString"] = AsciiToString; + +Module["FS"] = FS; + +var calledRun; + +dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; +}; + +function callMain(args = []) { + var entryFunction = _main; + args.unshift(thisProgram); + var argc = args.length; + var argv = stackAlloc((argc + 1) * 4); + var argv_ptr = argv >> 2; + args.forEach(arg => { + HEAP32[argv_ptr++] = allocateUTF8OnStack(arg); + }); + HEAP32[argv_ptr] = 0; + try { + var ret = entryFunction(argc, argv); + exitJS(ret, true); + return ret; + } catch (e) { + return handleException(e); + } +} + +function run(args = arguments_) { + if (runDependencies > 0) { + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + preMain(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + if (shouldRunNow) callMain(args); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } +} + +if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } +} + +var shouldRunNow = true; + +if (Module["noInitialRun"]) shouldRunNow = false; + +run(); + + + return Module.ready +} + +); +})(); +export default Module; \ No newline at end of file diff --git a/docs/emglken/git-core.wasm b/docs/emglken/git-core.wasm new file mode 100755 index 0000000..bd6ea4e Binary files /dev/null and b/docs/emglken/git-core.wasm differ diff --git a/docs/emglken/glulxe-core.js b/docs/emglken/glulxe-core.js new file mode 100644 index 0000000..54cd2a2 --- /dev/null +++ b/docs/emglken/glulxe-core.js @@ -0,0 +1,3751 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +function(Module = {}) { + +var Module = typeof Module != "undefined" ? Module : {}; + +var readyPromiseResolve, readyPromiseReject; + +Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; +}); + +var moduleOverrides = Object.assign({}, Module); + +var arguments_ = []; + +var thisProgram = "./this.program"; + +var quit_ = (status, toThrow) => { + throw toThrow; +}; + +var ENVIRONMENT_IS_WEB = true; + +var ENVIRONMENT_IS_WORKER = false; + +var scriptDirectory = ""; + +function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; +} + +var read_, readAsync, readBinary, setWindowTitle; + +if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (typeof document != "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (_scriptDir) { + scriptDirectory = _scriptDir; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + { + read_ = url => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = url => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + readAsync = (url, onload, onerror) => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = () => { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + } + setWindowTitle = title => document.title = title; +} else {} + +var out = Module["print"] || console.log.bind(console); + +var err = Module["printErr"] || console.warn.bind(console); + +Object.assign(Module, moduleOverrides); + +moduleOverrides = null; + +if (Module["arguments"]) arguments_ = Module["arguments"]; + +if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; + +if (Module["quit"]) quit_ = Module["quit"]; + +var wasmBinary; + +if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + +var noExitRuntime = Module["noExitRuntime"] || false; + +if (typeof WebAssembly != "object") { + abort("no native wasm support detected"); +} + +var wasmMemory; + +var ABORT = false; + +var EXITSTATUS; + +function assert(condition, text) { + if (!condition) { + abort(text); + } +} + +var UTF8Decoder = new TextDecoder("utf8"); + +function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; + return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr))); +} + +function UTF8ToString(ptr, maxBytesToRead) { + if (!ptr) return ""; + var maxPtr = ptr + maxBytesToRead; + for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end; + return UTF8Decoder.decode(HEAPU8.subarray(ptr, end)); +} + +function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; +} + +function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); +} + +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i); + if (c <= 127) { + len++; + } else if (c <= 2047) { + len += 2; + } else if (c >= 55296 && c <= 57343) { + len += 4; + ++i; + } else { + len += 3; + } + } + return len; +} + +var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + +function updateMemoryViews() { + var b = wasmMemory.buffer; + Module["HEAP8"] = HEAP8 = new Int8Array(b); + Module["HEAP16"] = HEAP16 = new Int16Array(b); + Module["HEAP32"] = HEAP32 = new Int32Array(b); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); + Module["HEAPF32"] = HEAPF32 = new Float32Array(b); + Module["HEAPF64"] = HEAPF64 = new Float64Array(b); +} + +var wasmTable; + +var __ATPRERUN__ = []; + +var __ATINIT__ = []; + +var __ATMAIN__ = []; + +var __ATEXIT__ = []; + +var __ATPOSTRUN__ = []; + +var runtimeInitialized = false; + +var runtimeExited = false; + +var runtimeKeepaliveCounter = 0; + +function keepRuntimeAlive() { + return noExitRuntime || runtimeKeepaliveCounter > 0; +} + +function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); +} + +function initRuntime() { + runtimeInitialized = true; + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); + FS.ignorePermissions = false; + TTY.init(); + callRuntimeCallbacks(__ATINIT__); +} + +function preMain() { + callRuntimeCallbacks(__ATMAIN__); +} + +function exitRuntime() { + ___funcs_on_exit(); + callRuntimeCallbacks(__ATEXIT__); + FS.quit(); + TTY.shutdown(); + runtimeExited = true; +} + +function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); +} + +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} + +var runDependencies = 0; + +var runDependencyWatcher = null; + +var dependenciesFulfilled = null; + +function getUniqueRunDependency(id) { + return id; +} + +function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } +} + +function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } +} + +function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what = "Aborted(" + what + ")"; + err(what); + ABORT = true; + EXITSTATUS = 1; + what += ". Build with -sASSERTIONS for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; +} + +var dataURIPrefix = "data:application/octet-stream;base64,"; + +function isDataURI(filename) { + return filename.startsWith(dataURIPrefix); +} + +var wasmBinaryFile; + +if (Module["locateFile"]) { + wasmBinaryFile = "glulxe-core.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } +} else { + wasmBinaryFile = new URL("glulxe-core.wasm", import.meta.url).href; +} + +function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } + throw "both async and sync fetching of the wasm failed"; + } catch (err) { + abort(err); + } +} + +function getBinaryPromise(binaryFile) { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function(response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + binaryFile + "'"; + } + return response["arrayBuffer"](); + }).catch(function() { + return getBinary(binaryFile); + }); + } + } + return Promise.resolve().then(function() { + return getBinary(binaryFile); + }); +} + +function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile).then(function(binary) { + return WebAssembly.instantiate(binary, imports); + }).then(function(instance) { + return instance; + }).then(receiver, function(reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason); + }); +} + +function instantiateAsync(binary, binaryFile, imports, callback) { + if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function(response) { + var result = WebAssembly.instantiateStreaming(response, imports); + return result.then(callback, function(reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(binaryFile, imports, callback); + }); + }); + } else { + return instantiateArrayBuffer(binaryFile, imports, callback); + } +} + +function createWasm() { + var info = { + "a": wasmImports + }; + function receiveInstance(instance, module) { + var exports = instance.exports; + exports = Asyncify.instrumentWasmExports(exports); + Module["asm"] = exports; + wasmMemory = Module["asm"]["B"]; + updateMemoryViews(); + wasmTable = Module["asm"]["K"]; + addOnInit(Module["asm"]["C"]); + removeRunDependency("wasm-instantiate"); + return exports; + } + addRunDependency("wasm-instantiate"); + function receiveInstantiationResult(result) { + receiveInstance(result["instance"]); + } + if (Module["instantiateWasm"]) { + try { + return Module["instantiateWasm"](info, receiveInstance); + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + readyPromiseReject(e); + } + } + instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject); + return {}; +} + +var tempDouble; + +var tempI64; + +function emglken_common_buffer_transformer(buf, len, numchars, func, dont_reduce) { + const index = buf >> 2; + const utf32 = HEAPU32.subarray(index, index + numchars); + const data = dont_reduce ? utf32 : utf32.reduce((prev, ch) => prev + String.fromCodePoint(ch), ""); + const new_str = func(data); + const newbuf = Uint32Array.from(new_str, ch => ch.codePointAt(0)); + const newlen = newbuf.length; + HEAPU32.set(newbuf.subarray(0, Math.min(len, newlen)), index); + return newlen; +} + +function glk_buffer_to_lower_case_uni(buf, len, numchars) { + return emglken_common_buffer_transformer(buf, len, numchars, str => str.toLowerCase()); +} + +function glk_buffer_to_upper_case_uni(buf, len, numchars) { + return emglken_common_buffer_transformer(buf, len, numchars, str => str.toUpperCase()); +} + +function glk_buffer_to_title_case_uni(buf, len, numchars, lowerrest) { + return emglken_common_buffer_transformer(buf, len, numchars, utf32 => utf32.reduce((prev, ch, index) => { + const special_cases = { + "ß": "Ss", + "DŽ": "Dž", + "Dž": "Dž", + "dž": "Dž", + "LJ": "Lj", + "Lj": "Lj", + "lj": "Lj", + "NJ": "Nj", + "Nj": "Nj", + "nj": "Nj", + "DZ": "Dz", + "Dz": "Dz", + "dz": "Dz", + "և": "Եւ", + "ᾲ": "Ὰͅ", + "ᾳ": "ᾼ", + "ᾴ": "Άͅ", + "ᾷ": "ᾼ͂", + "ᾼ": "ᾼ", + "ῂ": "Ὴͅ", + "ῃ": "ῌ", + "ῄ": "Ήͅ", + "ῇ": "ῌ͂", + "ῌ": "ῌ", + "ῲ": "Ὼͅ", + "ῳ": "ῼ", + "ῴ": "Ώͅ", + "ῷ": "ῼ͂", + "ῼ": "ῼ", + "ff": "Ff", + "fi": "Fi", + "fl": "Fl", + "ffi": "Ffi", + "ffl": "Ffl", + "ſt": "St", + "st": "St", + "ﬓ": "Մն", + "ﬔ": "Մե", + "ﬕ": "Մի", + "ﬖ": "Վն", + "ﬗ": "Մխ" + }; + const slightly_less_special_cases = [ "ᾈᾉᾊᾋᾌᾍᾎᾏ", "ᾘᾙᾚᾛᾜᾝᾞᾟ", "ᾨᾩᾪᾫᾬᾭᾮᾯ" ]; + let thischar = String.fromCodePoint(ch); + if (index === 0) { + if (special_cases[thischar]) { + thischar = special_cases[thischar]; + } else if (ch >= 8064 && ch < 8112) { + thischar = slightly_less_special_cases[(ch - 8064) / 16 | 0][ch % 8]; + } else { + thischar = thischar.toUpperCase(); + } + } else if (lowerrest) { + thischar = thischar.toLowerCase(); + } + return prev + thischar; + }, ""), 1); +} + +function glk_buffer_canon_decompose_uni(buf, len, numchars) { + return emglken_common_buffer_transformer(buf, len, numchars, str => str.normalize("NFD")); +} + +function glk_buffer_canon_normalize_uni(buf, len, numchars) { + return emglken_common_buffer_transformer(buf, len, numchars, str => str.normalize("NFC")); +} + +function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) { + return Asyncify.handleAsync(async () => { + if (!Module.emglken_stdin_buffers.length) { + await new Promise(resolve => { + Module.emglken_stdin_ready = resolve; + }); + } + const input = Module.emglken_stdin_buffers.shift(); + const len = Math.min(input.length, maxlen); + if (len == input.length) { + HEAPU8.set(input, buffer); + } else { + HEAPU8.set(input.subarray(0, len), buffer); + Module.emglken_stdin_buffers.unshift(input.subarray(len)); + } + return len; + }); +} + +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +} + +function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + callbacks.shift()(Module); + } +} + +var PATH = { + isAbs: path => path.charAt(0) === "/", + splitPath: filename => { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + }, + normalizeArray: (parts, allowAboveRoot) => { + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === ".") { + parts.splice(i, 1); + } else if (last === "..") { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + if (allowAboveRoot) { + for (;up; up--) { + parts.unshift(".."); + } + } + return parts; + }, + normalize: path => { + var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === "/"; + path = PATH.normalizeArray(path.split("/").filter(p => !!p), !isAbsolute).join("/"); + if (!path && !isAbsolute) { + path = "."; + } + if (path && trailingSlash) { + path += "/"; + } + return (isAbsolute ? "/" : "") + path; + }, + dirname: path => { + var result = PATH.splitPath(path), root = result[0], dir = result[1]; + if (!root && !dir) { + return "."; + } + if (dir) { + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + }, + basename: path => { + if (path === "/") return "/"; + path = PATH.normalize(path); + path = path.replace(/\/$/, ""); + var lastSlash = path.lastIndexOf("/"); + if (lastSlash === -1) return path; + return path.substr(lastSlash + 1); + }, + join: function() { + var paths = Array.prototype.slice.call(arguments); + return PATH.normalize(paths.join("/")); + }, + join2: (l, r) => { + return PATH.normalize(l + "/" + r); + } +}; + +function getRandomDevice() { + if (typeof crypto == "object" && typeof crypto["getRandomValues"] == "function") { + var randomBuffer = new Uint8Array(1); + return () => { + crypto.getRandomValues(randomBuffer); + return randomBuffer[0]; + }; + } else return () => abort("randomDevice"); +} + +var PATH_FS = { + resolve: function() { + var resolvedPath = "", resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = i >= 0 ? arguments[i] : FS.cwd(); + if (typeof path != "string") { + throw new TypeError("Arguments to path.resolve must be strings"); + } else if (!path) { + return ""; + } + resolvedPath = path + "/" + resolvedPath; + resolvedAbsolute = PATH.isAbs(path); + } + resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter(p => !!p), !resolvedAbsolute).join("/"); + return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; + }, + relative: (from, to) => { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (;start < arr.length; start++) { + if (arr[start] !== "") break; + } + var end = arr.length - 1; + for (;end >= 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 < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push(".."); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join("/"); + } +}; + +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} + +var TTY = { + ttys: [], + init: function() {}, + shutdown: function() {}, + register: function(dev, ops) { + TTY.ttys[dev] = { + input: [], + output: [], + ops: ops + }; + FS.registerDevice(dev, TTY.stream_ops); + }, + stream_ops: { + open: function(stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43); + } + stream.tty = tty; + stream.seekable = false; + }, + close: function(stream) { + stream.tty.ops.fsync(stream.tty); + }, + fsync: function(stream) { + stream.tty.ops.fsync(stream.tty); + }, + read: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60); + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset + i]); + } + } catch (e) { + throw new FS.ErrnoError(29); + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }, + default_tty_ops: { + get_char: function(tty) { + if (!tty.input.length) { + var result = null; + if (typeof window != "undefined" && typeof window.prompt == "function") { + result = window.prompt("Input: "); + if (result !== null) { + result += "\n"; + } + } else if (typeof readline == "function") { + result = readline(); + if (result !== null) { + result += "\n"; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + }, + put_char: function(tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function(tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + }, + default_tty1_ops: { + put_char: function(tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function(tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + } +}; + +function mmapAlloc(size) { + abort(); +} + +var MEMFS = { + ops_table: null, + mount: function(mount) { + return MEMFS.createNode(null, "/", 16384 | 511, 0); + }, + createNode: function(parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + throw new FS.ErrnoError(63); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, + stream: { + llseek: MEMFS.stream_ops.llseek + } + }, + file: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: FS.chrdev_stream_ops + } + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + if (parent) { + parent.contents[name] = node; + parent.timestamp = node.timestamp; + } + return node; + }, + getFileDataAsTypedArray: function(node) { + if (!node.contents) return new Uint8Array(0); + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); + return new Uint8Array(node.contents); + }, + expandFileStorage: function(node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); + }, + resizeFileStorage: function(node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; + node.usedBytes = 0; + } else { + var oldContents = node.contents; + node.contents = new Uint8Array(newSize); + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); + } + node.usedBytes = newSize; + } + }, + node_ops: { + getattr: function(node) { + var attr = {}; + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + }, + setattr: function(node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + }, + lookup: function(parent, name) { + throw FS.genericErrors[44]; + }, + mknod: function(parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + }, + rename: function(old_node, new_dir, new_name) { + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) {} + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(55); + } + } + } + delete old_node.parent.contents[old_node.name]; + old_node.parent.timestamp = Date.now(); + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + new_dir.timestamp = old_node.parent.timestamp; + old_node.parent = new_dir; + }, + unlink: function(parent, name) { + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + rmdir: function(parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(55); + } + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + readdir: function(node) { + var entries = [ ".", ".." ]; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + }, + symlink: function(parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); + node.link = oldpath; + return node; + }, + readlink: function(node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(28); + } + return node.link; + } + }, + stream_ops: { + read: function(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + if (size > 8 && contents.subarray) { + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; + } + return size; + }, + write: function(stream, buffer, offset, length, position, canOwn) { + if (buffer.buffer === HEAP8.buffer) { + canOwn = false; + } + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + if (buffer.subarray && (!node.contents || node.contents.subarray)) { + if (canOwn) { + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { + node.contents = buffer.slice(offset, offset + length); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + MEMFS.expandFileStorage(node, position + length); + if (node.contents.subarray && buffer.subarray) { + node.contents.set(buffer.subarray(offset, offset + length), position); + } else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; + } + } + node.usedBytes = Math.max(node.usedBytes, position + length); + return length; + }, + llseek: function(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + }, + allocate: function(stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + }, + mmap: function(stream, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + var ptr; + var allocated; + var contents = stream.node.contents; + if (!(flags & 2) && contents.buffer === HEAP8.buffer) { + allocated = false; + ptr = contents.byteOffset; + } else { + if (position > 0 || position + length < contents.length) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + HEAP8.set(contents, ptr); + } + return { + ptr: ptr, + allocated: allocated + }; + }, + msync: function(stream, buffer, offset, length, mmapFlags) { + MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + return 0; + } + } +}; + +function asyncLoad(url, onload, onerror, noRunDep) { + var dep = !noRunDep ? getUniqueRunDependency("al " + url) : ""; + readAsync(url, arrayBuffer => { + assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); + onload(new Uint8Array(arrayBuffer)); + if (dep) removeRunDependency(dep); + }, event => { + if (onerror) { + onerror(); + } else { + throw 'Loading data file "' + url + '" failed.'; + } + }); + if (dep) addRunDependency(dep); +} + +var FS = { + root: null, + mounts: [], + devices: {}, + streams: [], + nextInode: 1, + nameTable: null, + currentPath: "/", + initialized: false, + ignorePermissions: true, + ErrnoError: null, + genericErrors: {}, + filesystems: null, + syncFSRequests: 0, + lookupPath: (path, opts = {}) => { + path = PATH_FS.resolve(path); + if (!path) return { + path: "", + node: null + }; + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + opts = Object.assign(defaults, opts); + if (opts.recurse_count > 8) { + throw new FS.ErrnoError(32); + } + var parts = path.split("/").filter(p => !!p); + var current = FS.root; + var current_path = "/"; + for (var i = 0; i < parts.length; i++) { + var islast = i === parts.length - 1; + if (islast && opts.parent) { + break; + } + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + if (FS.isMountpoint(current)) { + if (!islast || islast && opts.follow_mount) { + current = current.mounted.root; + } + } + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + var lookup = FS.lookupPath(current_path, { + recurse_count: opts.recurse_count + 1 + }); + current = lookup.node; + if (count++ > 40) { + throw new FS.ErrnoError(32); + } + } + } + } + return { + path: current_path, + node: current + }; + }, + getPath: node => { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path; + } + path = path ? node.name + "/" + path : node.name; + node = node.parent; + } + }, + hashName: (parentid, name) => { + var hash = 0; + for (var i = 0; i < name.length; i++) { + hash = (hash << 5) - hash + name.charCodeAt(i) | 0; + } + return (parentid + hash >>> 0) % FS.nameTable.length; + }, + hashAddNode: node => { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + }, + hashRemoveNode: node => { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + }, + lookupNode: (parent, name) => { + var errCode = FS.mayLookup(parent); + if (errCode) { + throw new FS.ErrnoError(errCode, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + return FS.lookup(parent, name); + }, + createNode: (parent, name, mode, rdev) => { + var node = new FS.FSNode(parent, name, mode, rdev); + FS.hashAddNode(node); + return node; + }, + destroyNode: node => { + FS.hashRemoveNode(node); + }, + isRoot: node => { + return node === node.parent; + }, + isMountpoint: node => { + return !!node.mounted; + }, + isFile: mode => { + return (mode & 61440) === 32768; + }, + isDir: mode => { + return (mode & 61440) === 16384; + }, + isLink: mode => { + return (mode & 61440) === 40960; + }, + isChrdev: mode => { + return (mode & 61440) === 8192; + }, + isBlkdev: mode => { + return (mode & 61440) === 24576; + }, + isFIFO: mode => { + return (mode & 61440) === 4096; + }, + isSocket: mode => { + return (mode & 49152) === 49152; + }, + flagModes: { + "r": 0, + "r+": 2, + "w": 577, + "w+": 578, + "a": 1089, + "a+": 1090 + }, + modeStringToFlags: str => { + var flags = FS.flagModes[str]; + if (typeof flags == "undefined") { + throw new Error("Unknown file open mode: " + str); + } + return flags; + }, + flagsToPermissionString: flag => { + var perms = [ "r", "w", "rw" ][flag & 3]; + if (flag & 512) { + perms += "w"; + } + return perms; + }, + nodePermissions: (node, perms) => { + if (FS.ignorePermissions) { + return 0; + } + if (perms.includes("r") && !(node.mode & 292)) { + return 2; + } else if (perms.includes("w") && !(node.mode & 146)) { + return 2; + } else if (perms.includes("x") && !(node.mode & 73)) { + return 2; + } + return 0; + }, + mayLookup: dir => { + var errCode = FS.nodePermissions(dir, "x"); + if (errCode) return errCode; + if (!dir.node_ops.lookup) return 2; + return 0; + }, + mayCreate: (dir, name) => { + try { + var node = FS.lookupNode(dir, name); + return 20; + } catch (e) {} + return FS.nodePermissions(dir, "wx"); + }, + mayDelete: (dir, name, isdir) => { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var errCode = FS.nodePermissions(dir, "wx"); + if (errCode) { + return errCode; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 54; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 10; + } + } else { + if (FS.isDir(node.mode)) { + return 31; + } + } + return 0; + }, + mayOpen: (node, flags) => { + if (!node) { + return 44; + } + if (FS.isLink(node.mode)) { + return 32; + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { + return 31; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + }, + MAX_OPEN_FDS: 4096, + nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => { + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(33); + }, + getStream: fd => FS.streams[fd], + createStream: (stream, fd_start, fd_end) => { + if (!FS.FSStream) { + FS.FSStream = function() { + this.shared = {}; + }; + FS.FSStream.prototype = {}; + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: function() { + return this.node; + }, + set: function(val) { + this.node = val; + } + }, + isRead: { + get: function() { + return (this.flags & 2097155) !== 1; + } + }, + isWrite: { + get: function() { + return (this.flags & 2097155) !== 0; + } + }, + isAppend: { + get: function() { + return this.flags & 1024; + } + }, + flags: { + get: function() { + return this.shared.flags; + }, + set: function(val) { + this.shared.flags = val; + } + }, + position: { + get: function() { + return this.shared.position; + }, + set: function(val) { + this.shared.position = val; + } + } + }); + } + stream = Object.assign(new FS.FSStream(), stream); + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + }, + closeStream: fd => { + FS.streams[fd] = null; + }, + chrdev_stream_ops: { + open: stream => { + var device = FS.getDevice(stream.node.rdev); + stream.stream_ops = device.stream_ops; + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + }, + llseek: () => { + throw new FS.ErrnoError(70); + } + }, + major: dev => dev >> 8, + minor: dev => dev & 255, + makedev: (ma, mi) => ma << 8 | mi, + registerDevice: (dev, ops) => { + FS.devices[dev] = { + stream_ops: ops + }; + }, + getDevice: dev => FS.devices[dev], + getMounts: mount => { + var mounts = []; + var check = [ mount ]; + while (check.length) { + var m = check.pop(); + mounts.push(m); + check.push.apply(check, m.mounts); + } + return mounts; + }, + syncfs: (populate, callback) => { + if (typeof populate == "function") { + callback = populate; + populate = false; + } + FS.syncFSRequests++; + if (FS.syncFSRequests > 1) { + err("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"); + } + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + function doCallback(errCode) { + FS.syncFSRequests--; + return callback(errCode); + } + function done(errCode) { + if (errCode) { + if (!done.errored) { + done.errored = true; + return doCallback(errCode); + } + return; + } + if (++completed >= mounts.length) { + doCallback(null); + } + } + mounts.forEach(mount => { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + }, + mount: (type, opts, mountpoint) => { + var root = mountpoint === "/"; + var pseudo = !mountpoint; + var node; + if (root && FS.root) { + throw new FS.ErrnoError(10); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + mountpoint = lookup.path; + node = lookup.node; + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + } + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + if (root) { + FS.root = mountRoot; + } else if (node) { + node.mounted = mount; + if (node.mount) { + node.mount.mounts.push(mount); + } + } + return mountRoot; + }, + unmount: mountpoint => { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(28); + } + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + Object.keys(FS.nameTable).forEach(hash => { + var current = FS.nameTable[hash]; + while (current) { + var next = current.name_next; + if (mounts.includes(current.mount)) { + FS.destroyNode(current); + } + current = next; + } + }); + node.mounted = null; + var idx = node.mount.mounts.indexOf(mount); + node.mount.mounts.splice(idx, 1); + }, + lookup: (parent, name) => { + return parent.node_ops.lookup(parent, name); + }, + mknod: (path, mode, dev) => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === "." || name === "..") { + throw new FS.ErrnoError(28); + } + var errCode = FS.mayCreate(parent, name); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.mknod(parent, name, mode, dev); + }, + create: (path, mode) => { + mode = mode !== undefined ? mode : 438; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + }, + mkdir: (path, mode) => { + mode = mode !== undefined ? mode : 511; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + }, + mkdirTree: (path, mode) => { + var dirs = path.split("/"); + var d = ""; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += "/" + dirs[i]; + 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); + } catch (e) { + throw e; + } finally { + FS.hashAddNode(old_node); + } + }, + rmdir: path => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, true); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + }, + readdir: path => { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(54); + } + return node.node_ops.readdir(node); + }, + unlink: path => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, false); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + }, + readlink: path => { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(44); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(28); + } + return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + }, + stat: (path, dontFollow) => { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(44); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(63); + } + return node.node_ops.getattr(node); + }, + lstat: path => { + return FS.stat(path, true); + }, + chmod: (path, mode, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + mode: mode & 4095 | node.mode & ~4095, + timestamp: Date.now() + }); + }, + lchmod: (path, mode) => { + FS.chmod(path, mode, true); + }, + fchmod: (fd, mode) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chmod(stream.node, mode); + }, + chown: (path, uid, gid, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + }); + }, + lchown: (path, uid, gid) => { + FS.chown(path, uid, gid, true); + }, + fchown: (fd, uid, gid) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chown(stream.node, uid, gid); + }, + truncate: (path, len) => { + if (len < 0) { + throw new FS.ErrnoError(28); + } + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: true + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(31); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(28); + } + var errCode = FS.nodePermissions(node, "w"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + }, + ftruncate: (fd, len) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(28); + } + FS.truncate(stream.node, len); + }, + utime: (path, atime, mtime) => { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + }, + open: (path, flags, mode) => { + if (path === "") { + throw new FS.ErrnoError(44); + } + flags = typeof flags == "string" ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode == "undefined" ? 438 : mode; + if (flags & 64) { + mode = mode & 4095 | 32768; + } else { + mode = 0; + } + var node; + if (typeof path == "object") { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 131072) + }); + node = lookup.node; + } catch (e) {} + } + var created = false; + if (flags & 64) { + if (node) { + if (flags & 128) { + throw new FS.ErrnoError(20); + } + } else { + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(44); + } + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + if (flags & 65536 && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + if (!created) { + var errCode = FS.mayOpen(node, flags); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + } + if (flags & 512 && !created) { + FS.truncate(node, 0); + } + flags &= ~(128 | 512 | 131072); + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + ungotten: [], + error: false + }); + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module["logReadFiles"] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + } + } + return stream; + }, + close: stream => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (stream.getdents) stream.getdents = null; + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + stream.fd = null; + }, + isClosed: stream => { + return stream.fd === null; + }, + llseek: (stream, offset, whence) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(70); + } + if (whence != 0 && whence != 1 && whence != 2) { + throw new FS.ErrnoError(28); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + }, + read: (stream, buffer, offset, length, position) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(28); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + }, + write: (stream, buffer, offset, length, position, canOwn) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(28); + } + if (stream.seekable && stream.flags & 1024) { + FS.llseek(stream, 0, 2); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + return bytesWritten; + }, + allocate: (stream, offset, length) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(28); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(138); + } + stream.stream_ops.allocate(stream, offset, length); + }, + mmap: (stream, length, position, prot, flags) => { + if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) { + throw new FS.ErrnoError(2); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(2); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(43); + } + return stream.stream_ops.mmap(stream, length, position, prot, flags); + }, + msync: (stream, buffer, offset, length, mmapFlags) => { + if (!stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + }, + munmap: stream => 0, + ioctl: (stream, cmd, arg) => { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + }, + readFile: (path, opts = {}) => { + opts.flags = opts.flags || 0; + opts.encoding = opts.encoding || "binary"; + if (opts.encoding !== "utf8" && opts.encoding !== "binary") { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === "utf8") { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === "binary") { + ret = buf; + } + FS.close(stream); + return ret; + }, + writeFile: (path, data, opts = {}) => { + opts.flags = opts.flags || 577; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data == "string") { + var buf = new Uint8Array(lengthBytesUTF8(data) + 1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); + } else { + throw new Error("Unsupported data type"); + } + FS.close(stream); + }, + cwd: () => FS.currentPath, + chdir: path => { + var lookup = FS.lookupPath(path, { + follow: true + }); + if (lookup.node === null) { + throw new FS.ErrnoError(44); + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(54); + } + var errCode = FS.nodePermissions(lookup.node, "x"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + FS.currentPath = lookup.path; + }, + createDefaultDirectories: () => { + FS.mkdir("/tmp"); + FS.mkdir("/home"); + FS.mkdir("/home/web_user"); + }, + createDefaultDevices: () => { + FS.mkdir("/dev"); + FS.registerDevice(FS.makedev(1, 3), { + read: () => 0, + write: (stream, buffer, offset, length, pos) => length + }); + FS.mkdev("/dev/null", FS.makedev(1, 3)); + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev("/dev/tty", FS.makedev(5, 0)); + FS.mkdev("/dev/tty1", FS.makedev(6, 0)); + var random_device = getRandomDevice(); + FS.createDevice("/dev", "random", random_device); + FS.createDevice("/dev", "urandom", random_device); + FS.mkdir("/dev/shm"); + FS.mkdir("/dev/shm/tmp"); + }, + createSpecialDirectories: () => { + FS.mkdir("/proc"); + var proc_self = FS.mkdir("/proc/self"); + FS.mkdir("/proc/self/fd"); + FS.mount({ + mount: () => { + var node = FS.createNode(proc_self, "fd", 16384 | 511, 73); + node.node_ops = { + lookup: (parent, name) => { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + var ret = { + parent: null, + mount: { + mountpoint: "fake" + }, + node_ops: { + readlink: () => stream.path + } + }; + ret.parent = ret; + return ret; + } + }; + return node; + } + }, {}, "/proc/self/fd"); + }, + createStandardStreams: () => { + if (Module["stdin"]) { + FS.createDevice("/dev", "stdin", Module["stdin"]); + } else { + FS.symlink("/dev/tty", "/dev/stdin"); + } + if (Module["stdout"]) { + FS.createDevice("/dev", "stdout", null, Module["stdout"]); + } else { + FS.symlink("/dev/tty", "/dev/stdout"); + } + if (Module["stderr"]) { + FS.createDevice("/dev", "stderr", null, Module["stderr"]); + } else { + FS.symlink("/dev/tty1", "/dev/stderr"); + } + var stdin = FS.open("/dev/stdin", 0); + var stdout = FS.open("/dev/stdout", 1); + var stderr = FS.open("/dev/stderr", 1); + }, + ensureErrnoError: () => { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + this.name = "ErrnoError"; + this.node = node; + this.setErrno = function(errno) { + this.errno = errno; + }; + this.setErrno(errno); + this.message = "FS error"; + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + [ 44 ].forEach(code => { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = ""; + }); + }, + staticInit: () => { + FS.ensureErrnoError(); + FS.nameTable = new Array(4096); + FS.mount(MEMFS, {}, "/"); + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + FS.filesystems = { + "MEMFS": MEMFS + }; + }, + init: (input, output, error) => { + FS.init.initialized = true; + FS.ensureErrnoError(); + Module["stdin"] = input || Module["stdin"]; + Module["stdout"] = output || Module["stdout"]; + Module["stderr"] = error || Module["stderr"]; + FS.createStandardStreams(); + }, + quit: () => { + FS.init.initialized = false; + _fflush(0); + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + }, + getMode: (canRead, canWrite) => { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + }, + 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) {} + parent = current; + } + return current; + }, + createFile: (parent, name, properties, canRead, canWrite) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + }, + createDataFile: (parent, name, data, canRead, canWrite, canOwn) => { + var path = name; + if (parent) { + parent = typeof parent == "string" ? parent : FS.getPath(parent); + path = name ? PATH.join2(parent, name) : parent; + } + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data == "string") { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + 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); + } + return node; + }, + createDevice: (parent, name, input, output) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + FS.registerDevice(dev, { + open: stream => { + stream.seekable = false; + }, + close: stream => { + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: (stream, buffer, offset, length, pos) => { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: (stream, buffer, offset, length, pos) => { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset + i]); + } catch (e) { + throw new FS.ErrnoError(29); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + }, + forceLoadFile: obj => { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + if (typeof XMLHttpRequest != "undefined") { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (read_) { + try { + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + throw new FS.ErrnoError(29); + } + } else { + throw new Error("Cannot load without read() or XMLHttpRequest."); + } + }, + createLazyFile: (parent, name, url, canRead, canWrite) => { + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; + } + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length - 1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = idx / this.chunkSize | 0; + return this.getter(chunkNum)[chunkOffset]; + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + var xhr = new XMLHttpRequest(); + xhr.open("HEAD", url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + var chunkSize = 1024 * 1024; + if (!hasByteServing) chunkSize = datalength; + var doXHR = (from, to) => { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!"); + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + xhr.responseType = "arraybuffer"; + if (xhr.overrideMimeType) { + xhr.overrideMimeType("text/plain; charset=x-user-defined"); + } + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } + return intArrayFromString(xhr.responseText || "", true); + }; + var lazyArray = this; + lazyArray.setDataGetter(chunkNum => { + var start = chunkNum * chunkSize; + var end = (chunkNum + 1) * chunkSize - 1; + end = Math.min(end, datalength - 1); + if (typeof lazyArray.chunks[chunkNum] == "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof lazyArray.chunks[chunkNum] == "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + if (usesGzip || !datalength) { + chunkSize = datalength = 1; + datalength = this.getter(0).length; + chunkSize = datalength; + out("LazyFiles on gzip forces download of the whole file when length is accessed"); + } + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + }; + if (typeof XMLHttpRequest != "undefined") { + if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; + var lazyArray = new LazyUint8Array(); + Object.defineProperties(lazyArray, { + length: { + get: function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }, + chunkSize: { + get: function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + } + }); + var properties = { + isDevice: false, + contents: lazyArray + }; + } else { + var properties = { + isDevice: false, + url: url + }; + } + var node = FS.createFile(parent, name, properties, canRead, canWrite); + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + Object.defineProperties(node, { + usedBytes: { + get: function() { + return this.contents.length; + } + } + }); + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(key => { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + FS.forceLoadFile(node); + return fn.apply(null, arguments); + }; + }); + function writeChunks(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= contents.length) return 0; + var size = Math.min(contents.length - position, length); + if (contents.slice) { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents.get(position + i); + } + } + return size; + } + stream_ops.read = (stream, buffer, offset, length, position) => { + FS.forceLoadFile(node); + return writeChunks(stream, buffer, offset, length, position); + }; + stream_ops.mmap = (stream, length, position, prot, flags) => { + FS.forceLoadFile(node); + var ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + writeChunks(stream, HEAP8, ptr, length, position); + return { + ptr: ptr, + allocated: true + }; + }; + node.stream_ops = stream_ops; + return node; + }, + createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => { + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency("cp " + fullname); + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => { + if (onerror) onerror(); + removeRunDependency(dep); + })) { + return; + } + finish(byteArray); + } + addRunDependency(dep); + if (typeof url == "string") { + asyncLoad(url, byteArray => processData(byteArray), onerror); + } else { + processData(url); + } + }, + indexedDB: () => { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + }, + DB_NAME: () => { + return "EM_FS_" + window.location.pathname; + }, + DB_VERSION: 20, + DB_STORE_NAME: "FILE_DATA", + saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => { + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = () => { + out("creating db"); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = () => { + var db = openRequest.result; + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readwrite"); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(path => { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = () => { + ok++; + if (ok + fail == total) finish(); + }; + putRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }, + loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => { + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; + openRequest.onsuccess = () => { + var db = openRequest.result; + try { + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readonly"); + } catch (e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(path => { + var getRequest = files.get(path); + getRequest.onsuccess = () => { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + } +}; + +var SYSCALLS = { + DEFAULT_POLLMASK: 5, + calculateAt: function(dirfd, path, allowEmpty) { + if (PATH.isAbs(path)) { + return path; + } + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = SYSCALLS.getStreamFromFD(dirfd); + dir = dirstream.path; + } + if (path.length == 0) { + if (!allowEmpty) { + throw new FS.ErrnoError(44); + } + return dir; + } + return PATH.join2(dir, path); + }, + doStat: function(func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + return -54; + } + throw e; + } + HEAP32[buf >> 2] = stat.dev; + HEAP32[buf + 8 >> 2] = stat.ino; + HEAP32[buf + 12 >> 2] = stat.mode; + HEAPU32[buf + 16 >> 2] = stat.nlink; + HEAP32[buf + 20 >> 2] = stat.uid; + HEAP32[buf + 24 >> 2] = stat.gid; + HEAP32[buf + 28 >> 2] = stat.rdev; + tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1]; + HEAP32[buf + 48 >> 2] = 4096; + HEAP32[buf + 52 >> 2] = stat.blocks; + var atime = stat.atime.getTime(); + var mtime = stat.mtime.getTime(); + var ctime = stat.ctime.getTime(); + tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1]; + HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3; + tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1]; + HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3; + tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1]; + HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3; + tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1]; + return 0; + }, + doMsync: function(addr, stream, len, flags, offset) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (flags & 2) { + return 0; + } + var buffer = HEAPU8.slice(addr, addr + len); + FS.msync(stream, buffer, offset, len, flags); + }, + varargs: undefined, + get: function() { + SYSCALLS.varargs += 4; + var ret = HEAP32[SYSCALLS.varargs - 4 >> 2]; + return ret; + }, + getStr: function(ptr) { + var ret = UTF8ToString(ptr); + return ret; + }, + getStreamFromFD: function(fd) { + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + return stream; + } +}; + +function ___syscall_faccessat(dirfd, path, amode, flags) { + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + if (amode & ~7) { + return -28; + } + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + if (!node) { + return -44; + } + var perms = ""; + if (amode & 4) perms += "r"; + if (amode & 2) perms += "w"; + if (amode & 1) perms += "x"; + if (perms && FS.nodePermissions(node, perms)) { + return -2; + } + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function setErrNo(value) { + HEAP32[___errno_location() >> 2] = value; + return value; +} + +function ___syscall_fcntl64(fd, cmd, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (cmd) { + case 0: + { + var arg = SYSCALLS.get(); + if (arg < 0) { + return -28; + } + var newStream; + newStream = FS.createStream(stream, arg); + return newStream.fd; + } + + case 1: + case 2: + return 0; + + case 3: + return stream.flags; + + case 4: + { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0; + } + + case 5: + { + var arg = SYSCALLS.get(); + var offset = 0; + HEAP16[arg + offset >> 1] = 2; + return 0; + } + + case 6: + case 7: + return 0; + + case 16: + case 8: + return -28; + + case 9: + setErrNo(28); + return -1; + + default: + { + return -28; + } + } + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_getcwd(buf, size) { + try { + if (size === 0) return -28; + var cwd = FS.cwd(); + var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1; + if (size < cwdLengthInBytes) return -68; + stringToUTF8(cwd, buf, size); + return cwdLengthInBytes; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_ioctl(fd, op, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (op) { + case 21509: + case 21505: + { + if (!stream.tty) return -59; + return 0; + } + + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: + { + if (!stream.tty) return -59; + return 0; + } + + case 21519: + { + if (!stream.tty) return -59; + var argp = SYSCALLS.get(); + HEAP32[argp >> 2] = 0; + return 0; + } + + case 21520: + { + if (!stream.tty) return -59; + return -28; + } + + case 21531: + { + var argp = SYSCALLS.get(); + return FS.ioctl(stream, op, argp); + } + + case 21523: + { + if (!stream.tty) return -59; + return 0; + } + + case 21524: + { + if (!stream.tty) return -59; + return 0; + } + + default: + return -28; + } + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_openat(dirfd, path, flags, varargs) { + SYSCALLS.varargs = varargs; + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + var mode = varargs ? SYSCALLS.get() : 0; + return FS.open(path, flags, mode).fd; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_stat64(path, buf) { + try { + path = SYSCALLS.getStr(path); + return SYSCALLS.doStat(FS.stat, path, buf); + } 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 === 0) { + FS.unlink(path); + } else if (flags === 512) { + FS.rmdir(path); + } else { + abort("Invalid flags passed to unlinkat"); + } + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +var nowIsMonotonic = true; + +function __emscripten_get_now_is_monotonic() { + return nowIsMonotonic; +} + +function readI53FromI64(ptr) { + return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296; +} + +function __gmtime_js(time, tmPtr) { + var date = new Date(readI53FromI64(time) * 1e3); + HEAP32[tmPtr >> 2] = date.getUTCSeconds(); + HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes(); + HEAP32[tmPtr + 8 >> 2] = date.getUTCHours(); + HEAP32[tmPtr + 12 >> 2] = date.getUTCDate(); + HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth(); + HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900; + HEAP32[tmPtr + 24 >> 2] = date.getUTCDay(); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; +} + +function __isLeapYear(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +} + +var __MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ]; + +var __MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ]; + +function __yday_from_date(date) { + var isLeapYear = __isLeapYear(date.getFullYear()); + var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE; + var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1; + return yday; +} + +function __localtime_js(time, tmPtr) { + var date = new Date(readI53FromI64(time) * 1e3); + HEAP32[tmPtr >> 2] = date.getSeconds(); + HEAP32[tmPtr + 4 >> 2] = date.getMinutes(); + HEAP32[tmPtr + 8 >> 2] = date.getHours(); + HEAP32[tmPtr + 12 >> 2] = date.getDate(); + HEAP32[tmPtr + 16 >> 2] = date.getMonth(); + HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900; + HEAP32[tmPtr + 24 >> 2] = date.getDay(); + var yday = __yday_from_date(date) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; + HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60); + var start = new Date(date.getFullYear(), 0, 1); + var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); + var winterOffset = start.getTimezoneOffset(); + var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0; + HEAP32[tmPtr + 32 >> 2] = dst; +} + +function __mktime_js(tmPtr) { + var date = new Date(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0); + var dst = HEAP32[tmPtr + 32 >> 2]; + var guessedOffset = date.getTimezoneOffset(); + var start = new Date(date.getFullYear(), 0, 1); + var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); + var winterOffset = start.getTimezoneOffset(); + var dstOffset = Math.min(winterOffset, summerOffset); + if (dst < 0) { + HEAP32[tmPtr + 32 >> 2] = Number(summerOffset != winterOffset && dstOffset == guessedOffset); + } else if (dst > 0 != (dstOffset == guessedOffset)) { + var nonDstOffset = Math.max(winterOffset, summerOffset); + var trueOffset = dst > 0 ? dstOffset : nonDstOffset; + date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4); + } + HEAP32[tmPtr + 24 >> 2] = date.getDay(); + var yday = __yday_from_date(date) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; + HEAP32[tmPtr >> 2] = date.getSeconds(); + HEAP32[tmPtr + 4 >> 2] = date.getMinutes(); + HEAP32[tmPtr + 8 >> 2] = date.getHours(); + HEAP32[tmPtr + 12 >> 2] = date.getDate(); + HEAP32[tmPtr + 16 >> 2] = date.getMonth(); + HEAP32[tmPtr + 20 >> 2] = date.getYear(); + return date.getTime() / 1e3 | 0; +} + +function __timegm_js(tmPtr) { + var time = Date.UTC(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0); + var date = new Date(time); + HEAP32[tmPtr + 24 >> 2] = date.getUTCDay(); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; + return date.getTime() / 1e3 | 0; +} + +function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +function __tzset_js(timezone, daylight, tzname) { + var currentYear = new Date().getFullYear(); + var winter = new Date(currentYear, 0, 1); + var summer = new Date(currentYear, 6, 1); + var winterOffset = winter.getTimezoneOffset(); + var summerOffset = summer.getTimezoneOffset(); + var stdTimezoneOffset = Math.max(winterOffset, summerOffset); + HEAPU32[timezone >> 2] = stdTimezoneOffset * 60; + HEAP32[daylight >> 2] = Number(winterOffset != summerOffset); + function extractZone(date) { + var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); + return match ? match[1] : "GMT"; + } + var winterName = extractZone(winter); + var summerName = extractZone(summer); + var winterNamePtr = allocateUTF8(winterName); + var summerNamePtr = allocateUTF8(summerName); + if (summerOffset < winterOffset) { + HEAPU32[tzname >> 2] = winterNamePtr; + HEAPU32[tzname + 4 >> 2] = summerNamePtr; + } else { + HEAPU32[tzname >> 2] = summerNamePtr; + HEAPU32[tzname + 4 >> 2] = winterNamePtr; + } +} + +function _emscripten_date_now() { + return Date.now(); +} + +var _emscripten_get_now; + +_emscripten_get_now = () => performance.now(); + +function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); +} + +function getHeapMax() { + return 2147483648; +} + +function emscripten_realloc_buffer(size) { + var b = wasmMemory.buffer; + try { + wasmMemory.grow(size - b.byteLength + 65535 >>> 16); + updateMemoryViews(); + return 1; + } catch (e) {} +} + +function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + var maxHeapSize = getHeapMax(); + if (requestedSize > maxHeapSize) { + return false; + } + let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple; + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + .2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; +} + +function _proc_exit(code) { + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + if (Module["onExit"]) Module["onExit"](code); + ABORT = true; + } + quit_(code, new ExitStatus(code)); +} + +function exitJS(status, implicit) { + EXITSTATUS = status; + if (!keepRuntimeAlive()) { + exitRuntime(); + } + _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 doReadv(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 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 < len) break; + if (typeof offset !== "undefined") { + offset += curr; + } + } + return ret; +} + +function _fd_read(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doReadv(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function convertI32PairToI53Checked(lo, hi) { + return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN; +} + +function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + try { + var offset = convertI32PairToI53Checked(offset_low, offset_high); + if (isNaN(offset)) return 61; + var stream = SYSCALLS.getStreamFromFD(fd); + FS.llseek(stream, offset, whence); + tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1]; + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function doWritev(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[iov + 4 >> 2]; + iov += 8; + var curr = FS.write(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (typeof offset !== "undefined") { + offset += curr; + } + } + return ret; +} + +function _fd_write(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doWritev(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function handleException(e) { + if (e instanceof ExitStatus || e == "unwind") { + return EXITSTATUS; + } + quit_(1, e); +} + +function allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +function runAndAbortIfError(func) { + try { + return func(); + } catch (e) { + abort(e); + } +} + +function maybeExit() { + if (!keepRuntimeAlive()) { + try { + _exit(EXITSTATUS); + } catch (e) { + handleException(e); + } + } +} + +function callUserCallback(func) { + if (runtimeExited || ABORT) { + return; + } + try { + func(); + maybeExit(); + } catch (e) { + handleException(e); + } +} + +function runtimeKeepalivePush() { + runtimeKeepaliveCounter += 1; +} + +function runtimeKeepalivePop() { + runtimeKeepaliveCounter -= 1; +} + +var Asyncify = { + instrumentWasmImports: function(imports) { + var ASYNCIFY_IMPORTS = [ "emscripten_sleep", "emscripten_wget", "emscripten_wget_data", "emscripten_idb_load", "emscripten_idb_store", "emscripten_idb_delete", "emscripten_idb_exists", "emscripten_idb_load_blob", "emscripten_idb_store_blob", "SDL_Delay", "emscripten_scan_registers", "emscripten_lazy_load_code", "emscripten_fiber_swap", "__load_secondary_module", "fd_sync", "__wasi_fd_sync", "_emval_await", "_dlopen_js", "__asyncjs__*" ]; + for (var x in imports) { + (function(x) { + var original = imports[x]; + var sig = original.sig; + if (typeof original == "function") { + var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith("__asyncjs__"); + } + })(x); + } + }, + instrumentWasmExports: function(exports) { + var ret = {}; + for (var x in exports) { + (function(x) { + var original = exports[x]; + if (typeof original == "function") { + ret[x] = function() { + Asyncify.exportCallStack.push(x); + try { + return original.apply(null, arguments); + } finally { + if (!ABORT) { + var y = Asyncify.exportCallStack.pop(); + assert(y === x); + Asyncify.maybeStopUnwind(); + } + } + }; + } else { + ret[x] = original; + } + })(x); + } + return ret; + }, + State: { + Normal: 0, + Unwinding: 1, + Rewinding: 2, + Disabled: 3 + }, + state: 0, + StackSize: 8192, + currData: null, + handleSleepReturnValue: 0, + exportCallStack: [], + callStackNameToId: {}, + callStackIdToName: {}, + callStackId: 0, + asyncPromiseHandlers: null, + sleepCallbacks: [], + getCallStackId: function(funcName) { + var id = Asyncify.callStackNameToId[funcName]; + if (id === undefined) { + id = Asyncify.callStackId++; + Asyncify.callStackNameToId[funcName] = id; + Asyncify.callStackIdToName[id] = funcName; + } + return id; + }, + maybeStopUnwind: function() { + if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) { + Asyncify.state = Asyncify.State.Normal; + runtimeKeepalivePush(); + runAndAbortIfError(_asyncify_stop_unwind); + if (typeof Fibers != "undefined") { + Fibers.trampoline(); + } + } + }, + whenDone: function() { + return new Promise((resolve, reject) => { + Asyncify.asyncPromiseHandlers = { + resolve: resolve, + reject: reject + }; + }); + }, + allocateData: function() { + var ptr = _malloc(12 + Asyncify.StackSize); + Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize); + Asyncify.setDataRewindFunc(ptr); + return ptr; + }, + setDataHeader: function(ptr, stack, stackSize) { + HEAP32[ptr >> 2] = stack; + HEAP32[ptr + 4 >> 2] = stack + stackSize; + }, + setDataRewindFunc: function(ptr) { + var bottomOfCallStack = Asyncify.exportCallStack[0]; + var rewindId = Asyncify.getCallStackId(bottomOfCallStack); + HEAP32[ptr + 8 >> 2] = rewindId; + }, + getDataRewindFunc: function(ptr) { + var id = HEAP32[ptr + 8 >> 2]; + var name = Asyncify.callStackIdToName[id]; + var func = Module["asm"][name]; + return func; + }, + doRewind: function(ptr) { + var start = Asyncify.getDataRewindFunc(ptr); + runtimeKeepalivePop(); + return start(); + }, + handleSleep: function(startAsync) { + if (ABORT) return; + if (Asyncify.state === Asyncify.State.Normal) { + var reachedCallback = false; + var reachedAfterCallback = false; + startAsync((handleSleepReturnValue = 0) => { + if (ABORT) return; + Asyncify.handleSleepReturnValue = handleSleepReturnValue; + reachedCallback = true; + if (!reachedAfterCallback) { + return; + } + Asyncify.state = Asyncify.State.Rewinding; + runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData)); + if (typeof Browser != "undefined" && Browser.mainLoop.func) { + Browser.mainLoop.resume(); + } + var asyncWasmReturnValue, isError = false; + try { + asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData); + } catch (err) { + asyncWasmReturnValue = err; + isError = true; + } + var handled = false; + if (!Asyncify.currData) { + var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers; + if (asyncPromiseHandlers) { + Asyncify.asyncPromiseHandlers = null; + (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue); + handled = true; + } + } + if (isError && !handled) { + throw asyncWasmReturnValue; + } + }); + reachedAfterCallback = true; + if (!reachedCallback) { + Asyncify.state = Asyncify.State.Unwinding; + Asyncify.currData = Asyncify.allocateData(); + if (typeof Browser != "undefined" && Browser.mainLoop.func) { + Browser.mainLoop.pause(); + } + runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData)); + } + } else if (Asyncify.state === Asyncify.State.Rewinding) { + Asyncify.state = Asyncify.State.Normal; + runAndAbortIfError(_asyncify_stop_rewind); + _free(Asyncify.currData); + Asyncify.currData = null; + Asyncify.sleepCallbacks.forEach(func => callUserCallback(func)); + } else { + abort("invalid state: " + Asyncify.state); + } + return Asyncify.handleSleepReturnValue; + }, + handleAsync: function(startAsync) { + return Asyncify.handleSleep(wakeUp => { + startAsync().then(wakeUp); + }); + } +}; + +function AsciiToString(ptr) { + var str = ""; + while (1) { + var ch = HEAPU8[ptr++ >> 0]; + if (!ch) return str; + str += String.fromCharCode(ch); + } +} + +var FSNode = function(parent, name, mode, rdev) { + if (!parent) { + parent = this; + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; +}; + +var readMode = 292 | 73; + +var writeMode = 146; + +Object.defineProperties(FSNode.prototype, { + read: { + get: function() { + return (this.mode & readMode) === readMode; + }, + set: function(val) { + val ? this.mode |= readMode : this.mode &= ~readMode; + } + }, + write: { + get: function() { + return (this.mode & writeMode) === writeMode; + }, + set: function(val) { + val ? this.mode |= writeMode : this.mode &= ~writeMode; + } + }, + isFolder: { + get: function() { + return FS.isDir(this.mode); + } + }, + isDevice: { + get: function() { + return FS.isChrdev(this.mode); + } + } +}); + +FS.FSNode = FSNode; + +FS.staticInit(); + +var wasmImports = { + "o": __asyncjs__emglken_fill_stdin_buffer, + "A": ___syscall_faccessat, + "k": ___syscall_fcntl64, + "z": ___syscall_getcwd, + "y": ___syscall_ioctl, + "j": ___syscall_openat, + "x": ___syscall_stat64, + "w": ___syscall_unlinkat, + "u": __emscripten_get_now_is_monotonic, + "t": __gmtime_js, + "s": __localtime_js, + "r": __mktime_js, + "q": __timegm_js, + "p": __tzset_js, + "h": _emscripten_date_now, + "n": _emscripten_memcpy_big, + "m": _emscripten_resize_heap, + "a": _exit, + "b": _fd_close, + "v": _fd_read, + "l": _fd_seek, + "i": _fd_write, + "g": glk_buffer_canon_decompose_uni, + "f": glk_buffer_canon_normalize_uni, + "e": glk_buffer_to_lower_case_uni, + "d": glk_buffer_to_title_case_uni, + "c": glk_buffer_to_upper_case_uni +}; + +var asm = createWasm(); + +var ___wasm_call_ctors = function() { + return (___wasm_call_ctors = Module["asm"]["C"]).apply(null, arguments); +}; + +var _malloc = function() { + return (_malloc = Module["asm"]["D"]).apply(null, arguments); +}; + +var _free = function() { + return (_free = Module["asm"]["E"]).apply(null, arguments); +}; + +var _main = Module["_main"] = function() { + return (_main = Module["_main"] = Module["asm"]["F"]).apply(null, arguments); +}; + +var _gidispatch_get_game_id = Module["_gidispatch_get_game_id"] = function() { + return (_gidispatch_get_game_id = Module["_gidispatch_get_game_id"] = Module["asm"]["G"]).apply(null, arguments); +}; + +var _fflush = Module["_fflush"] = function() { + return (_fflush = Module["_fflush"] = Module["asm"]["H"]).apply(null, arguments); +}; + +var ___errno_location = function() { + return (___errno_location = Module["asm"]["I"]).apply(null, arguments); +}; + +var ___funcs_on_exit = function() { + return (___funcs_on_exit = Module["asm"]["J"]).apply(null, arguments); +}; + +var _emscripten_stack_set_limits = function() { + return (_emscripten_stack_set_limits = Module["asm"]["emscripten_stack_set_limits"]).apply(null, arguments); +}; + +var _emscripten_stack_get_base = function() { + return (_emscripten_stack_get_base = Module["asm"]["emscripten_stack_get_base"]).apply(null, arguments); +}; + +var _emscripten_stack_get_end = function() { + return (_emscripten_stack_get_end = Module["asm"]["emscripten_stack_get_end"]).apply(null, arguments); +}; + +var stackAlloc = function() { + return (stackAlloc = Module["asm"]["L"]).apply(null, arguments); +}; + +var _asyncify_start_unwind = function() { + return (_asyncify_start_unwind = Module["asm"]["M"]).apply(null, arguments); +}; + +var _asyncify_stop_unwind = function() { + return (_asyncify_stop_unwind = Module["asm"]["N"]).apply(null, arguments); +}; + +var _asyncify_start_rewind = function() { + return (_asyncify_start_rewind = Module["asm"]["O"]).apply(null, arguments); +}; + +var _asyncify_stop_rewind = function() { + return (_asyncify_stop_rewind = Module["asm"]["P"]).apply(null, arguments); +}; + +var ___start_em_js = Module["___start_em_js"] = 39312; + +var ___stop_em_js = Module["___stop_em_js"] = 41997; + +Module["AsciiToString"] = AsciiToString; + +Module["FS"] = FS; + +var calledRun; + +dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; +}; + +function callMain(args = []) { + var entryFunction = _main; + args.unshift(thisProgram); + var argc = args.length; + var argv = stackAlloc((argc + 1) * 4); + var argv_ptr = argv >> 2; + args.forEach(arg => { + HEAP32[argv_ptr++] = allocateUTF8OnStack(arg); + }); + HEAP32[argv_ptr] = 0; + try { + var ret = entryFunction(argc, argv); + exitJS(ret, true); + return ret; + } catch (e) { + return handleException(e); + } +} + +function run(args = arguments_) { + if (runDependencies > 0) { + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + preMain(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + if (shouldRunNow) callMain(args); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } +} + +if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } +} + +var shouldRunNow = true; + +if (Module["noInitialRun"]) shouldRunNow = false; + +run(); + + + return Module.ready +} + +); +})(); +export default Module; \ No newline at end of file diff --git a/docs/emglken/glulxe-core.wasm b/docs/emglken/glulxe-core.wasm new file mode 100755 index 0000000..1f5d07a Binary files /dev/null and b/docs/emglken/glulxe-core.wasm differ diff --git a/docs/emglken/hugo-core.js b/docs/emglken/hugo-core.js new file mode 100644 index 0000000..796e270 --- /dev/null +++ b/docs/emglken/hugo-core.js @@ -0,0 +1,3860 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +function(Module = {}) { + +var Module = typeof Module != "undefined" ? Module : {}; + +var readyPromiseResolve, readyPromiseReject; + +Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; +}); + +var moduleOverrides = Object.assign({}, Module); + +var arguments_ = []; + +var thisProgram = "./this.program"; + +var quit_ = (status, toThrow) => { + throw toThrow; +}; + +var ENVIRONMENT_IS_WEB = true; + +var ENVIRONMENT_IS_WORKER = false; + +var scriptDirectory = ""; + +function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; +} + +var read_, readAsync, readBinary, setWindowTitle; + +if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (typeof document != "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (_scriptDir) { + scriptDirectory = _scriptDir; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + { + read_ = url => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = url => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + readAsync = (url, onload, onerror) => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = () => { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + } + setWindowTitle = title => document.title = title; +} else {} + +var out = Module["print"] || console.log.bind(console); + +var err = Module["printErr"] || console.warn.bind(console); + +Object.assign(Module, moduleOverrides); + +moduleOverrides = null; + +if (Module["arguments"]) arguments_ = Module["arguments"]; + +if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; + +if (Module["quit"]) quit_ = Module["quit"]; + +var wasmBinary; + +if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + +var noExitRuntime = Module["noExitRuntime"] || false; + +if (typeof WebAssembly != "object") { + abort("no native wasm support detected"); +} + +var wasmMemory; + +var ABORT = false; + +var EXITSTATUS; + +function assert(condition, text) { + if (!condition) { + abort(text); + } +} + +var UTF8Decoder = new TextDecoder("utf8"); + +function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; + return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr))); +} + +function UTF8ToString(ptr, maxBytesToRead) { + if (!ptr) return ""; + var maxPtr = ptr + maxBytesToRead; + for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end; + return UTF8Decoder.decode(HEAPU8.subarray(ptr, end)); +} + +function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; +} + +function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); +} + +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i); + if (c <= 127) { + len++; + } else if (c <= 2047) { + len += 2; + } else if (c >= 55296 && c <= 57343) { + len += 4; + ++i; + } else { + len += 3; + } + } + return len; +} + +var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + +function updateMemoryViews() { + var b = wasmMemory.buffer; + Module["HEAP8"] = HEAP8 = new Int8Array(b); + Module["HEAP16"] = HEAP16 = new Int16Array(b); + Module["HEAP32"] = HEAP32 = new Int32Array(b); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); + Module["HEAPF32"] = HEAPF32 = new Float32Array(b); + Module["HEAPF64"] = HEAPF64 = new Float64Array(b); +} + +var wasmTable; + +var __ATPRERUN__ = []; + +var __ATINIT__ = []; + +var __ATMAIN__ = []; + +var __ATEXIT__ = []; + +var __ATPOSTRUN__ = []; + +var runtimeInitialized = false; + +var runtimeExited = false; + +var runtimeKeepaliveCounter = 0; + +function keepRuntimeAlive() { + return noExitRuntime || runtimeKeepaliveCounter > 0; +} + +function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); +} + +function initRuntime() { + runtimeInitialized = true; + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); + FS.ignorePermissions = false; + TTY.init(); + callRuntimeCallbacks(__ATINIT__); +} + +function preMain() { + callRuntimeCallbacks(__ATMAIN__); +} + +function exitRuntime() { + ___funcs_on_exit(); + callRuntimeCallbacks(__ATEXIT__); + FS.quit(); + TTY.shutdown(); + runtimeExited = true; +} + +function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); +} + +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} + +var runDependencies = 0; + +var runDependencyWatcher = null; + +var dependenciesFulfilled = null; + +function getUniqueRunDependency(id) { + return id; +} + +function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } +} + +function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } +} + +function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what = "Aborted(" + what + ")"; + err(what); + ABORT = true; + EXITSTATUS = 1; + what += ". Build with -sASSERTIONS for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; +} + +var dataURIPrefix = "data:application/octet-stream;base64,"; + +function isDataURI(filename) { + return filename.startsWith(dataURIPrefix); +} + +var wasmBinaryFile; + +if (Module["locateFile"]) { + wasmBinaryFile = "hugo-core.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } +} else { + wasmBinaryFile = new URL("hugo-core.wasm", import.meta.url).href; +} + +function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } + throw "both async and sync fetching of the wasm failed"; + } catch (err) { + abort(err); + } +} + +function getBinaryPromise(binaryFile) { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function(response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + binaryFile + "'"; + } + return response["arrayBuffer"](); + }).catch(function() { + return getBinary(binaryFile); + }); + } + } + return Promise.resolve().then(function() { + return getBinary(binaryFile); + }); +} + +function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile).then(function(binary) { + return WebAssembly.instantiate(binary, imports); + }).then(function(instance) { + return instance; + }).then(receiver, function(reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason); + }); +} + +function instantiateAsync(binary, binaryFile, imports, callback) { + if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function(response) { + var result = WebAssembly.instantiateStreaming(response, imports); + return result.then(callback, function(reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(binaryFile, imports, callback); + }); + }); + } else { + return instantiateArrayBuffer(binaryFile, imports, callback); + } +} + +function createWasm() { + var info = { + "a": wasmImports + }; + function receiveInstance(instance, module) { + var exports = instance.exports; + exports = Asyncify.instrumentWasmExports(exports); + Module["asm"] = exports; + wasmMemory = Module["asm"]["t"]; + updateMemoryViews(); + wasmTable = Module["asm"]["C"]; + addOnInit(Module["asm"]["u"]); + removeRunDependency("wasm-instantiate"); + return exports; + } + addRunDependency("wasm-instantiate"); + function receiveInstantiationResult(result) { + receiveInstance(result["instance"]); + } + if (Module["instantiateWasm"]) { + try { + return Module["instantiateWasm"](info, receiveInstance); + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + readyPromiseReject(e); + } + } + instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject); + return {}; +} + +var tempDouble; + +var tempI64; + +function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) { + return Asyncify.handleAsync(async () => { + if (!Module.emglken_stdin_buffers.length) { + await new Promise(resolve => { + Module.emglken_stdin_ready = resolve; + }); + } + const input = Module.emglken_stdin_buffers.shift(); + const len = Math.min(input.length, maxlen); + if (len == input.length) { + HEAPU8.set(input, buffer); + } else { + HEAPU8.set(input.subarray(0, len), buffer); + Module.emglken_stdin_buffers.unshift(input.subarray(len)); + } + return len; + }); +} + +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +} + +function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + callbacks.shift()(Module); + } +} + +var PATH = { + isAbs: path => path.charAt(0) === "/", + splitPath: filename => { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + }, + normalizeArray: (parts, allowAboveRoot) => { + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === ".") { + parts.splice(i, 1); + } else if (last === "..") { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + if (allowAboveRoot) { + for (;up; up--) { + parts.unshift(".."); + } + } + return parts; + }, + normalize: path => { + var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === "/"; + path = PATH.normalizeArray(path.split("/").filter(p => !!p), !isAbsolute).join("/"); + if (!path && !isAbsolute) { + path = "."; + } + if (path && trailingSlash) { + path += "/"; + } + return (isAbsolute ? "/" : "") + path; + }, + dirname: path => { + var result = PATH.splitPath(path), root = result[0], dir = result[1]; + if (!root && !dir) { + return "."; + } + if (dir) { + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + }, + basename: path => { + if (path === "/") return "/"; + path = PATH.normalize(path); + path = path.replace(/\/$/, ""); + var lastSlash = path.lastIndexOf("/"); + if (lastSlash === -1) return path; + return path.substr(lastSlash + 1); + }, + join: function() { + var paths = Array.prototype.slice.call(arguments); + return PATH.normalize(paths.join("/")); + }, + join2: (l, r) => { + return PATH.normalize(l + "/" + r); + } +}; + +function getRandomDevice() { + if (typeof crypto == "object" && typeof crypto["getRandomValues"] == "function") { + var randomBuffer = new Uint8Array(1); + return () => { + crypto.getRandomValues(randomBuffer); + return randomBuffer[0]; + }; + } else return () => abort("randomDevice"); +} + +var PATH_FS = { + resolve: function() { + var resolvedPath = "", resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = i >= 0 ? arguments[i] : FS.cwd(); + if (typeof path != "string") { + throw new TypeError("Arguments to path.resolve must be strings"); + } else if (!path) { + return ""; + } + resolvedPath = path + "/" + resolvedPath; + resolvedAbsolute = PATH.isAbs(path); + } + resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter(p => !!p), !resolvedAbsolute).join("/"); + return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; + }, + relative: (from, to) => { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (;start < arr.length; start++) { + if (arr[start] !== "") break; + } + var end = arr.length - 1; + for (;end >= 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 < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push(".."); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join("/"); + } +}; + +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} + +var TTY = { + ttys: [], + init: function() {}, + shutdown: function() {}, + register: function(dev, ops) { + TTY.ttys[dev] = { + input: [], + output: [], + ops: ops + }; + FS.registerDevice(dev, TTY.stream_ops); + }, + stream_ops: { + open: function(stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43); + } + stream.tty = tty; + stream.seekable = false; + }, + close: function(stream) { + stream.tty.ops.fsync(stream.tty); + }, + fsync: function(stream) { + stream.tty.ops.fsync(stream.tty); + }, + read: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60); + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset + i]); + } + } catch (e) { + throw new FS.ErrnoError(29); + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }, + default_tty_ops: { + get_char: function(tty) { + if (!tty.input.length) { + var result = null; + if (typeof window != "undefined" && typeof window.prompt == "function") { + result = window.prompt("Input: "); + if (result !== null) { + result += "\n"; + } + } else if (typeof readline == "function") { + result = readline(); + if (result !== null) { + result += "\n"; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + }, + put_char: function(tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function(tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + }, + default_tty1_ops: { + put_char: function(tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function(tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + } +}; + +function mmapAlloc(size) { + abort(); +} + +var MEMFS = { + ops_table: null, + mount: function(mount) { + return MEMFS.createNode(null, "/", 16384 | 511, 0); + }, + createNode: function(parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + throw new FS.ErrnoError(63); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, + stream: { + llseek: MEMFS.stream_ops.llseek + } + }, + file: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: FS.chrdev_stream_ops + } + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + if (parent) { + parent.contents[name] = node; + parent.timestamp = node.timestamp; + } + return node; + }, + getFileDataAsTypedArray: function(node) { + if (!node.contents) return new Uint8Array(0); + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); + return new Uint8Array(node.contents); + }, + expandFileStorage: function(node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); + }, + resizeFileStorage: function(node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; + node.usedBytes = 0; + } else { + var oldContents = node.contents; + node.contents = new Uint8Array(newSize); + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); + } + node.usedBytes = newSize; + } + }, + node_ops: { + getattr: function(node) { + var attr = {}; + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + }, + setattr: function(node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + }, + lookup: function(parent, name) { + throw FS.genericErrors[44]; + }, + mknod: function(parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + }, + rename: function(old_node, new_dir, new_name) { + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) {} + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(55); + } + } + } + delete old_node.parent.contents[old_node.name]; + old_node.parent.timestamp = Date.now(); + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + new_dir.timestamp = old_node.parent.timestamp; + old_node.parent = new_dir; + }, + unlink: function(parent, name) { + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + rmdir: function(parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(55); + } + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + readdir: function(node) { + var entries = [ ".", ".." ]; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + }, + symlink: function(parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); + node.link = oldpath; + return node; + }, + readlink: function(node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(28); + } + return node.link; + } + }, + stream_ops: { + read: function(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + if (size > 8 && contents.subarray) { + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; + } + return size; + }, + write: function(stream, buffer, offset, length, position, canOwn) { + if (buffer.buffer === HEAP8.buffer) { + canOwn = false; + } + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + if (buffer.subarray && (!node.contents || node.contents.subarray)) { + if (canOwn) { + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { + node.contents = buffer.slice(offset, offset + length); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + MEMFS.expandFileStorage(node, position + length); + if (node.contents.subarray && buffer.subarray) { + node.contents.set(buffer.subarray(offset, offset + length), position); + } else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; + } + } + node.usedBytes = Math.max(node.usedBytes, position + length); + return length; + }, + llseek: function(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + }, + allocate: function(stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + }, + mmap: function(stream, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + var ptr; + var allocated; + var contents = stream.node.contents; + if (!(flags & 2) && contents.buffer === HEAP8.buffer) { + allocated = false; + ptr = contents.byteOffset; + } else { + if (position > 0 || position + length < contents.length) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + HEAP8.set(contents, ptr); + } + return { + ptr: ptr, + allocated: allocated + }; + }, + msync: function(stream, buffer, offset, length, mmapFlags) { + MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + return 0; + } + } +}; + +function asyncLoad(url, onload, onerror, noRunDep) { + var dep = !noRunDep ? getUniqueRunDependency("al " + url) : ""; + readAsync(url, arrayBuffer => { + assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); + onload(new Uint8Array(arrayBuffer)); + if (dep) removeRunDependency(dep); + }, event => { + if (onerror) { + onerror(); + } else { + throw 'Loading data file "' + url + '" failed.'; + } + }); + if (dep) addRunDependency(dep); +} + +var FS = { + root: null, + mounts: [], + devices: {}, + streams: [], + nextInode: 1, + nameTable: null, + currentPath: "/", + initialized: false, + ignorePermissions: true, + ErrnoError: null, + genericErrors: {}, + filesystems: null, + syncFSRequests: 0, + lookupPath: (path, opts = {}) => { + path = PATH_FS.resolve(path); + if (!path) return { + path: "", + node: null + }; + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + opts = Object.assign(defaults, opts); + if (opts.recurse_count > 8) { + throw new FS.ErrnoError(32); + } + var parts = path.split("/").filter(p => !!p); + var current = FS.root; + var current_path = "/"; + for (var i = 0; i < parts.length; i++) { + var islast = i === parts.length - 1; + if (islast && opts.parent) { + break; + } + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + if (FS.isMountpoint(current)) { + if (!islast || islast && opts.follow_mount) { + current = current.mounted.root; + } + } + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + var lookup = FS.lookupPath(current_path, { + recurse_count: opts.recurse_count + 1 + }); + current = lookup.node; + if (count++ > 40) { + throw new FS.ErrnoError(32); + } + } + } + } + return { + path: current_path, + node: current + }; + }, + getPath: node => { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path; + } + path = path ? node.name + "/" + path : node.name; + node = node.parent; + } + }, + hashName: (parentid, name) => { + var hash = 0; + for (var i = 0; i < name.length; i++) { + hash = (hash << 5) - hash + name.charCodeAt(i) | 0; + } + return (parentid + hash >>> 0) % FS.nameTable.length; + }, + hashAddNode: node => { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + }, + hashRemoveNode: node => { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + }, + lookupNode: (parent, name) => { + var errCode = FS.mayLookup(parent); + if (errCode) { + throw new FS.ErrnoError(errCode, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + return FS.lookup(parent, name); + }, + createNode: (parent, name, mode, rdev) => { + var node = new FS.FSNode(parent, name, mode, rdev); + FS.hashAddNode(node); + return node; + }, + destroyNode: node => { + FS.hashRemoveNode(node); + }, + isRoot: node => { + return node === node.parent; + }, + isMountpoint: node => { + return !!node.mounted; + }, + isFile: mode => { + return (mode & 61440) === 32768; + }, + isDir: mode => { + return (mode & 61440) === 16384; + }, + isLink: mode => { + return (mode & 61440) === 40960; + }, + isChrdev: mode => { + return (mode & 61440) === 8192; + }, + isBlkdev: mode => { + return (mode & 61440) === 24576; + }, + isFIFO: mode => { + return (mode & 61440) === 4096; + }, + isSocket: mode => { + return (mode & 49152) === 49152; + }, + flagModes: { + "r": 0, + "r+": 2, + "w": 577, + "w+": 578, + "a": 1089, + "a+": 1090 + }, + modeStringToFlags: str => { + var flags = FS.flagModes[str]; + if (typeof flags == "undefined") { + throw new Error("Unknown file open mode: " + str); + } + return flags; + }, + flagsToPermissionString: flag => { + var perms = [ "r", "w", "rw" ][flag & 3]; + if (flag & 512) { + perms += "w"; + } + return perms; + }, + nodePermissions: (node, perms) => { + if (FS.ignorePermissions) { + return 0; + } + if (perms.includes("r") && !(node.mode & 292)) { + return 2; + } else if (perms.includes("w") && !(node.mode & 146)) { + return 2; + } else if (perms.includes("x") && !(node.mode & 73)) { + return 2; + } + return 0; + }, + mayLookup: dir => { + var errCode = FS.nodePermissions(dir, "x"); + if (errCode) return errCode; + if (!dir.node_ops.lookup) return 2; + return 0; + }, + mayCreate: (dir, name) => { + try { + var node = FS.lookupNode(dir, name); + return 20; + } catch (e) {} + return FS.nodePermissions(dir, "wx"); + }, + mayDelete: (dir, name, isdir) => { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var errCode = FS.nodePermissions(dir, "wx"); + if (errCode) { + return errCode; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 54; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 10; + } + } else { + if (FS.isDir(node.mode)) { + return 31; + } + } + return 0; + }, + mayOpen: (node, flags) => { + if (!node) { + return 44; + } + if (FS.isLink(node.mode)) { + return 32; + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { + return 31; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + }, + MAX_OPEN_FDS: 4096, + nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => { + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(33); + }, + getStream: fd => FS.streams[fd], + createStream: (stream, fd_start, fd_end) => { + if (!FS.FSStream) { + FS.FSStream = function() { + this.shared = {}; + }; + FS.FSStream.prototype = {}; + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: function() { + return this.node; + }, + set: function(val) { + this.node = val; + } + }, + isRead: { + get: function() { + return (this.flags & 2097155) !== 1; + } + }, + isWrite: { + get: function() { + return (this.flags & 2097155) !== 0; + } + }, + isAppend: { + get: function() { + return this.flags & 1024; + } + }, + flags: { + get: function() { + return this.shared.flags; + }, + set: function(val) { + this.shared.flags = val; + } + }, + position: { + get: function() { + return this.shared.position; + }, + set: function(val) { + this.shared.position = val; + } + } + }); + } + stream = Object.assign(new FS.FSStream(), stream); + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + }, + closeStream: fd => { + FS.streams[fd] = null; + }, + chrdev_stream_ops: { + open: stream => { + var device = FS.getDevice(stream.node.rdev); + stream.stream_ops = device.stream_ops; + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + }, + llseek: () => { + throw new FS.ErrnoError(70); + } + }, + major: dev => dev >> 8, + minor: dev => dev & 255, + makedev: (ma, mi) => ma << 8 | mi, + registerDevice: (dev, ops) => { + FS.devices[dev] = { + stream_ops: ops + }; + }, + getDevice: dev => FS.devices[dev], + getMounts: mount => { + var mounts = []; + var check = [ mount ]; + while (check.length) { + var m = check.pop(); + mounts.push(m); + check.push.apply(check, m.mounts); + } + return mounts; + }, + syncfs: (populate, callback) => { + if (typeof populate == "function") { + callback = populate; + populate = false; + } + FS.syncFSRequests++; + if (FS.syncFSRequests > 1) { + err("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"); + } + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + function doCallback(errCode) { + FS.syncFSRequests--; + return callback(errCode); + } + function done(errCode) { + if (errCode) { + if (!done.errored) { + done.errored = true; + return doCallback(errCode); + } + return; + } + if (++completed >= mounts.length) { + doCallback(null); + } + } + mounts.forEach(mount => { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + }, + mount: (type, opts, mountpoint) => { + var root = mountpoint === "/"; + var pseudo = !mountpoint; + var node; + if (root && FS.root) { + throw new FS.ErrnoError(10); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + mountpoint = lookup.path; + node = lookup.node; + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + } + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + if (root) { + FS.root = mountRoot; + } else if (node) { + node.mounted = mount; + if (node.mount) { + node.mount.mounts.push(mount); + } + } + return mountRoot; + }, + unmount: mountpoint => { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(28); + } + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + Object.keys(FS.nameTable).forEach(hash => { + var current = FS.nameTable[hash]; + while (current) { + var next = current.name_next; + if (mounts.includes(current.mount)) { + FS.destroyNode(current); + } + current = next; + } + }); + node.mounted = null; + var idx = node.mount.mounts.indexOf(mount); + node.mount.mounts.splice(idx, 1); + }, + lookup: (parent, name) => { + return parent.node_ops.lookup(parent, name); + }, + mknod: (path, mode, dev) => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === "." || name === "..") { + throw new FS.ErrnoError(28); + } + var errCode = FS.mayCreate(parent, name); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.mknod(parent, name, mode, dev); + }, + create: (path, mode) => { + mode = mode !== undefined ? mode : 438; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + }, + mkdir: (path, mode) => { + mode = mode !== undefined ? mode : 511; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + }, + mkdirTree: (path, mode) => { + var dirs = path.split("/"); + var d = ""; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += "/" + dirs[i]; + 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); + } catch (e) { + throw e; + } finally { + FS.hashAddNode(old_node); + } + }, + rmdir: path => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, true); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + }, + readdir: path => { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(54); + } + return node.node_ops.readdir(node); + }, + unlink: path => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, false); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + }, + readlink: path => { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(44); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(28); + } + return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + }, + stat: (path, dontFollow) => { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(44); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(63); + } + return node.node_ops.getattr(node); + }, + lstat: path => { + return FS.stat(path, true); + }, + chmod: (path, mode, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + mode: mode & 4095 | node.mode & ~4095, + timestamp: Date.now() + }); + }, + lchmod: (path, mode) => { + FS.chmod(path, mode, true); + }, + fchmod: (fd, mode) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chmod(stream.node, mode); + }, + chown: (path, uid, gid, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + }); + }, + lchown: (path, uid, gid) => { + FS.chown(path, uid, gid, true); + }, + fchown: (fd, uid, gid) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chown(stream.node, uid, gid); + }, + truncate: (path, len) => { + if (len < 0) { + throw new FS.ErrnoError(28); + } + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: true + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(31); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(28); + } + var errCode = FS.nodePermissions(node, "w"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + }, + ftruncate: (fd, len) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(28); + } + FS.truncate(stream.node, len); + }, + utime: (path, atime, mtime) => { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + }, + open: (path, flags, mode) => { + if (path === "") { + throw new FS.ErrnoError(44); + } + flags = typeof flags == "string" ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode == "undefined" ? 438 : mode; + if (flags & 64) { + mode = mode & 4095 | 32768; + } else { + mode = 0; + } + var node; + if (typeof path == "object") { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 131072) + }); + node = lookup.node; + } catch (e) {} + } + var created = false; + if (flags & 64) { + if (node) { + if (flags & 128) { + throw new FS.ErrnoError(20); + } + } else { + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(44); + } + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + if (flags & 65536 && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + if (!created) { + var errCode = FS.mayOpen(node, flags); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + } + if (flags & 512 && !created) { + FS.truncate(node, 0); + } + flags &= ~(128 | 512 | 131072); + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + ungotten: [], + error: false + }); + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module["logReadFiles"] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + } + } + return stream; + }, + close: stream => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (stream.getdents) stream.getdents = null; + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + stream.fd = null; + }, + isClosed: stream => { + return stream.fd === null; + }, + llseek: (stream, offset, whence) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(70); + } + if (whence != 0 && whence != 1 && whence != 2) { + throw new FS.ErrnoError(28); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + }, + read: (stream, buffer, offset, length, position) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(28); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + }, + write: (stream, buffer, offset, length, position, canOwn) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(28); + } + if (stream.seekable && stream.flags & 1024) { + FS.llseek(stream, 0, 2); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + return bytesWritten; + }, + allocate: (stream, offset, length) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(28); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(138); + } + stream.stream_ops.allocate(stream, offset, length); + }, + mmap: (stream, length, position, prot, flags) => { + if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) { + throw new FS.ErrnoError(2); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(2); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(43); + } + return stream.stream_ops.mmap(stream, length, position, prot, flags); + }, + msync: (stream, buffer, offset, length, mmapFlags) => { + if (!stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + }, + munmap: stream => 0, + ioctl: (stream, cmd, arg) => { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + }, + readFile: (path, opts = {}) => { + opts.flags = opts.flags || 0; + opts.encoding = opts.encoding || "binary"; + if (opts.encoding !== "utf8" && opts.encoding !== "binary") { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === "utf8") { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === "binary") { + ret = buf; + } + FS.close(stream); + return ret; + }, + writeFile: (path, data, opts = {}) => { + opts.flags = opts.flags || 577; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data == "string") { + var buf = new Uint8Array(lengthBytesUTF8(data) + 1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); + } else { + throw new Error("Unsupported data type"); + } + FS.close(stream); + }, + cwd: () => FS.currentPath, + chdir: path => { + var lookup = FS.lookupPath(path, { + follow: true + }); + if (lookup.node === null) { + throw new FS.ErrnoError(44); + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(54); + } + var errCode = FS.nodePermissions(lookup.node, "x"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + FS.currentPath = lookup.path; + }, + createDefaultDirectories: () => { + FS.mkdir("/tmp"); + FS.mkdir("/home"); + FS.mkdir("/home/web_user"); + }, + createDefaultDevices: () => { + FS.mkdir("/dev"); + FS.registerDevice(FS.makedev(1, 3), { + read: () => 0, + write: (stream, buffer, offset, length, pos) => length + }); + FS.mkdev("/dev/null", FS.makedev(1, 3)); + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev("/dev/tty", FS.makedev(5, 0)); + FS.mkdev("/dev/tty1", FS.makedev(6, 0)); + var random_device = getRandomDevice(); + FS.createDevice("/dev", "random", random_device); + FS.createDevice("/dev", "urandom", random_device); + FS.mkdir("/dev/shm"); + FS.mkdir("/dev/shm/tmp"); + }, + createSpecialDirectories: () => { + FS.mkdir("/proc"); + var proc_self = FS.mkdir("/proc/self"); + FS.mkdir("/proc/self/fd"); + FS.mount({ + mount: () => { + var node = FS.createNode(proc_self, "fd", 16384 | 511, 73); + node.node_ops = { + lookup: (parent, name) => { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + var ret = { + parent: null, + mount: { + mountpoint: "fake" + }, + node_ops: { + readlink: () => stream.path + } + }; + ret.parent = ret; + return ret; + } + }; + return node; + } + }, {}, "/proc/self/fd"); + }, + createStandardStreams: () => { + if (Module["stdin"]) { + FS.createDevice("/dev", "stdin", Module["stdin"]); + } else { + FS.symlink("/dev/tty", "/dev/stdin"); + } + if (Module["stdout"]) { + FS.createDevice("/dev", "stdout", null, Module["stdout"]); + } else { + FS.symlink("/dev/tty", "/dev/stdout"); + } + if (Module["stderr"]) { + FS.createDevice("/dev", "stderr", null, Module["stderr"]); + } else { + FS.symlink("/dev/tty1", "/dev/stderr"); + } + var stdin = FS.open("/dev/stdin", 0); + var stdout = FS.open("/dev/stdout", 1); + var stderr = FS.open("/dev/stderr", 1); + }, + ensureErrnoError: () => { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + this.name = "ErrnoError"; + this.node = node; + this.setErrno = function(errno) { + this.errno = errno; + }; + this.setErrno(errno); + this.message = "FS error"; + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + [ 44 ].forEach(code => { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = ""; + }); + }, + staticInit: () => { + FS.ensureErrnoError(); + FS.nameTable = new Array(4096); + FS.mount(MEMFS, {}, "/"); + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + FS.filesystems = { + "MEMFS": MEMFS + }; + }, + init: (input, output, error) => { + FS.init.initialized = true; + FS.ensureErrnoError(); + Module["stdin"] = input || Module["stdin"]; + Module["stdout"] = output || Module["stdout"]; + Module["stderr"] = error || Module["stderr"]; + FS.createStandardStreams(); + }, + quit: () => { + FS.init.initialized = false; + _fflush(0); + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + }, + getMode: (canRead, canWrite) => { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + }, + 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) {} + parent = current; + } + return current; + }, + createFile: (parent, name, properties, canRead, canWrite) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + }, + createDataFile: (parent, name, data, canRead, canWrite, canOwn) => { + var path = name; + if (parent) { + parent = typeof parent == "string" ? parent : FS.getPath(parent); + path = name ? PATH.join2(parent, name) : parent; + } + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data == "string") { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + 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); + } + return node; + }, + createDevice: (parent, name, input, output) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + FS.registerDevice(dev, { + open: stream => { + stream.seekable = false; + }, + close: stream => { + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: (stream, buffer, offset, length, pos) => { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: (stream, buffer, offset, length, pos) => { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset + i]); + } catch (e) { + throw new FS.ErrnoError(29); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + }, + forceLoadFile: obj => { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + if (typeof XMLHttpRequest != "undefined") { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (read_) { + try { + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + throw new FS.ErrnoError(29); + } + } else { + throw new Error("Cannot load without read() or XMLHttpRequest."); + } + }, + createLazyFile: (parent, name, url, canRead, canWrite) => { + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; + } + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length - 1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = idx / this.chunkSize | 0; + return this.getter(chunkNum)[chunkOffset]; + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + var xhr = new XMLHttpRequest(); + xhr.open("HEAD", url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + var chunkSize = 1024 * 1024; + if (!hasByteServing) chunkSize = datalength; + var doXHR = (from, to) => { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!"); + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + xhr.responseType = "arraybuffer"; + if (xhr.overrideMimeType) { + xhr.overrideMimeType("text/plain; charset=x-user-defined"); + } + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } + return intArrayFromString(xhr.responseText || "", true); + }; + var lazyArray = this; + lazyArray.setDataGetter(chunkNum => { + var start = chunkNum * chunkSize; + var end = (chunkNum + 1) * chunkSize - 1; + end = Math.min(end, datalength - 1); + if (typeof lazyArray.chunks[chunkNum] == "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof lazyArray.chunks[chunkNum] == "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + if (usesGzip || !datalength) { + chunkSize = datalength = 1; + datalength = this.getter(0).length; + chunkSize = datalength; + out("LazyFiles on gzip forces download of the whole file when length is accessed"); + } + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + }; + if (typeof XMLHttpRequest != "undefined") { + if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; + var lazyArray = new LazyUint8Array(); + Object.defineProperties(lazyArray, { + length: { + get: function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }, + chunkSize: { + get: function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + } + }); + var properties = { + isDevice: false, + contents: lazyArray + }; + } else { + var properties = { + isDevice: false, + url: url + }; + } + var node = FS.createFile(parent, name, properties, canRead, canWrite); + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + Object.defineProperties(node, { + usedBytes: { + get: function() { + return this.contents.length; + } + } + }); + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(key => { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + FS.forceLoadFile(node); + return fn.apply(null, arguments); + }; + }); + function writeChunks(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= contents.length) return 0; + var size = Math.min(contents.length - position, length); + if (contents.slice) { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents.get(position + i); + } + } + return size; + } + stream_ops.read = (stream, buffer, offset, length, position) => { + FS.forceLoadFile(node); + return writeChunks(stream, buffer, offset, length, position); + }; + stream_ops.mmap = (stream, length, position, prot, flags) => { + FS.forceLoadFile(node); + var ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + writeChunks(stream, HEAP8, ptr, length, position); + return { + ptr: ptr, + allocated: true + }; + }; + node.stream_ops = stream_ops; + return node; + }, + createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => { + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency("cp " + fullname); + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => { + if (onerror) onerror(); + removeRunDependency(dep); + })) { + return; + } + finish(byteArray); + } + addRunDependency(dep); + if (typeof url == "string") { + asyncLoad(url, byteArray => processData(byteArray), onerror); + } else { + processData(url); + } + }, + indexedDB: () => { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + }, + DB_NAME: () => { + return "EM_FS_" + window.location.pathname; + }, + DB_VERSION: 20, + DB_STORE_NAME: "FILE_DATA", + saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => { + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = () => { + out("creating db"); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = () => { + var db = openRequest.result; + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readwrite"); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(path => { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = () => { + ok++; + if (ok + fail == total) finish(); + }; + putRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }, + loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => { + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; + openRequest.onsuccess = () => { + var db = openRequest.result; + try { + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readonly"); + } catch (e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(path => { + var getRequest = files.get(path); + getRequest.onsuccess = () => { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + } +}; + +var SYSCALLS = { + DEFAULT_POLLMASK: 5, + calculateAt: function(dirfd, path, allowEmpty) { + if (PATH.isAbs(path)) { + return path; + } + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = SYSCALLS.getStreamFromFD(dirfd); + dir = dirstream.path; + } + if (path.length == 0) { + if (!allowEmpty) { + throw new FS.ErrnoError(44); + } + return dir; + } + return PATH.join2(dir, path); + }, + doStat: function(func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + return -54; + } + throw e; + } + HEAP32[buf >> 2] = stat.dev; + HEAP32[buf + 8 >> 2] = stat.ino; + HEAP32[buf + 12 >> 2] = stat.mode; + HEAPU32[buf + 16 >> 2] = stat.nlink; + HEAP32[buf + 20 >> 2] = stat.uid; + HEAP32[buf + 24 >> 2] = stat.gid; + HEAP32[buf + 28 >> 2] = stat.rdev; + tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1]; + HEAP32[buf + 48 >> 2] = 4096; + HEAP32[buf + 52 >> 2] = stat.blocks; + var atime = stat.atime.getTime(); + var mtime = stat.mtime.getTime(); + var ctime = stat.ctime.getTime(); + tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1]; + HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3; + tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1]; + HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3; + tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1]; + HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3; + tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1]; + return 0; + }, + doMsync: function(addr, stream, len, flags, offset) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (flags & 2) { + return 0; + } + var buffer = HEAPU8.slice(addr, addr + len); + FS.msync(stream, buffer, offset, len, flags); + }, + varargs: undefined, + get: function() { + SYSCALLS.varargs += 4; + var ret = HEAP32[SYSCALLS.varargs - 4 >> 2]; + return ret; + }, + getStr: function(ptr) { + var ret = UTF8ToString(ptr); + return ret; + }, + getStreamFromFD: function(fd) { + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + return stream; + } +}; + +function ___syscall_faccessat(dirfd, path, amode, flags) { + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + if (amode & ~7) { + return -28; + } + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + if (!node) { + return -44; + } + var perms = ""; + if (amode & 4) perms += "r"; + if (amode & 2) perms += "w"; + if (amode & 1) perms += "x"; + if (perms && FS.nodePermissions(node, perms)) { + return -2; + } + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function setErrNo(value) { + HEAP32[___errno_location() >> 2] = value; + return value; +} + +function ___syscall_fcntl64(fd, cmd, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (cmd) { + case 0: + { + var arg = SYSCALLS.get(); + if (arg < 0) { + return -28; + } + var newStream; + newStream = FS.createStream(stream, arg); + return newStream.fd; + } + + case 1: + case 2: + return 0; + + case 3: + return stream.flags; + + case 4: + { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0; + } + + case 5: + { + var arg = SYSCALLS.get(); + var offset = 0; + HEAP16[arg + offset >> 1] = 2; + return 0; + } + + case 6: + case 7: + return 0; + + case 16: + case 8: + return -28; + + case 9: + setErrNo(28); + return -1; + + default: + { + return -28; + } + } + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_getcwd(buf, size) { + try { + if (size === 0) return -28; + var cwd = FS.cwd(); + var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1; + if (size < cwdLengthInBytes) return -68; + stringToUTF8(cwd, buf, size); + return cwdLengthInBytes; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_ioctl(fd, op, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (op) { + case 21509: + case 21505: + { + if (!stream.tty) return -59; + return 0; + } + + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: + { + if (!stream.tty) return -59; + return 0; + } + + case 21519: + { + if (!stream.tty) return -59; + var argp = SYSCALLS.get(); + HEAP32[argp >> 2] = 0; + return 0; + } + + case 21520: + { + if (!stream.tty) return -59; + return -28; + } + + case 21531: + { + var argp = SYSCALLS.get(); + return FS.ioctl(stream, op, argp); + } + + case 21523: + { + if (!stream.tty) return -59; + return 0; + } + + case 21524: + { + if (!stream.tty) return -59; + return 0; + } + + default: + return -28; + } + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_openat(dirfd, path, flags, varargs) { + SYSCALLS.varargs = varargs; + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + var mode = varargs ? SYSCALLS.get() : 0; + return FS.open(path, flags, mode).fd; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_stat64(path, buf) { + try { + path = SYSCALLS.getStr(path); + return SYSCALLS.doStat(FS.stat, path, buf); + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +var nowIsMonotonic = true; + +function __emscripten_get_now_is_monotonic() { + return nowIsMonotonic; +} + +function readI53FromI64(ptr) { + return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296; +} + +function __isLeapYear(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +} + +var __MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ]; + +var __MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ]; + +function __yday_from_date(date) { + var isLeapYear = __isLeapYear(date.getFullYear()); + var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE; + var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1; + return yday; +} + +function __localtime_js(time, tmPtr) { + var date = new Date(readI53FromI64(time) * 1e3); + HEAP32[tmPtr >> 2] = date.getSeconds(); + HEAP32[tmPtr + 4 >> 2] = date.getMinutes(); + HEAP32[tmPtr + 8 >> 2] = date.getHours(); + HEAP32[tmPtr + 12 >> 2] = date.getDate(); + HEAP32[tmPtr + 16 >> 2] = date.getMonth(); + HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900; + HEAP32[tmPtr + 24 >> 2] = date.getDay(); + var yday = __yday_from_date(date) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; + HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60); + var start = new Date(date.getFullYear(), 0, 1); + var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); + var winterOffset = start.getTimezoneOffset(); + var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0; + HEAP32[tmPtr + 32 >> 2] = dst; +} + +function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +function __tzset_js(timezone, daylight, tzname) { + var currentYear = new Date().getFullYear(); + var winter = new Date(currentYear, 0, 1); + var summer = new Date(currentYear, 6, 1); + var winterOffset = winter.getTimezoneOffset(); + var summerOffset = summer.getTimezoneOffset(); + var stdTimezoneOffset = Math.max(winterOffset, summerOffset); + HEAPU32[timezone >> 2] = stdTimezoneOffset * 60; + HEAP32[daylight >> 2] = Number(winterOffset != summerOffset); + function extractZone(date) { + var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); + return match ? match[1] : "GMT"; + } + var winterName = extractZone(winter); + var summerName = extractZone(summer); + var winterNamePtr = allocateUTF8(winterName); + var summerNamePtr = allocateUTF8(summerName); + if (summerOffset < winterOffset) { + HEAPU32[tzname >> 2] = winterNamePtr; + HEAPU32[tzname + 4 >> 2] = summerNamePtr; + } else { + HEAPU32[tzname >> 2] = summerNamePtr; + HEAPU32[tzname + 4 >> 2] = winterNamePtr; + } +} + +function _emscripten_date_now() { + return Date.now(); +} + +var _emscripten_get_now; + +_emscripten_get_now = () => performance.now(); + +function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); +} + +function getHeapMax() { + return 2147483648; +} + +function emscripten_realloc_buffer(size) { + var b = wasmMemory.buffer; + try { + wasmMemory.grow(size - b.byteLength + 65535 >>> 16); + updateMemoryViews(); + return 1; + } catch (e) {} +} + +function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + var maxHeapSize = getHeapMax(); + if (requestedSize > maxHeapSize) { + return false; + } + let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple; + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + .2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; +} + +function _proc_exit(code) { + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + if (Module["onExit"]) Module["onExit"](code); + ABORT = true; + } + quit_(code, new ExitStatus(code)); +} + +function exitJS(status, implicit) { + EXITSTATUS = status; + if (!keepRuntimeAlive()) { + exitRuntime(); + } + _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 doReadv(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 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 < len) break; + if (typeof offset !== "undefined") { + offset += curr; + } + } + return ret; +} + +function _fd_read(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doReadv(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function convertI32PairToI53Checked(lo, hi) { + return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN; +} + +function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + try { + var offset = convertI32PairToI53Checked(offset_low, offset_high); + if (isNaN(offset)) return 61; + var stream = SYSCALLS.getStreamFromFD(fd); + FS.llseek(stream, offset, whence); + tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1]; + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function doWritev(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[iov + 4 >> 2]; + iov += 8; + var curr = FS.write(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (typeof offset !== "undefined") { + offset += curr; + } + } + return ret; +} + +function _fd_write(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doWritev(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function __arraySum(array, index) { + var sum = 0; + for (var i = 0; i <= index; sum += array[i++]) {} + return sum; +} + +var __MONTH_DAYS_LEAP = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; + +var __MONTH_DAYS_REGULAR = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; + +function __addDays(date, days) { + var newDate = new Date(date.getTime()); + while (days > 0) { + var leap = __isLeapYear(newDate.getFullYear()); + var currentMonth = newDate.getMonth(); + var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth]; + if (days > daysInCurrentMonth - newDate.getDate()) { + days -= daysInCurrentMonth - newDate.getDate() + 1; + newDate.setDate(1); + if (currentMonth < 11) { + newDate.setMonth(currentMonth + 1); + } else { + newDate.setMonth(0); + newDate.setFullYear(newDate.getFullYear() + 1); + } + } else { + newDate.setDate(newDate.getDate() + days); + return newDate; + } + } + return newDate; +} + +function writeArrayToMemory(array, buffer) { + HEAP8.set(array, buffer); +} + +function _strftime(s, maxsize, format, tm) { + var tm_zone = HEAP32[tm + 40 >> 2]; + var date = { + tm_sec: HEAP32[tm >> 2], + tm_min: HEAP32[tm + 4 >> 2], + tm_hour: HEAP32[tm + 8 >> 2], + tm_mday: HEAP32[tm + 12 >> 2], + tm_mon: HEAP32[tm + 16 >> 2], + tm_year: HEAP32[tm + 20 >> 2], + tm_wday: HEAP32[tm + 24 >> 2], + tm_yday: HEAP32[tm + 28 >> 2], + tm_isdst: HEAP32[tm + 32 >> 2], + tm_gmtoff: HEAP32[tm + 36 >> 2], + tm_zone: tm_zone ? UTF8ToString(tm_zone) : "" + }; + var pattern = UTF8ToString(format); + var EXPANSION_RULES_1 = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var rule in EXPANSION_RULES_1) { + pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule]); + } + var WEEKDAYS = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]; + var MONTHS = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; + function leadingSomething(value, digits, character) { + var str = typeof value == "number" ? value.toString() : value || ""; + while (str.length < digits) { + str = character[0] + str; + } + return str; + } + function leadingNulls(value, digits) { + return leadingSomething(value, digits, "0"); + } + function compareByDay(date1, date2) { + function sgn(value) { + return value < 0 ? -1 : value > 0 ? 1 : 0; + } + var compare; + if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) { + if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) { + compare = sgn(date1.getDate() - date2.getDate()); + } + } + return compare; + } + function getFirstWeekStartDate(janFourth) { + switch (janFourth.getDay()) { + case 0: + return new Date(janFourth.getFullYear() - 1, 11, 29); + + case 1: + return janFourth; + + case 2: + return new Date(janFourth.getFullYear(), 0, 3); + + case 3: + return new Date(janFourth.getFullYear(), 0, 2); + + case 4: + return new Date(janFourth.getFullYear(), 0, 1); + + case 5: + return new Date(janFourth.getFullYear() - 1, 11, 31); + + case 6: + return new Date(janFourth.getFullYear() - 1, 11, 30); + } + } + function getWeekBasedYear(date) { + var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday); + var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4); + var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4); + var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); + var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); + if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) { + if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) { + return thisDate.getFullYear() + 1; + } + return thisDate.getFullYear(); + } + return thisDate.getFullYear() - 1; + } + var EXPANSION_RULES_2 = { + "%a": function(date) { + return WEEKDAYS[date.tm_wday].substring(0, 3); + }, + "%A": function(date) { + return WEEKDAYS[date.tm_wday]; + }, + "%b": function(date) { + return MONTHS[date.tm_mon].substring(0, 3); + }, + "%B": function(date) { + return MONTHS[date.tm_mon]; + }, + "%C": function(date) { + var year = date.tm_year + 1900; + return leadingNulls(year / 100 | 0, 2); + }, + "%d": function(date) { + return leadingNulls(date.tm_mday, 2); + }, + "%e": function(date) { + return leadingSomething(date.tm_mday, 2, " "); + }, + "%g": function(date) { + return getWeekBasedYear(date).toString().substring(2); + }, + "%G": function(date) { + return getWeekBasedYear(date); + }, + "%H": function(date) { + return leadingNulls(date.tm_hour, 2); + }, + "%I": function(date) { + var twelveHour = date.tm_hour; + if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12; + return leadingNulls(twelveHour, 2); + }, + "%j": function(date) { + return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3); + }, + "%m": function(date) { + return leadingNulls(date.tm_mon + 1, 2); + }, + "%M": function(date) { + return leadingNulls(date.tm_min, 2); + }, + "%n": function() { + return "\n"; + }, + "%p": function(date) { + if (date.tm_hour >= 0 && date.tm_hour < 12) { + return "AM"; + } + return "PM"; + }, + "%S": function(date) { + return leadingNulls(date.tm_sec, 2); + }, + "%t": function() { + return "\t"; + }, + "%u": function(date) { + return date.tm_wday || 7; + }, + "%U": function(date) { + var days = date.tm_yday + 7 - date.tm_wday; + return leadingNulls(Math.floor(days / 7), 2); + }, + "%V": function(date) { + var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7); + if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) { + val++; + } + if (!val) { + val = 52; + var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7; + if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) { + val++; + } + } else if (val == 53) { + var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7; + if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1; + } + return leadingNulls(val, 2); + }, + "%w": function(date) { + return date.tm_wday; + }, + "%W": function(date) { + var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7; + return leadingNulls(Math.floor(days / 7), 2); + }, + "%y": function(date) { + return (date.tm_year + 1900).toString().substring(2); + }, + "%Y": function(date) { + return date.tm_year + 1900; + }, + "%z": function(date) { + var off = date.tm_gmtoff; + var ahead = off >= 0; + off = Math.abs(off) / 60; + off = off / 60 * 100 + off % 60; + return (ahead ? "+" : "-") + String("0000" + off).slice(-4); + }, + "%Z": function(date) { + return date.tm_zone; + }, + "%%": function() { + return "%"; + } + }; + pattern = pattern.replace(/%%/g, "\0\0"); + for (var rule in EXPANSION_RULES_2) { + if (pattern.includes(rule)) { + pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date)); + } + } + pattern = pattern.replace(/\0\0/g, "%"); + var bytes = intArrayFromString(pattern, false); + if (bytes.length > maxsize) { + return 0; + } + writeArrayToMemory(bytes, s); + return bytes.length - 1; +} + +function handleException(e) { + if (e instanceof ExitStatus || e == "unwind") { + return EXITSTATUS; + } + quit_(1, e); +} + +function allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +function runAndAbortIfError(func) { + try { + return func(); + } catch (e) { + abort(e); + } +} + +function maybeExit() { + if (!keepRuntimeAlive()) { + try { + _exit(EXITSTATUS); + } catch (e) { + handleException(e); + } + } +} + +function callUserCallback(func) { + if (runtimeExited || ABORT) { + return; + } + try { + func(); + maybeExit(); + } catch (e) { + handleException(e); + } +} + +function runtimeKeepalivePush() { + runtimeKeepaliveCounter += 1; +} + +function runtimeKeepalivePop() { + runtimeKeepaliveCounter -= 1; +} + +var Asyncify = { + instrumentWasmImports: function(imports) { + var ASYNCIFY_IMPORTS = [ "emscripten_sleep", "emscripten_wget", "emscripten_wget_data", "emscripten_idb_load", "emscripten_idb_store", "emscripten_idb_delete", "emscripten_idb_exists", "emscripten_idb_load_blob", "emscripten_idb_store_blob", "SDL_Delay", "emscripten_scan_registers", "emscripten_lazy_load_code", "emscripten_fiber_swap", "__load_secondary_module", "fd_sync", "__wasi_fd_sync", "_emval_await", "_dlopen_js", "__asyncjs__*" ]; + for (var x in imports) { + (function(x) { + var original = imports[x]; + var sig = original.sig; + if (typeof original == "function") { + var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith("__asyncjs__"); + } + })(x); + } + }, + instrumentWasmExports: function(exports) { + var ret = {}; + for (var x in exports) { + (function(x) { + var original = exports[x]; + if (typeof original == "function") { + ret[x] = function() { + Asyncify.exportCallStack.push(x); + try { + return original.apply(null, arguments); + } finally { + if (!ABORT) { + var y = Asyncify.exportCallStack.pop(); + assert(y === x); + Asyncify.maybeStopUnwind(); + } + } + }; + } else { + ret[x] = original; + } + })(x); + } + return ret; + }, + State: { + Normal: 0, + Unwinding: 1, + Rewinding: 2, + Disabled: 3 + }, + state: 0, + StackSize: 8192, + currData: null, + handleSleepReturnValue: 0, + exportCallStack: [], + callStackNameToId: {}, + callStackIdToName: {}, + callStackId: 0, + asyncPromiseHandlers: null, + sleepCallbacks: [], + getCallStackId: function(funcName) { + var id = Asyncify.callStackNameToId[funcName]; + if (id === undefined) { + id = Asyncify.callStackId++; + Asyncify.callStackNameToId[funcName] = id; + Asyncify.callStackIdToName[id] = funcName; + } + return id; + }, + maybeStopUnwind: function() { + if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) { + Asyncify.state = Asyncify.State.Normal; + runtimeKeepalivePush(); + runAndAbortIfError(_asyncify_stop_unwind); + if (typeof Fibers != "undefined") { + Fibers.trampoline(); + } + } + }, + whenDone: function() { + return new Promise((resolve, reject) => { + Asyncify.asyncPromiseHandlers = { + resolve: resolve, + reject: reject + }; + }); + }, + allocateData: function() { + var ptr = _malloc(12 + Asyncify.StackSize); + Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize); + Asyncify.setDataRewindFunc(ptr); + return ptr; + }, + setDataHeader: function(ptr, stack, stackSize) { + HEAP32[ptr >> 2] = stack; + HEAP32[ptr + 4 >> 2] = stack + stackSize; + }, + setDataRewindFunc: function(ptr) { + var bottomOfCallStack = Asyncify.exportCallStack[0]; + var rewindId = Asyncify.getCallStackId(bottomOfCallStack); + HEAP32[ptr + 8 >> 2] = rewindId; + }, + getDataRewindFunc: function(ptr) { + var id = HEAP32[ptr + 8 >> 2]; + var name = Asyncify.callStackIdToName[id]; + var func = Module["asm"][name]; + return func; + }, + doRewind: function(ptr) { + var start = Asyncify.getDataRewindFunc(ptr); + runtimeKeepalivePop(); + return start(); + }, + handleSleep: function(startAsync) { + if (ABORT) return; + if (Asyncify.state === Asyncify.State.Normal) { + var reachedCallback = false; + var reachedAfterCallback = false; + startAsync((handleSleepReturnValue = 0) => { + if (ABORT) return; + Asyncify.handleSleepReturnValue = handleSleepReturnValue; + reachedCallback = true; + if (!reachedAfterCallback) { + return; + } + Asyncify.state = Asyncify.State.Rewinding; + runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData)); + if (typeof Browser != "undefined" && Browser.mainLoop.func) { + Browser.mainLoop.resume(); + } + var asyncWasmReturnValue, isError = false; + try { + asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData); + } catch (err) { + asyncWasmReturnValue = err; + isError = true; + } + var handled = false; + if (!Asyncify.currData) { + var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers; + if (asyncPromiseHandlers) { + Asyncify.asyncPromiseHandlers = null; + (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue); + handled = true; + } + } + if (isError && !handled) { + throw asyncWasmReturnValue; + } + }); + reachedAfterCallback = true; + if (!reachedCallback) { + Asyncify.state = Asyncify.State.Unwinding; + Asyncify.currData = Asyncify.allocateData(); + if (typeof Browser != "undefined" && Browser.mainLoop.func) { + Browser.mainLoop.pause(); + } + runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData)); + } + } else if (Asyncify.state === Asyncify.State.Rewinding) { + Asyncify.state = Asyncify.State.Normal; + runAndAbortIfError(_asyncify_stop_rewind); + _free(Asyncify.currData); + Asyncify.currData = null; + Asyncify.sleepCallbacks.forEach(func => callUserCallback(func)); + } else { + abort("invalid state: " + Asyncify.state); + } + return Asyncify.handleSleepReturnValue; + }, + handleAsync: function(startAsync) { + return Asyncify.handleSleep(wakeUp => { + startAsync().then(wakeUp); + }); + } +}; + +function AsciiToString(ptr) { + var str = ""; + while (1) { + var ch = HEAPU8[ptr++ >> 0]; + if (!ch) return str; + str += String.fromCharCode(ch); + } +} + +var FSNode = function(parent, name, mode, rdev) { + if (!parent) { + parent = this; + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; +}; + +var readMode = 292 | 73; + +var writeMode = 146; + +Object.defineProperties(FSNode.prototype, { + read: { + get: function() { + return (this.mode & readMode) === readMode; + }, + set: function(val) { + val ? this.mode |= readMode : this.mode &= ~readMode; + } + }, + write: { + get: function() { + return (this.mode & writeMode) === writeMode; + }, + set: function(val) { + val ? this.mode |= writeMode : this.mode &= ~writeMode; + } + }, + isFolder: { + get: function() { + return FS.isDir(this.mode); + } + }, + isDevice: { + get: function() { + return FS.isChrdev(this.mode); + } + } +}); + +FS.FSNode = FSNode; + +FS.staticInit(); + +var wasmImports = { + "j": __asyncjs__emglken_fill_stdin_buffer, + "s": ___syscall_faccessat, + "e": ___syscall_fcntl64, + "r": ___syscall_getcwd, + "q": ___syscall_ioctl, + "p": ___syscall_openat, + "o": ___syscall_stat64, + "m": __emscripten_get_now_is_monotonic, + "l": __localtime_js, + "k": __tzset_js, + "b": _emscripten_date_now, + "i": _emscripten_memcpy_big, + "h": _emscripten_resize_heap, + "a": _exit, + "d": _fd_close, + "n": _fd_read, + "g": _fd_seek, + "c": _fd_write, + "f": _strftime +}; + +var asm = createWasm(); + +var ___wasm_call_ctors = function() { + return (___wasm_call_ctors = Module["asm"]["u"]).apply(null, arguments); +}; + +var _malloc = function() { + return (_malloc = Module["asm"]["v"]).apply(null, arguments); +}; + +var _free = function() { + return (_free = Module["asm"]["w"]).apply(null, arguments); +}; + +var _main = Module["_main"] = function() { + return (_main = Module["_main"] = Module["asm"]["x"]).apply(null, arguments); +}; + +var _gidispatch_get_game_id = Module["_gidispatch_get_game_id"] = function() { + return (_gidispatch_get_game_id = Module["_gidispatch_get_game_id"] = Module["asm"]["y"]).apply(null, arguments); +}; + +var _fflush = Module["_fflush"] = function() { + return (_fflush = Module["_fflush"] = Module["asm"]["z"]).apply(null, arguments); +}; + +var ___errno_location = function() { + return (___errno_location = Module["asm"]["A"]).apply(null, arguments); +}; + +var ___funcs_on_exit = function() { + return (___funcs_on_exit = Module["asm"]["B"]).apply(null, arguments); +}; + +var _emscripten_stack_set_limits = function() { + return (_emscripten_stack_set_limits = Module["asm"]["emscripten_stack_set_limits"]).apply(null, arguments); +}; + +var _emscripten_stack_get_base = function() { + return (_emscripten_stack_get_base = Module["asm"]["emscripten_stack_get_base"]).apply(null, arguments); +}; + +var _emscripten_stack_get_end = function() { + return (_emscripten_stack_get_end = Module["asm"]["emscripten_stack_get_end"]).apply(null, arguments); +}; + +var stackAlloc = function() { + return (stackAlloc = Module["asm"]["D"]).apply(null, arguments); +}; + +var _asyncify_start_unwind = function() { + return (_asyncify_start_unwind = Module["asm"]["E"]).apply(null, arguments); +}; + +var _asyncify_stop_unwind = function() { + return (_asyncify_stop_unwind = Module["asm"]["F"]).apply(null, arguments); +}; + +var _asyncify_start_rewind = function() { + return (_asyncify_start_rewind = Module["asm"]["G"]).apply(null, arguments); +}; + +var _asyncify_stop_rewind = function() { + return (_asyncify_stop_rewind = Module["asm"]["H"]).apply(null, arguments); +}; + +var ___start_em_js = Module["___start_em_js"] = 18128; + +var ___stop_em_js = Module["___stop_em_js"] = 20813; + +Module["AsciiToString"] = AsciiToString; + +Module["FS"] = FS; + +var calledRun; + +dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; +}; + +function callMain(args = []) { + var entryFunction = _main; + args.unshift(thisProgram); + var argc = args.length; + var argv = stackAlloc((argc + 1) * 4); + var argv_ptr = argv >> 2; + args.forEach(arg => { + HEAP32[argv_ptr++] = allocateUTF8OnStack(arg); + }); + HEAP32[argv_ptr] = 0; + try { + var ret = entryFunction(argc, argv); + exitJS(ret, true); + return ret; + } catch (e) { + return handleException(e); + } +} + +function run(args = arguments_) { + if (runDependencies > 0) { + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + preMain(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + if (shouldRunNow) callMain(args); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } +} + +if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } +} + +var shouldRunNow = true; + +if (Module["noInitialRun"]) shouldRunNow = false; + +run(); + + + return Module.ready +} + +); +})(); +export default Module; \ No newline at end of file diff --git a/docs/emglken/hugo-core.wasm b/docs/emglken/hugo-core.wasm new file mode 100755 index 0000000..342e884 Binary files /dev/null and b/docs/emglken/hugo-core.wasm differ diff --git a/docs/emglken/scare-core.js b/docs/emglken/scare-core.js new file mode 100644 index 0000000..dc5cdf2 --- /dev/null +++ b/docs/emglken/scare-core.js @@ -0,0 +1,3758 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +function(Module = {}) { + +var Module = typeof Module != "undefined" ? Module : {}; + +var readyPromiseResolve, readyPromiseReject; + +Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; +}); + +var moduleOverrides = Object.assign({}, Module); + +var arguments_ = []; + +var thisProgram = "./this.program"; + +var quit_ = (status, toThrow) => { + throw toThrow; +}; + +var ENVIRONMENT_IS_WEB = true; + +var ENVIRONMENT_IS_WORKER = false; + +var scriptDirectory = ""; + +function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; +} + +var read_, readAsync, readBinary, setWindowTitle; + +if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (typeof document != "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (_scriptDir) { + scriptDirectory = _scriptDir; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + { + read_ = url => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = url => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + readAsync = (url, onload, onerror) => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = () => { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + } + setWindowTitle = title => document.title = title; +} else {} + +var out = Module["print"] || console.log.bind(console); + +var err = Module["printErr"] || console.warn.bind(console); + +Object.assign(Module, moduleOverrides); + +moduleOverrides = null; + +if (Module["arguments"]) arguments_ = Module["arguments"]; + +if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; + +if (Module["quit"]) quit_ = Module["quit"]; + +var wasmBinary; + +if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + +var noExitRuntime = Module["noExitRuntime"] || false; + +if (typeof WebAssembly != "object") { + abort("no native wasm support detected"); +} + +var wasmMemory; + +var ABORT = false; + +var EXITSTATUS; + +function assert(condition, text) { + if (!condition) { + abort(text); + } +} + +var UTF8Decoder = new TextDecoder("utf8"); + +function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; + return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr))); +} + +function UTF8ToString(ptr, maxBytesToRead) { + if (!ptr) return ""; + var maxPtr = ptr + maxBytesToRead; + for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end; + return UTF8Decoder.decode(HEAPU8.subarray(ptr, end)); +} + +function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; +} + +function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); +} + +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i); + if (c <= 127) { + len++; + } else if (c <= 2047) { + len += 2; + } else if (c >= 55296 && c <= 57343) { + len += 4; + ++i; + } else { + len += 3; + } + } + return len; +} + +var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + +function updateMemoryViews() { + var b = wasmMemory.buffer; + Module["HEAP8"] = HEAP8 = new Int8Array(b); + Module["HEAP16"] = HEAP16 = new Int16Array(b); + Module["HEAP32"] = HEAP32 = new Int32Array(b); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); + Module["HEAPF32"] = HEAPF32 = new Float32Array(b); + Module["HEAPF64"] = HEAPF64 = new Float64Array(b); +} + +var wasmTable; + +var __ATPRERUN__ = []; + +var __ATINIT__ = []; + +var __ATMAIN__ = []; + +var __ATEXIT__ = []; + +var __ATPOSTRUN__ = []; + +var runtimeInitialized = false; + +var runtimeExited = false; + +var runtimeKeepaliveCounter = 0; + +function keepRuntimeAlive() { + return noExitRuntime || runtimeKeepaliveCounter > 0; +} + +function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); +} + +function initRuntime() { + runtimeInitialized = true; + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); + FS.ignorePermissions = false; + TTY.init(); + callRuntimeCallbacks(__ATINIT__); +} + +function preMain() { + callRuntimeCallbacks(__ATMAIN__); +} + +function exitRuntime() { + ___funcs_on_exit(); + callRuntimeCallbacks(__ATEXIT__); + FS.quit(); + TTY.shutdown(); + runtimeExited = true; +} + +function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); +} + +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} + +var runDependencies = 0; + +var runDependencyWatcher = null; + +var dependenciesFulfilled = null; + +function getUniqueRunDependency(id) { + return id; +} + +function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } +} + +function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } +} + +function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what = "Aborted(" + what + ")"; + err(what); + ABORT = true; + EXITSTATUS = 1; + what += ". Build with -sASSERTIONS for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; +} + +var dataURIPrefix = "data:application/octet-stream;base64,"; + +function isDataURI(filename) { + return filename.startsWith(dataURIPrefix); +} + +var wasmBinaryFile; + +if (Module["locateFile"]) { + wasmBinaryFile = "scare-core.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } +} else { + wasmBinaryFile = new URL("scare-core.wasm", import.meta.url).href; +} + +function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } + throw "both async and sync fetching of the wasm failed"; + } catch (err) { + abort(err); + } +} + +function getBinaryPromise(binaryFile) { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function(response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + binaryFile + "'"; + } + return response["arrayBuffer"](); + }).catch(function() { + return getBinary(binaryFile); + }); + } + } + return Promise.resolve().then(function() { + return getBinary(binaryFile); + }); +} + +function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile).then(function(binary) { + return WebAssembly.instantiate(binary, imports); + }).then(function(instance) { + return instance; + }).then(receiver, function(reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason); + }); +} + +function instantiateAsync(binary, binaryFile, imports, callback) { + if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function(response) { + var result = WebAssembly.instantiateStreaming(response, imports); + return result.then(callback, function(reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(binaryFile, imports, callback); + }); + }); + } else { + return instantiateArrayBuffer(binaryFile, imports, callback); + } +} + +function createWasm() { + var info = { + "a": wasmImports + }; + function receiveInstance(instance, module) { + var exports = instance.exports; + exports = Asyncify.instrumentWasmExports(exports); + Module["asm"] = exports; + wasmMemory = Module["asm"]["E"]; + updateMemoryViews(); + wasmTable = Module["asm"]["N"]; + addOnInit(Module["asm"]["F"]); + removeRunDependency("wasm-instantiate"); + return exports; + } + addRunDependency("wasm-instantiate"); + function receiveInstantiationResult(result) { + receiveInstance(result["instance"]); + } + if (Module["instantiateWasm"]) { + try { + return Module["instantiateWasm"](info, receiveInstance); + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + readyPromiseReject(e); + } + } + instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject); + return {}; +} + +var tempDouble; + +var tempI64; + +function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) { + return Asyncify.handleAsync(async () => { + if (!Module.emglken_stdin_buffers.length) { + await new Promise(resolve => { + Module.emglken_stdin_ready = resolve; + }); + } + const input = Module.emglken_stdin_buffers.shift(); + const len = Math.min(input.length, maxlen); + if (len == input.length) { + HEAPU8.set(input, buffer); + } else { + HEAPU8.set(input.subarray(0, len), buffer); + Module.emglken_stdin_buffers.unshift(input.subarray(len)); + } + return len; + }); +} + +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +} + +function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + callbacks.shift()(Module); + } +} + +var PATH = { + isAbs: path => path.charAt(0) === "/", + splitPath: filename => { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + }, + normalizeArray: (parts, allowAboveRoot) => { + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === ".") { + parts.splice(i, 1); + } else if (last === "..") { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + if (allowAboveRoot) { + for (;up; up--) { + parts.unshift(".."); + } + } + return parts; + }, + normalize: path => { + var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === "/"; + path = PATH.normalizeArray(path.split("/").filter(p => !!p), !isAbsolute).join("/"); + if (!path && !isAbsolute) { + path = "."; + } + if (path && trailingSlash) { + path += "/"; + } + return (isAbsolute ? "/" : "") + path; + }, + dirname: path => { + var result = PATH.splitPath(path), root = result[0], dir = result[1]; + if (!root && !dir) { + return "."; + } + if (dir) { + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + }, + basename: path => { + if (path === "/") return "/"; + path = PATH.normalize(path); + path = path.replace(/\/$/, ""); + var lastSlash = path.lastIndexOf("/"); + if (lastSlash === -1) return path; + return path.substr(lastSlash + 1); + }, + join: function() { + var paths = Array.prototype.slice.call(arguments); + return PATH.normalize(paths.join("/")); + }, + join2: (l, r) => { + return PATH.normalize(l + "/" + r); + } +}; + +function getRandomDevice() { + if (typeof crypto == "object" && typeof crypto["getRandomValues"] == "function") { + var randomBuffer = new Uint8Array(1); + return () => { + crypto.getRandomValues(randomBuffer); + return randomBuffer[0]; + }; + } else return () => abort("randomDevice"); +} + +var PATH_FS = { + resolve: function() { + var resolvedPath = "", resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = i >= 0 ? arguments[i] : FS.cwd(); + if (typeof path != "string") { + throw new TypeError("Arguments to path.resolve must be strings"); + } else if (!path) { + return ""; + } + resolvedPath = path + "/" + resolvedPath; + resolvedAbsolute = PATH.isAbs(path); + } + resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter(p => !!p), !resolvedAbsolute).join("/"); + return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; + }, + relative: (from, to) => { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (;start < arr.length; start++) { + if (arr[start] !== "") break; + } + var end = arr.length - 1; + for (;end >= 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 < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push(".."); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join("/"); + } +}; + +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} + +var TTY = { + ttys: [], + init: function() {}, + shutdown: function() {}, + register: function(dev, ops) { + TTY.ttys[dev] = { + input: [], + output: [], + ops: ops + }; + FS.registerDevice(dev, TTY.stream_ops); + }, + stream_ops: { + open: function(stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43); + } + stream.tty = tty; + stream.seekable = false; + }, + close: function(stream) { + stream.tty.ops.fsync(stream.tty); + }, + fsync: function(stream) { + stream.tty.ops.fsync(stream.tty); + }, + read: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60); + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset + i]); + } + } catch (e) { + throw new FS.ErrnoError(29); + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }, + default_tty_ops: { + get_char: function(tty) { + if (!tty.input.length) { + var result = null; + if (typeof window != "undefined" && typeof window.prompt == "function") { + result = window.prompt("Input: "); + if (result !== null) { + result += "\n"; + } + } else if (typeof readline == "function") { + result = readline(); + if (result !== null) { + result += "\n"; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + }, + put_char: function(tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function(tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + }, + default_tty1_ops: { + put_char: function(tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function(tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + } +}; + +function mmapAlloc(size) { + abort(); +} + +var MEMFS = { + ops_table: null, + mount: function(mount) { + return MEMFS.createNode(null, "/", 16384 | 511, 0); + }, + createNode: function(parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + throw new FS.ErrnoError(63); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, + stream: { + llseek: MEMFS.stream_ops.llseek + } + }, + file: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: FS.chrdev_stream_ops + } + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + if (parent) { + parent.contents[name] = node; + parent.timestamp = node.timestamp; + } + return node; + }, + getFileDataAsTypedArray: function(node) { + if (!node.contents) return new Uint8Array(0); + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); + return new Uint8Array(node.contents); + }, + expandFileStorage: function(node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); + }, + resizeFileStorage: function(node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; + node.usedBytes = 0; + } else { + var oldContents = node.contents; + node.contents = new Uint8Array(newSize); + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); + } + node.usedBytes = newSize; + } + }, + node_ops: { + getattr: function(node) { + var attr = {}; + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + }, + setattr: function(node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + }, + lookup: function(parent, name) { + throw FS.genericErrors[44]; + }, + mknod: function(parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + }, + rename: function(old_node, new_dir, new_name) { + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) {} + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(55); + } + } + } + delete old_node.parent.contents[old_node.name]; + old_node.parent.timestamp = Date.now(); + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + new_dir.timestamp = old_node.parent.timestamp; + old_node.parent = new_dir; + }, + unlink: function(parent, name) { + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + rmdir: function(parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(55); + } + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + readdir: function(node) { + var entries = [ ".", ".." ]; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + }, + symlink: function(parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); + node.link = oldpath; + return node; + }, + readlink: function(node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(28); + } + return node.link; + } + }, + stream_ops: { + read: function(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + if (size > 8 && contents.subarray) { + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; + } + return size; + }, + write: function(stream, buffer, offset, length, position, canOwn) { + if (buffer.buffer === HEAP8.buffer) { + canOwn = false; + } + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + if (buffer.subarray && (!node.contents || node.contents.subarray)) { + if (canOwn) { + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { + node.contents = buffer.slice(offset, offset + length); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + MEMFS.expandFileStorage(node, position + length); + if (node.contents.subarray && buffer.subarray) { + node.contents.set(buffer.subarray(offset, offset + length), position); + } else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; + } + } + node.usedBytes = Math.max(node.usedBytes, position + length); + return length; + }, + llseek: function(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + }, + allocate: function(stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + }, + mmap: function(stream, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + var ptr; + var allocated; + var contents = stream.node.contents; + if (!(flags & 2) && contents.buffer === HEAP8.buffer) { + allocated = false; + ptr = contents.byteOffset; + } else { + if (position > 0 || position + length < contents.length) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + HEAP8.set(contents, ptr); + } + return { + ptr: ptr, + allocated: allocated + }; + }, + msync: function(stream, buffer, offset, length, mmapFlags) { + MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + return 0; + } + } +}; + +function asyncLoad(url, onload, onerror, noRunDep) { + var dep = !noRunDep ? getUniqueRunDependency("al " + url) : ""; + readAsync(url, arrayBuffer => { + assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); + onload(new Uint8Array(arrayBuffer)); + if (dep) removeRunDependency(dep); + }, event => { + if (onerror) { + onerror(); + } else { + throw 'Loading data file "' + url + '" failed.'; + } + }); + if (dep) addRunDependency(dep); +} + +var FS = { + root: null, + mounts: [], + devices: {}, + streams: [], + nextInode: 1, + nameTable: null, + currentPath: "/", + initialized: false, + ignorePermissions: true, + ErrnoError: null, + genericErrors: {}, + filesystems: null, + syncFSRequests: 0, + lookupPath: (path, opts = {}) => { + path = PATH_FS.resolve(path); + if (!path) return { + path: "", + node: null + }; + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + opts = Object.assign(defaults, opts); + if (opts.recurse_count > 8) { + throw new FS.ErrnoError(32); + } + var parts = path.split("/").filter(p => !!p); + var current = FS.root; + var current_path = "/"; + for (var i = 0; i < parts.length; i++) { + var islast = i === parts.length - 1; + if (islast && opts.parent) { + break; + } + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + if (FS.isMountpoint(current)) { + if (!islast || islast && opts.follow_mount) { + current = current.mounted.root; + } + } + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + var lookup = FS.lookupPath(current_path, { + recurse_count: opts.recurse_count + 1 + }); + current = lookup.node; + if (count++ > 40) { + throw new FS.ErrnoError(32); + } + } + } + } + return { + path: current_path, + node: current + }; + }, + getPath: node => { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path; + } + path = path ? node.name + "/" + path : node.name; + node = node.parent; + } + }, + hashName: (parentid, name) => { + var hash = 0; + for (var i = 0; i < name.length; i++) { + hash = (hash << 5) - hash + name.charCodeAt(i) | 0; + } + return (parentid + hash >>> 0) % FS.nameTable.length; + }, + hashAddNode: node => { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + }, + hashRemoveNode: node => { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + }, + lookupNode: (parent, name) => { + var errCode = FS.mayLookup(parent); + if (errCode) { + throw new FS.ErrnoError(errCode, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + return FS.lookup(parent, name); + }, + createNode: (parent, name, mode, rdev) => { + var node = new FS.FSNode(parent, name, mode, rdev); + FS.hashAddNode(node); + return node; + }, + destroyNode: node => { + FS.hashRemoveNode(node); + }, + isRoot: node => { + return node === node.parent; + }, + isMountpoint: node => { + return !!node.mounted; + }, + isFile: mode => { + return (mode & 61440) === 32768; + }, + isDir: mode => { + return (mode & 61440) === 16384; + }, + isLink: mode => { + return (mode & 61440) === 40960; + }, + isChrdev: mode => { + return (mode & 61440) === 8192; + }, + isBlkdev: mode => { + return (mode & 61440) === 24576; + }, + isFIFO: mode => { + return (mode & 61440) === 4096; + }, + isSocket: mode => { + return (mode & 49152) === 49152; + }, + flagModes: { + "r": 0, + "r+": 2, + "w": 577, + "w+": 578, + "a": 1089, + "a+": 1090 + }, + modeStringToFlags: str => { + var flags = FS.flagModes[str]; + if (typeof flags == "undefined") { + throw new Error("Unknown file open mode: " + str); + } + return flags; + }, + flagsToPermissionString: flag => { + var perms = [ "r", "w", "rw" ][flag & 3]; + if (flag & 512) { + perms += "w"; + } + return perms; + }, + nodePermissions: (node, perms) => { + if (FS.ignorePermissions) { + return 0; + } + if (perms.includes("r") && !(node.mode & 292)) { + return 2; + } else if (perms.includes("w") && !(node.mode & 146)) { + return 2; + } else if (perms.includes("x") && !(node.mode & 73)) { + return 2; + } + return 0; + }, + mayLookup: dir => { + var errCode = FS.nodePermissions(dir, "x"); + if (errCode) return errCode; + if (!dir.node_ops.lookup) return 2; + return 0; + }, + mayCreate: (dir, name) => { + try { + var node = FS.lookupNode(dir, name); + return 20; + } catch (e) {} + return FS.nodePermissions(dir, "wx"); + }, + mayDelete: (dir, name, isdir) => { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var errCode = FS.nodePermissions(dir, "wx"); + if (errCode) { + return errCode; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 54; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 10; + } + } else { + if (FS.isDir(node.mode)) { + return 31; + } + } + return 0; + }, + mayOpen: (node, flags) => { + if (!node) { + return 44; + } + if (FS.isLink(node.mode)) { + return 32; + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { + return 31; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + }, + MAX_OPEN_FDS: 4096, + nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => { + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(33); + }, + getStream: fd => FS.streams[fd], + createStream: (stream, fd_start, fd_end) => { + if (!FS.FSStream) { + FS.FSStream = function() { + this.shared = {}; + }; + FS.FSStream.prototype = {}; + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: function() { + return this.node; + }, + set: function(val) { + this.node = val; + } + }, + isRead: { + get: function() { + return (this.flags & 2097155) !== 1; + } + }, + isWrite: { + get: function() { + return (this.flags & 2097155) !== 0; + } + }, + isAppend: { + get: function() { + return this.flags & 1024; + } + }, + flags: { + get: function() { + return this.shared.flags; + }, + set: function(val) { + this.shared.flags = val; + } + }, + position: { + get: function() { + return this.shared.position; + }, + set: function(val) { + this.shared.position = val; + } + } + }); + } + stream = Object.assign(new FS.FSStream(), stream); + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + }, + closeStream: fd => { + FS.streams[fd] = null; + }, + chrdev_stream_ops: { + open: stream => { + var device = FS.getDevice(stream.node.rdev); + stream.stream_ops = device.stream_ops; + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + }, + llseek: () => { + throw new FS.ErrnoError(70); + } + }, + major: dev => dev >> 8, + minor: dev => dev & 255, + makedev: (ma, mi) => ma << 8 | mi, + registerDevice: (dev, ops) => { + FS.devices[dev] = { + stream_ops: ops + }; + }, + getDevice: dev => FS.devices[dev], + getMounts: mount => { + var mounts = []; + var check = [ mount ]; + while (check.length) { + var m = check.pop(); + mounts.push(m); + check.push.apply(check, m.mounts); + } + return mounts; + }, + syncfs: (populate, callback) => { + if (typeof populate == "function") { + callback = populate; + populate = false; + } + FS.syncFSRequests++; + if (FS.syncFSRequests > 1) { + err("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"); + } + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + function doCallback(errCode) { + FS.syncFSRequests--; + return callback(errCode); + } + function done(errCode) { + if (errCode) { + if (!done.errored) { + done.errored = true; + return doCallback(errCode); + } + return; + } + if (++completed >= mounts.length) { + doCallback(null); + } + } + mounts.forEach(mount => { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + }, + mount: (type, opts, mountpoint) => { + var root = mountpoint === "/"; + var pseudo = !mountpoint; + var node; + if (root && FS.root) { + throw new FS.ErrnoError(10); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + mountpoint = lookup.path; + node = lookup.node; + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + } + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + if (root) { + FS.root = mountRoot; + } else if (node) { + node.mounted = mount; + if (node.mount) { + node.mount.mounts.push(mount); + } + } + return mountRoot; + }, + unmount: mountpoint => { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(28); + } + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + Object.keys(FS.nameTable).forEach(hash => { + var current = FS.nameTable[hash]; + while (current) { + var next = current.name_next; + if (mounts.includes(current.mount)) { + FS.destroyNode(current); + } + current = next; + } + }); + node.mounted = null; + var idx = node.mount.mounts.indexOf(mount); + node.mount.mounts.splice(idx, 1); + }, + lookup: (parent, name) => { + return parent.node_ops.lookup(parent, name); + }, + mknod: (path, mode, dev) => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === "." || name === "..") { + throw new FS.ErrnoError(28); + } + var errCode = FS.mayCreate(parent, name); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.mknod(parent, name, mode, dev); + }, + create: (path, mode) => { + mode = mode !== undefined ? mode : 438; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + }, + mkdir: (path, mode) => { + mode = mode !== undefined ? mode : 511; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + }, + mkdirTree: (path, mode) => { + var dirs = path.split("/"); + var d = ""; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += "/" + dirs[i]; + 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); + } catch (e) { + throw e; + } finally { + FS.hashAddNode(old_node); + } + }, + rmdir: path => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, true); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + }, + readdir: path => { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(54); + } + return node.node_ops.readdir(node); + }, + unlink: path => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, false); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + }, + readlink: path => { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(44); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(28); + } + return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + }, + stat: (path, dontFollow) => { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(44); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(63); + } + return node.node_ops.getattr(node); + }, + lstat: path => { + return FS.stat(path, true); + }, + chmod: (path, mode, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + mode: mode & 4095 | node.mode & ~4095, + timestamp: Date.now() + }); + }, + lchmod: (path, mode) => { + FS.chmod(path, mode, true); + }, + fchmod: (fd, mode) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chmod(stream.node, mode); + }, + chown: (path, uid, gid, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + }); + }, + lchown: (path, uid, gid) => { + FS.chown(path, uid, gid, true); + }, + fchown: (fd, uid, gid) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chown(stream.node, uid, gid); + }, + truncate: (path, len) => { + if (len < 0) { + throw new FS.ErrnoError(28); + } + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: true + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(31); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(28); + } + var errCode = FS.nodePermissions(node, "w"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + }, + ftruncate: (fd, len) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(28); + } + FS.truncate(stream.node, len); + }, + utime: (path, atime, mtime) => { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + }, + open: (path, flags, mode) => { + if (path === "") { + throw new FS.ErrnoError(44); + } + flags = typeof flags == "string" ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode == "undefined" ? 438 : mode; + if (flags & 64) { + mode = mode & 4095 | 32768; + } else { + mode = 0; + } + var node; + if (typeof path == "object") { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 131072) + }); + node = lookup.node; + } catch (e) {} + } + var created = false; + if (flags & 64) { + if (node) { + if (flags & 128) { + throw new FS.ErrnoError(20); + } + } else { + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(44); + } + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + if (flags & 65536 && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + if (!created) { + var errCode = FS.mayOpen(node, flags); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + } + if (flags & 512 && !created) { + FS.truncate(node, 0); + } + flags &= ~(128 | 512 | 131072); + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + ungotten: [], + error: false + }); + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module["logReadFiles"] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + } + } + return stream; + }, + close: stream => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (stream.getdents) stream.getdents = null; + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + stream.fd = null; + }, + isClosed: stream => { + return stream.fd === null; + }, + llseek: (stream, offset, whence) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(70); + } + if (whence != 0 && whence != 1 && whence != 2) { + throw new FS.ErrnoError(28); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + }, + read: (stream, buffer, offset, length, position) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(28); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + }, + write: (stream, buffer, offset, length, position, canOwn) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(28); + } + if (stream.seekable && stream.flags & 1024) { + FS.llseek(stream, 0, 2); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + return bytesWritten; + }, + allocate: (stream, offset, length) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(28); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(138); + } + stream.stream_ops.allocate(stream, offset, length); + }, + mmap: (stream, length, position, prot, flags) => { + if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) { + throw new FS.ErrnoError(2); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(2); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(43); + } + return stream.stream_ops.mmap(stream, length, position, prot, flags); + }, + msync: (stream, buffer, offset, length, mmapFlags) => { + if (!stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + }, + munmap: stream => 0, + ioctl: (stream, cmd, arg) => { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + }, + readFile: (path, opts = {}) => { + opts.flags = opts.flags || 0; + opts.encoding = opts.encoding || "binary"; + if (opts.encoding !== "utf8" && opts.encoding !== "binary") { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === "utf8") { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === "binary") { + ret = buf; + } + FS.close(stream); + return ret; + }, + writeFile: (path, data, opts = {}) => { + opts.flags = opts.flags || 577; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data == "string") { + var buf = new Uint8Array(lengthBytesUTF8(data) + 1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); + } else { + throw new Error("Unsupported data type"); + } + FS.close(stream); + }, + cwd: () => FS.currentPath, + chdir: path => { + var lookup = FS.lookupPath(path, { + follow: true + }); + if (lookup.node === null) { + throw new FS.ErrnoError(44); + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(54); + } + var errCode = FS.nodePermissions(lookup.node, "x"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + FS.currentPath = lookup.path; + }, + createDefaultDirectories: () => { + FS.mkdir("/tmp"); + FS.mkdir("/home"); + FS.mkdir("/home/web_user"); + }, + createDefaultDevices: () => { + FS.mkdir("/dev"); + FS.registerDevice(FS.makedev(1, 3), { + read: () => 0, + write: (stream, buffer, offset, length, pos) => length + }); + FS.mkdev("/dev/null", FS.makedev(1, 3)); + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev("/dev/tty", FS.makedev(5, 0)); + FS.mkdev("/dev/tty1", FS.makedev(6, 0)); + var random_device = getRandomDevice(); + FS.createDevice("/dev", "random", random_device); + FS.createDevice("/dev", "urandom", random_device); + FS.mkdir("/dev/shm"); + FS.mkdir("/dev/shm/tmp"); + }, + createSpecialDirectories: () => { + FS.mkdir("/proc"); + var proc_self = FS.mkdir("/proc/self"); + FS.mkdir("/proc/self/fd"); + FS.mount({ + mount: () => { + var node = FS.createNode(proc_self, "fd", 16384 | 511, 73); + node.node_ops = { + lookup: (parent, name) => { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + var ret = { + parent: null, + mount: { + mountpoint: "fake" + }, + node_ops: { + readlink: () => stream.path + } + }; + ret.parent = ret; + return ret; + } + }; + return node; + } + }, {}, "/proc/self/fd"); + }, + createStandardStreams: () => { + if (Module["stdin"]) { + FS.createDevice("/dev", "stdin", Module["stdin"]); + } else { + FS.symlink("/dev/tty", "/dev/stdin"); + } + if (Module["stdout"]) { + FS.createDevice("/dev", "stdout", null, Module["stdout"]); + } else { + FS.symlink("/dev/tty", "/dev/stdout"); + } + if (Module["stderr"]) { + FS.createDevice("/dev", "stderr", null, Module["stderr"]); + } else { + FS.symlink("/dev/tty1", "/dev/stderr"); + } + var stdin = FS.open("/dev/stdin", 0); + var stdout = FS.open("/dev/stdout", 1); + var stderr = FS.open("/dev/stderr", 1); + }, + ensureErrnoError: () => { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + this.name = "ErrnoError"; + this.node = node; + this.setErrno = function(errno) { + this.errno = errno; + }; + this.setErrno(errno); + this.message = "FS error"; + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + [ 44 ].forEach(code => { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = ""; + }); + }, + staticInit: () => { + FS.ensureErrnoError(); + FS.nameTable = new Array(4096); + FS.mount(MEMFS, {}, "/"); + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + FS.filesystems = { + "MEMFS": MEMFS + }; + }, + init: (input, output, error) => { + FS.init.initialized = true; + FS.ensureErrnoError(); + Module["stdin"] = input || Module["stdin"]; + Module["stdout"] = output || Module["stdout"]; + Module["stderr"] = error || Module["stderr"]; + FS.createStandardStreams(); + }, + quit: () => { + FS.init.initialized = false; + _fflush(0); + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + }, + getMode: (canRead, canWrite) => { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + }, + 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) {} + parent = current; + } + return current; + }, + createFile: (parent, name, properties, canRead, canWrite) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + }, + createDataFile: (parent, name, data, canRead, canWrite, canOwn) => { + var path = name; + if (parent) { + parent = typeof parent == "string" ? parent : FS.getPath(parent); + path = name ? PATH.join2(parent, name) : parent; + } + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data == "string") { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + 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); + } + return node; + }, + createDevice: (parent, name, input, output) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + FS.registerDevice(dev, { + open: stream => { + stream.seekable = false; + }, + close: stream => { + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: (stream, buffer, offset, length, pos) => { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: (stream, buffer, offset, length, pos) => { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset + i]); + } catch (e) { + throw new FS.ErrnoError(29); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + }, + forceLoadFile: obj => { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + if (typeof XMLHttpRequest != "undefined") { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (read_) { + try { + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + throw new FS.ErrnoError(29); + } + } else { + throw new Error("Cannot load without read() or XMLHttpRequest."); + } + }, + createLazyFile: (parent, name, url, canRead, canWrite) => { + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; + } + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length - 1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = idx / this.chunkSize | 0; + return this.getter(chunkNum)[chunkOffset]; + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + var xhr = new XMLHttpRequest(); + xhr.open("HEAD", url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + var chunkSize = 1024 * 1024; + if (!hasByteServing) chunkSize = datalength; + var doXHR = (from, to) => { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!"); + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + xhr.responseType = "arraybuffer"; + if (xhr.overrideMimeType) { + xhr.overrideMimeType("text/plain; charset=x-user-defined"); + } + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } + return intArrayFromString(xhr.responseText || "", true); + }; + var lazyArray = this; + lazyArray.setDataGetter(chunkNum => { + var start = chunkNum * chunkSize; + var end = (chunkNum + 1) * chunkSize - 1; + end = Math.min(end, datalength - 1); + if (typeof lazyArray.chunks[chunkNum] == "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof lazyArray.chunks[chunkNum] == "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + if (usesGzip || !datalength) { + chunkSize = datalength = 1; + datalength = this.getter(0).length; + chunkSize = datalength; + out("LazyFiles on gzip forces download of the whole file when length is accessed"); + } + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + }; + if (typeof XMLHttpRequest != "undefined") { + if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; + var lazyArray = new LazyUint8Array(); + Object.defineProperties(lazyArray, { + length: { + get: function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }, + chunkSize: { + get: function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + } + }); + var properties = { + isDevice: false, + contents: lazyArray + }; + } else { + var properties = { + isDevice: false, + url: url + }; + } + var node = FS.createFile(parent, name, properties, canRead, canWrite); + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + Object.defineProperties(node, { + usedBytes: { + get: function() { + return this.contents.length; + } + } + }); + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(key => { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + FS.forceLoadFile(node); + return fn.apply(null, arguments); + }; + }); + function writeChunks(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= contents.length) return 0; + var size = Math.min(contents.length - position, length); + if (contents.slice) { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents.get(position + i); + } + } + return size; + } + stream_ops.read = (stream, buffer, offset, length, position) => { + FS.forceLoadFile(node); + return writeChunks(stream, buffer, offset, length, position); + }; + stream_ops.mmap = (stream, length, position, prot, flags) => { + FS.forceLoadFile(node); + var ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + writeChunks(stream, HEAP8, ptr, length, position); + return { + ptr: ptr, + allocated: true + }; + }; + node.stream_ops = stream_ops; + return node; + }, + createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => { + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency("cp " + fullname); + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => { + if (onerror) onerror(); + removeRunDependency(dep); + })) { + return; + } + finish(byteArray); + } + addRunDependency(dep); + if (typeof url == "string") { + asyncLoad(url, byteArray => processData(byteArray), onerror); + } else { + processData(url); + } + }, + indexedDB: () => { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + }, + DB_NAME: () => { + return "EM_FS_" + window.location.pathname; + }, + DB_VERSION: 20, + DB_STORE_NAME: "FILE_DATA", + saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => { + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = () => { + out("creating db"); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = () => { + var db = openRequest.result; + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readwrite"); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(path => { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = () => { + ok++; + if (ok + fail == total) finish(); + }; + putRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }, + loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => { + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; + openRequest.onsuccess = () => { + var db = openRequest.result; + try { + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readonly"); + } catch (e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(path => { + var getRequest = files.get(path); + getRequest.onsuccess = () => { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + } +}; + +var SYSCALLS = { + DEFAULT_POLLMASK: 5, + calculateAt: function(dirfd, path, allowEmpty) { + if (PATH.isAbs(path)) { + return path; + } + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = SYSCALLS.getStreamFromFD(dirfd); + dir = dirstream.path; + } + if (path.length == 0) { + if (!allowEmpty) { + throw new FS.ErrnoError(44); + } + return dir; + } + return PATH.join2(dir, path); + }, + doStat: function(func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + return -54; + } + throw e; + } + HEAP32[buf >> 2] = stat.dev; + HEAP32[buf + 8 >> 2] = stat.ino; + HEAP32[buf + 12 >> 2] = stat.mode; + HEAPU32[buf + 16 >> 2] = stat.nlink; + HEAP32[buf + 20 >> 2] = stat.uid; + HEAP32[buf + 24 >> 2] = stat.gid; + HEAP32[buf + 28 >> 2] = stat.rdev; + tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1]; + HEAP32[buf + 48 >> 2] = 4096; + HEAP32[buf + 52 >> 2] = stat.blocks; + var atime = stat.atime.getTime(); + var mtime = stat.mtime.getTime(); + var ctime = stat.ctime.getTime(); + tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1]; + HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3; + tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1]; + HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3; + tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1]; + HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3; + tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1]; + return 0; + }, + doMsync: function(addr, stream, len, flags, offset) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (flags & 2) { + return 0; + } + var buffer = HEAPU8.slice(addr, addr + len); + FS.msync(stream, buffer, offset, len, flags); + }, + varargs: undefined, + get: function() { + SYSCALLS.varargs += 4; + var ret = HEAP32[SYSCALLS.varargs - 4 >> 2]; + return ret; + }, + getStr: function(ptr) { + var ret = UTF8ToString(ptr); + return ret; + }, + getStreamFromFD: function(fd) { + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + return stream; + } +}; + +function ___syscall_faccessat(dirfd, path, amode, flags) { + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + if (amode & ~7) { + return -28; + } + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + if (!node) { + return -44; + } + var perms = ""; + if (amode & 4) perms += "r"; + if (amode & 2) perms += "w"; + if (amode & 1) perms += "x"; + if (perms && FS.nodePermissions(node, perms)) { + return -2; + } + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function setErrNo(value) { + HEAP32[___errno_location() >> 2] = value; + return value; +} + +function ___syscall_fcntl64(fd, cmd, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (cmd) { + case 0: + { + var arg = SYSCALLS.get(); + if (arg < 0) { + return -28; + } + var newStream; + newStream = FS.createStream(stream, arg); + return newStream.fd; + } + + case 1: + case 2: + return 0; + + case 3: + return stream.flags; + + case 4: + { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0; + } + + case 5: + { + var arg = SYSCALLS.get(); + var offset = 0; + HEAP16[arg + offset >> 1] = 2; + return 0; + } + + case 6: + case 7: + return 0; + + case 16: + case 8: + return -28; + + case 9: + setErrNo(28); + return -1; + + default: + { + return -28; + } + } + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_getcwd(buf, size) { + try { + if (size === 0) return -28; + var cwd = FS.cwd(); + var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1; + if (size < cwdLengthInBytes) return -68; + stringToUTF8(cwd, buf, size); + return cwdLengthInBytes; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_ioctl(fd, op, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (op) { + case 21509: + case 21505: + { + if (!stream.tty) return -59; + return 0; + } + + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: + { + if (!stream.tty) return -59; + return 0; + } + + case 21519: + { + if (!stream.tty) return -59; + var argp = SYSCALLS.get(); + HEAP32[argp >> 2] = 0; + return 0; + } + + case 21520: + { + if (!stream.tty) return -59; + return -28; + } + + case 21531: + { + var argp = SYSCALLS.get(); + return FS.ioctl(stream, op, argp); + } + + case 21523: + { + if (!stream.tty) return -59; + return 0; + } + + case 21524: + { + if (!stream.tty) return -59; + return 0; + } + + default: + return -28; + } + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_openat(dirfd, path, flags, varargs) { + SYSCALLS.varargs = varargs; + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + var mode = varargs ? SYSCALLS.get() : 0; + return FS.open(path, flags, mode).fd; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_stat64(path, buf) { + try { + path = SYSCALLS.getStr(path); + return SYSCALLS.doStat(FS.stat, path, buf); + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +var nowIsMonotonic = true; + +function __emscripten_get_now_is_monotonic() { + return nowIsMonotonic; +} + +function __emscripten_throw_longjmp() { + throw Infinity; +} + +function _abort() { + abort(""); +} + +function _emscripten_date_now() { + return Date.now(); +} + +var _emscripten_get_now; + +_emscripten_get_now = () => performance.now(); + +function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); +} + +function getHeapMax() { + return 2147483648; +} + +function emscripten_realloc_buffer(size) { + var b = wasmMemory.buffer; + try { + wasmMemory.grow(size - b.byteLength + 65535 >>> 16); + updateMemoryViews(); + return 1; + } catch (e) {} +} + +function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + var maxHeapSize = getHeapMax(); + if (requestedSize > maxHeapSize) { + return false; + } + let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple; + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + .2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; +} + +var ENV = {}; + +function getExecutableName() { + return thisProgram || "./this.program"; +} + +function getEnvStrings() { + if (!getEnvStrings.strings) { + var lang = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8"; + var env = { + "USER": "web_user", + "LOGNAME": "web_user", + "PATH": "/", + "PWD": "/", + "HOME": "/home/web_user", + "LANG": lang, + "_": getExecutableName() + }; + for (var x in ENV) { + if (ENV[x] === undefined) delete env[x]; else env[x] = ENV[x]; + } + var strings = []; + for (var x in env) { + strings.push(x + "=" + env[x]); + } + getEnvStrings.strings = strings; + } + return getEnvStrings.strings; +} + +function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + HEAP8[buffer++ >> 0] = str.charCodeAt(i); + } + if (!dontAddNull) HEAP8[buffer >> 0] = 0; +} + +function _environ_get(__environ, environ_buf) { + var bufSize = 0; + getEnvStrings().forEach(function(string, i) { + var ptr = environ_buf + bufSize; + HEAPU32[__environ + i * 4 >> 2] = ptr; + writeAsciiToMemory(string, ptr); + bufSize += string.length + 1; + }); + return 0; +} + +function _environ_sizes_get(penviron_count, penviron_buf_size) { + var strings = getEnvStrings(); + HEAPU32[penviron_count >> 2] = strings.length; + var bufSize = 0; + strings.forEach(function(string) { + bufSize += string.length + 1; + }); + HEAPU32[penviron_buf_size >> 2] = bufSize; + return 0; +} + +function _proc_exit(code) { + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + if (Module["onExit"]) Module["onExit"](code); + ABORT = true; + } + quit_(code, new ExitStatus(code)); +} + +function exitJS(status, implicit) { + EXITSTATUS = status; + if (!keepRuntimeAlive()) { + exitRuntime(); + } + _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 doReadv(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 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 < len) break; + if (typeof offset !== "undefined") { + offset += curr; + } + } + return ret; +} + +function _fd_read(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doReadv(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function convertI32PairToI53Checked(lo, hi) { + return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN; +} + +function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + try { + var offset = convertI32PairToI53Checked(offset_low, offset_high); + if (isNaN(offset)) return 61; + var stream = SYSCALLS.getStreamFromFD(fd); + FS.llseek(stream, offset, whence); + tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1]; + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function doWritev(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[iov + 4 >> 2]; + iov += 8; + var curr = FS.write(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (typeof offset !== "undefined") { + offset += curr; + } + } + return ret; +} + +function _fd_write(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doWritev(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function handleException(e) { + if (e instanceof ExitStatus || e == "unwind") { + return EXITSTATUS; + } + quit_(1, e); +} + +function allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +function runAndAbortIfError(func) { + try { + return func(); + } catch (e) { + abort(e); + } +} + +function maybeExit() { + if (!keepRuntimeAlive()) { + try { + _exit(EXITSTATUS); + } catch (e) { + handleException(e); + } + } +} + +function callUserCallback(func) { + if (runtimeExited || ABORT) { + return; + } + try { + func(); + maybeExit(); + } catch (e) { + handleException(e); + } +} + +function runtimeKeepalivePush() { + runtimeKeepaliveCounter += 1; +} + +function runtimeKeepalivePop() { + runtimeKeepaliveCounter -= 1; +} + +var Asyncify = { + instrumentWasmImports: function(imports) { + var ASYNCIFY_IMPORTS = [ "invoke_*", "emscripten_sleep", "emscripten_wget", "emscripten_wget_data", "emscripten_idb_load", "emscripten_idb_store", "emscripten_idb_delete", "emscripten_idb_exists", "emscripten_idb_load_blob", "emscripten_idb_store_blob", "SDL_Delay", "emscripten_scan_registers", "emscripten_lazy_load_code", "emscripten_fiber_swap", "__load_secondary_module", "fd_sync", "__wasi_fd_sync", "_emval_await", "_dlopen_js", "__asyncjs__*" ]; + for (var x in imports) { + (function(x) { + var original = imports[x]; + var sig = original.sig; + if (typeof original == "function") { + var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith("__asyncjs__"); + } + })(x); + } + }, + instrumentWasmExports: function(exports) { + var ret = {}; + for (var x in exports) { + (function(x) { + var original = exports[x]; + if (typeof original == "function") { + ret[x] = function() { + Asyncify.exportCallStack.push(x); + try { + return original.apply(null, arguments); + } finally { + if (!ABORT) { + var y = Asyncify.exportCallStack.pop(); + assert(y === x); + Asyncify.maybeStopUnwind(); + } + } + }; + } else { + ret[x] = original; + } + })(x); + } + return ret; + }, + State: { + Normal: 0, + Unwinding: 1, + Rewinding: 2, + Disabled: 3 + }, + state: 0, + StackSize: 8192, + currData: null, + handleSleepReturnValue: 0, + exportCallStack: [], + callStackNameToId: {}, + callStackIdToName: {}, + callStackId: 0, + asyncPromiseHandlers: null, + sleepCallbacks: [], + getCallStackId: function(funcName) { + var id = Asyncify.callStackNameToId[funcName]; + if (id === undefined) { + id = Asyncify.callStackId++; + Asyncify.callStackNameToId[funcName] = id; + Asyncify.callStackIdToName[id] = funcName; + } + return id; + }, + maybeStopUnwind: function() { + if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) { + Asyncify.state = Asyncify.State.Normal; + runtimeKeepalivePush(); + runAndAbortIfError(_asyncify_stop_unwind); + if (typeof Fibers != "undefined") { + Fibers.trampoline(); + } + } + }, + whenDone: function() { + return new Promise((resolve, reject) => { + Asyncify.asyncPromiseHandlers = { + resolve: resolve, + reject: reject + }; + }); + }, + allocateData: function() { + var ptr = _malloc(12 + Asyncify.StackSize); + Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize); + Asyncify.setDataRewindFunc(ptr); + return ptr; + }, + setDataHeader: function(ptr, stack, stackSize) { + HEAP32[ptr >> 2] = stack; + HEAP32[ptr + 4 >> 2] = stack + stackSize; + }, + setDataRewindFunc: function(ptr) { + var bottomOfCallStack = Asyncify.exportCallStack[0]; + var rewindId = Asyncify.getCallStackId(bottomOfCallStack); + HEAP32[ptr + 8 >> 2] = rewindId; + }, + getDataRewindFunc: function(ptr) { + var id = HEAP32[ptr + 8 >> 2]; + var name = Asyncify.callStackIdToName[id]; + var func = Module["asm"][name]; + return func; + }, + doRewind: function(ptr) { + var start = Asyncify.getDataRewindFunc(ptr); + runtimeKeepalivePop(); + return start(); + }, + handleSleep: function(startAsync) { + if (ABORT) return; + if (Asyncify.state === Asyncify.State.Normal) { + var reachedCallback = false; + var reachedAfterCallback = false; + startAsync((handleSleepReturnValue = 0) => { + if (ABORT) return; + Asyncify.handleSleepReturnValue = handleSleepReturnValue; + reachedCallback = true; + if (!reachedAfterCallback) { + return; + } + Asyncify.state = Asyncify.State.Rewinding; + runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData)); + if (typeof Browser != "undefined" && Browser.mainLoop.func) { + Browser.mainLoop.resume(); + } + var asyncWasmReturnValue, isError = false; + try { + asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData); + } catch (err) { + asyncWasmReturnValue = err; + isError = true; + } + var handled = false; + if (!Asyncify.currData) { + var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers; + if (asyncPromiseHandlers) { + Asyncify.asyncPromiseHandlers = null; + (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue); + handled = true; + } + } + if (isError && !handled) { + throw asyncWasmReturnValue; + } + }); + reachedAfterCallback = true; + if (!reachedCallback) { + Asyncify.state = Asyncify.State.Unwinding; + Asyncify.currData = Asyncify.allocateData(); + if (typeof Browser != "undefined" && Browser.mainLoop.func) { + Browser.mainLoop.pause(); + } + runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData)); + } + } else if (Asyncify.state === Asyncify.State.Rewinding) { + Asyncify.state = Asyncify.State.Normal; + runAndAbortIfError(_asyncify_stop_rewind); + _free(Asyncify.currData); + Asyncify.currData = null; + Asyncify.sleepCallbacks.forEach(func => callUserCallback(func)); + } else { + abort("invalid state: " + Asyncify.state); + } + return Asyncify.handleSleepReturnValue; + }, + handleAsync: function(startAsync) { + return Asyncify.handleSleep(wakeUp => { + startAsync().then(wakeUp); + }); + } +}; + +function AsciiToString(ptr) { + var str = ""; + while (1) { + var ch = HEAPU8[ptr++ >> 0]; + if (!ch) return str; + str += String.fromCharCode(ch); + } +} + +var FSNode = function(parent, name, mode, rdev) { + if (!parent) { + parent = this; + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; +}; + +var readMode = 292 | 73; + +var writeMode = 146; + +Object.defineProperties(FSNode.prototype, { + read: { + get: function() { + return (this.mode & readMode) === readMode; + }, + set: function(val) { + val ? this.mode |= readMode : this.mode &= ~readMode; + } + }, + write: { + get: function() { + return (this.mode & writeMode) === writeMode; + }, + set: function(val) { + val ? this.mode |= writeMode : this.mode &= ~writeMode; + } + }, + isFolder: { + get: function() { + return FS.isDir(this.mode); + } + }, + isDevice: { + get: function() { + return FS.isChrdev(this.mode); + } + } +}); + +FS.FSNode = FSNode; + +FS.staticInit(); + +var wasmImports = { + "s": __asyncjs__emglken_fill_stdin_buffer, + "D": ___syscall_faccessat, + "n": ___syscall_fcntl64, + "C": ___syscall_getcwd, + "B": ___syscall_ioctl, + "A": ___syscall_openat, + "z": ___syscall_stat64, + "v": __emscripten_get_now_is_monotonic, + "u": __emscripten_throw_longjmp, + "t": _abort, + "k": _emscripten_date_now, + "r": _emscripten_memcpy_big, + "q": _emscripten_resize_heap, + "y": _environ_get, + "x": _environ_sizes_get, + "i": _exit, + "m": _fd_close, + "w": _fd_read, + "p": _fd_seek, + "l": _fd_write, + "c": invoke_i, + "g": invoke_ii, + "f": invoke_iiii, + "d": invoke_iiiii, + "o": invoke_ji, + "j": invoke_v, + "b": invoke_vi, + "a": invoke_vii, + "h": invoke_viii, + "e": invoke_viiii +}; + +var asm = createWasm(); + +var ___wasm_call_ctors = function() { + return (___wasm_call_ctors = Module["asm"]["F"]).apply(null, arguments); +}; + +var _free = function() { + return (_free = Module["asm"]["G"]).apply(null, arguments); +}; + +var _malloc = function() { + return (_malloc = Module["asm"]["H"]).apply(null, arguments); +}; + +var _main = Module["_main"] = function() { + return (_main = Module["_main"] = Module["asm"]["I"]).apply(null, arguments); +}; + +var _gidispatch_get_game_id = Module["_gidispatch_get_game_id"] = function() { + return (_gidispatch_get_game_id = Module["_gidispatch_get_game_id"] = Module["asm"]["J"]).apply(null, arguments); +}; + +var _fflush = Module["_fflush"] = function() { + return (_fflush = Module["_fflush"] = Module["asm"]["K"]).apply(null, arguments); +}; + +var ___errno_location = function() { + return (___errno_location = Module["asm"]["L"]).apply(null, arguments); +}; + +var ___funcs_on_exit = function() { + return (___funcs_on_exit = Module["asm"]["M"]).apply(null, arguments); +}; + +var _setThrew = function() { + return (_setThrew = Module["asm"]["O"]).apply(null, arguments); +}; + +var _saveSetjmp = function() { + return (_saveSetjmp = Module["asm"]["saveSetjmp"]).apply(null, arguments); +}; + +var _emscripten_stack_set_limits = function() { + return (_emscripten_stack_set_limits = Module["asm"]["emscripten_stack_set_limits"]).apply(null, arguments); +}; + +var _emscripten_stack_get_base = function() { + return (_emscripten_stack_get_base = Module["asm"]["emscripten_stack_get_base"]).apply(null, arguments); +}; + +var _emscripten_stack_get_end = function() { + return (_emscripten_stack_get_end = Module["asm"]["emscripten_stack_get_end"]).apply(null, arguments); +}; + +var stackSave = function() { + return (stackSave = Module["asm"]["P"]).apply(null, arguments); +}; + +var stackRestore = function() { + return (stackRestore = Module["asm"]["Q"]).apply(null, arguments); +}; + +var stackAlloc = function() { + return (stackAlloc = Module["asm"]["R"]).apply(null, arguments); +}; + +var dynCall_vi = Module["dynCall_vi"] = function() { + return (dynCall_vi = Module["dynCall_vi"] = Module["asm"]["S"]).apply(null, arguments); +}; + +var dynCall_iiii = Module["dynCall_iiii"] = function() { + return (dynCall_iiii = Module["dynCall_iiii"] = Module["asm"]["T"]).apply(null, arguments); +}; + +var dynCall_ii = Module["dynCall_ii"] = function() { + return (dynCall_ii = Module["dynCall_ii"] = Module["asm"]["U"]).apply(null, arguments); +}; + +var dynCall_vii = Module["dynCall_vii"] = function() { + return (dynCall_vii = Module["dynCall_vii"] = Module["asm"]["V"]).apply(null, arguments); +}; + +var dynCall_i = Module["dynCall_i"] = function() { + return (dynCall_i = Module["dynCall_i"] = Module["asm"]["W"]).apply(null, arguments); +}; + +var dynCall_v = Module["dynCall_v"] = function() { + return (dynCall_v = Module["dynCall_v"] = Module["asm"]["X"]).apply(null, arguments); +}; + +var dynCall_iiiii = Module["dynCall_iiiii"] = function() { + return (dynCall_iiiii = Module["dynCall_iiiii"] = Module["asm"]["Y"]).apply(null, arguments); +}; + +var dynCall_viii = Module["dynCall_viii"] = function() { + return (dynCall_viii = Module["dynCall_viii"] = Module["asm"]["Z"]).apply(null, arguments); +}; + +var dynCall_viiii = Module["dynCall_viiii"] = function() { + return (dynCall_viiii = Module["dynCall_viiii"] = Module["asm"]["_"]).apply(null, arguments); +}; + +var dynCall_ji = Module["dynCall_ji"] = function() { + return (dynCall_ji = Module["dynCall_ji"] = Module["asm"]["$"]).apply(null, arguments); +}; + +var _asyncify_start_unwind = function() { + return (_asyncify_start_unwind = Module["asm"]["aa"]).apply(null, arguments); +}; + +var _asyncify_stop_unwind = function() { + return (_asyncify_stop_unwind = Module["asm"]["ba"]).apply(null, arguments); +}; + +var _asyncify_start_rewind = function() { + return (_asyncify_start_rewind = Module["asm"]["ca"]).apply(null, arguments); +}; + +var _asyncify_stop_rewind = function() { + return (_asyncify_stop_rewind = Module["asm"]["da"]).apply(null, arguments); +}; + +var ___start_em_js = Module["___start_em_js"] = 107504; + +var ___stop_em_js = Module["___stop_em_js"] = 110189; + +function invoke_ii(index, a1) { + var sp = stackSave(); + try { + return dynCall_ii(index, a1); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_vii(index, a1, a2) { + var sp = stackSave(); + try { + dynCall_vii(index, a1, a2); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_i(index) { + var sp = stackSave(); + try { + return dynCall_i(index); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_v(index) { + var sp = stackSave(); + try { + dynCall_v(index); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_vi(index, a1) { + var sp = stackSave(); + try { + dynCall_vi(index, a1); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiii(index, a1, a2, a3, a4) { + var sp = stackSave(); + try { + return dynCall_iiiii(index, a1, a2, a3, a4); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viii(index, a1, a2, a3) { + var sp = stackSave(); + try { + dynCall_viii(index, a1, a2, a3); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiii(index, a1, a2, a3) { + var sp = stackSave(); + try { + return dynCall_iiii(index, a1, a2, a3); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiii(index, a1, a2, a3, a4) { + var sp = stackSave(); + try { + dynCall_viiii(index, a1, a2, a3, a4); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_ji(index, a1) { + var sp = stackSave(); + try { + return dynCall_ji(index, a1); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +Module["AsciiToString"] = AsciiToString; + +Module["FS"] = FS; + +var calledRun; + +dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; +}; + +function callMain(args = []) { + var entryFunction = _main; + args.unshift(thisProgram); + var argc = args.length; + var argv = stackAlloc((argc + 1) * 4); + var argv_ptr = argv >> 2; + args.forEach(arg => { + HEAP32[argv_ptr++] = allocateUTF8OnStack(arg); + }); + HEAP32[argv_ptr] = 0; + try { + var ret = entryFunction(argc, argv); + exitJS(ret, true); + return ret; + } catch (e) { + return handleException(e); + } +} + +function run(args = arguments_) { + if (runDependencies > 0) { + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + preMain(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + if (shouldRunNow) callMain(args); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } +} + +if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } +} + +var shouldRunNow = true; + +if (Module["noInitialRun"]) shouldRunNow = false; + +run(); + + + return Module.ready +} + +); +})(); +export default Module; \ No newline at end of file diff --git a/docs/emglken/scare-core.wasm b/docs/emglken/scare-core.wasm new file mode 100755 index 0000000..0f350f3 Binary files /dev/null and b/docs/emglken/scare-core.wasm differ diff --git a/docs/emglken/tads-core.js b/docs/emglken/tads-core.js new file mode 100644 index 0000000..6541a83 --- /dev/null +++ b/docs/emglken/tads-core.js @@ -0,0 +1,4559 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +function(Module = {}) { + +var Module = typeof Module != "undefined" ? Module : {}; + +var readyPromiseResolve, readyPromiseReject; + +Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; +}); + +var moduleOverrides = Object.assign({}, Module); + +var arguments_ = []; + +var thisProgram = "./this.program"; + +var quit_ = (status, toThrow) => { + throw toThrow; +}; + +var ENVIRONMENT_IS_WEB = true; + +var ENVIRONMENT_IS_WORKER = false; + +var scriptDirectory = ""; + +function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; +} + +var read_, readAsync, readBinary, setWindowTitle; + +if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (typeof document != "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (_scriptDir) { + scriptDirectory = _scriptDir; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + { + read_ = url => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = url => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + readAsync = (url, onload, onerror) => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = () => { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + } + setWindowTitle = title => document.title = title; +} else {} + +var out = Module["print"] || console.log.bind(console); + +var err = Module["printErr"] || console.warn.bind(console); + +Object.assign(Module, moduleOverrides); + +moduleOverrides = null; + +if (Module["arguments"]) arguments_ = Module["arguments"]; + +if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; + +if (Module["quit"]) quit_ = Module["quit"]; + +var wasmBinary; + +if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + +var noExitRuntime = Module["noExitRuntime"] || false; + +if (typeof WebAssembly != "object") { + abort("no native wasm support detected"); +} + +var wasmMemory; + +var ABORT = false; + +var EXITSTATUS; + +function assert(condition, text) { + if (!condition) { + abort(text); + } +} + +var UTF8Decoder = new TextDecoder("utf8"); + +function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; + return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr))); +} + +function UTF8ToString(ptr, maxBytesToRead) { + if (!ptr) return ""; + var maxPtr = ptr + maxBytesToRead; + for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end; + return UTF8Decoder.decode(HEAPU8.subarray(ptr, end)); +} + +function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; +} + +function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); +} + +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i); + if (c <= 127) { + len++; + } else if (c <= 2047) { + len += 2; + } else if (c >= 55296 && c <= 57343) { + len += 4; + ++i; + } else { + len += 3; + } + } + return len; +} + +var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + +function updateMemoryViews() { + var b = wasmMemory.buffer; + Module["HEAP8"] = HEAP8 = new Int8Array(b); + Module["HEAP16"] = HEAP16 = new Int16Array(b); + Module["HEAP32"] = HEAP32 = new Int32Array(b); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); + Module["HEAPF32"] = HEAPF32 = new Float32Array(b); + Module["HEAPF64"] = HEAPF64 = new Float64Array(b); +} + +var wasmTable; + +var __ATPRERUN__ = []; + +var __ATINIT__ = []; + +var __ATMAIN__ = []; + +var __ATEXIT__ = []; + +var __ATPOSTRUN__ = []; + +var runtimeInitialized = false; + +var runtimeExited = false; + +var runtimeKeepaliveCounter = 0; + +function keepRuntimeAlive() { + return noExitRuntime || runtimeKeepaliveCounter > 0; +} + +function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); +} + +function initRuntime() { + runtimeInitialized = true; + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); + FS.ignorePermissions = false; + TTY.init(); + callRuntimeCallbacks(__ATINIT__); +} + +function preMain() { + callRuntimeCallbacks(__ATMAIN__); +} + +function exitRuntime() { + ___funcs_on_exit(); + callRuntimeCallbacks(__ATEXIT__); + FS.quit(); + TTY.shutdown(); + runtimeExited = true; +} + +function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); +} + +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} + +var runDependencies = 0; + +var runDependencyWatcher = null; + +var dependenciesFulfilled = null; + +function getUniqueRunDependency(id) { + return id; +} + +function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } +} + +function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } +} + +function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what = "Aborted(" + what + ")"; + err(what); + ABORT = true; + EXITSTATUS = 1; + what += ". Build with -sASSERTIONS for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; +} + +var dataURIPrefix = "data:application/octet-stream;base64,"; + +function isDataURI(filename) { + return filename.startsWith(dataURIPrefix); +} + +var wasmBinaryFile; + +if (Module["locateFile"]) { + wasmBinaryFile = "tads-core.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } +} else { + wasmBinaryFile = new URL("tads-core.wasm", import.meta.url).href; +} + +function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } + throw "both async and sync fetching of the wasm failed"; + } catch (err) { + abort(err); + } +} + +function getBinaryPromise(binaryFile) { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function(response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + binaryFile + "'"; + } + return response["arrayBuffer"](); + }).catch(function() { + return getBinary(binaryFile); + }); + } + } + return Promise.resolve().then(function() { + return getBinary(binaryFile); + }); +} + +function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile).then(function(binary) { + return WebAssembly.instantiate(binary, imports); + }).then(function(instance) { + return instance; + }).then(receiver, function(reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason); + }); +} + +function instantiateAsync(binary, binaryFile, imports, callback) { + if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(function(response) { + var result = WebAssembly.instantiateStreaming(response, imports); + return result.then(callback, function(reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(binaryFile, imports, callback); + }); + }); + } else { + return instantiateArrayBuffer(binaryFile, imports, callback); + } +} + +function createWasm() { + var info = { + "a": wasmImports + }; + function receiveInstance(instance, module) { + var exports = instance.exports; + exports = Asyncify.instrumentWasmExports(exports); + Module["asm"] = exports; + wasmMemory = Module["asm"]["ha"]; + updateMemoryViews(); + wasmTable = Module["asm"]["qa"]; + addOnInit(Module["asm"]["ia"]); + removeRunDependency("wasm-instantiate"); + return exports; + } + addRunDependency("wasm-instantiate"); + function receiveInstantiationResult(result) { + receiveInstance(result["instance"]); + } + if (Module["instantiateWasm"]) { + try { + return Module["instantiateWasm"](info, receiveInstance); + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + readyPromiseReject(e); + } + } + instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject); + return {}; +} + +var tempDouble; + +var tempI64; + +function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) { + return Asyncify.handleAsync(async () => { + if (!Module.emglken_stdin_buffers.length) { + await new Promise(resolve => { + Module.emglken_stdin_ready = resolve; + }); + } + const input = Module.emglken_stdin_buffers.shift(); + const len = Math.min(input.length, maxlen); + if (len == input.length) { + HEAPU8.set(input, buffer); + } else { + HEAPU8.set(input.subarray(0, len), buffer); + Module.emglken_stdin_buffers.unshift(input.subarray(len)); + } + return len; + }); +} + +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +} + +function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + callbacks.shift()(Module); + } +} + +var PATH = { + isAbs: path => path.charAt(0) === "/", + splitPath: filename => { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + }, + normalizeArray: (parts, allowAboveRoot) => { + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === ".") { + parts.splice(i, 1); + } else if (last === "..") { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + if (allowAboveRoot) { + for (;up; up--) { + parts.unshift(".."); + } + } + return parts; + }, + normalize: path => { + var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === "/"; + path = PATH.normalizeArray(path.split("/").filter(p => !!p), !isAbsolute).join("/"); + if (!path && !isAbsolute) { + path = "."; + } + if (path && trailingSlash) { + path += "/"; + } + return (isAbsolute ? "/" : "") + path; + }, + dirname: path => { + var result = PATH.splitPath(path), root = result[0], dir = result[1]; + if (!root && !dir) { + return "."; + } + if (dir) { + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + }, + basename: path => { + if (path === "/") return "/"; + path = PATH.normalize(path); + path = path.replace(/\/$/, ""); + var lastSlash = path.lastIndexOf("/"); + if (lastSlash === -1) return path; + return path.substr(lastSlash + 1); + }, + join: function() { + var paths = Array.prototype.slice.call(arguments); + return PATH.normalize(paths.join("/")); + }, + join2: (l, r) => { + return PATH.normalize(l + "/" + r); + } +}; + +function getRandomDevice() { + if (typeof crypto == "object" && typeof crypto["getRandomValues"] == "function") { + var randomBuffer = new Uint8Array(1); + return () => { + crypto.getRandomValues(randomBuffer); + return randomBuffer[0]; + }; + } else return () => abort("randomDevice"); +} + +var PATH_FS = { + resolve: function() { + var resolvedPath = "", resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = i >= 0 ? arguments[i] : FS.cwd(); + if (typeof path != "string") { + throw new TypeError("Arguments to path.resolve must be strings"); + } else if (!path) { + return ""; + } + resolvedPath = path + "/" + resolvedPath; + resolvedAbsolute = PATH.isAbs(path); + } + resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter(p => !!p), !resolvedAbsolute).join("/"); + return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; + }, + relative: (from, to) => { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (;start < arr.length; start++) { + if (arr[start] !== "") break; + } + var end = arr.length - 1; + for (;end >= 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 < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push(".."); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join("/"); + } +}; + +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} + +var TTY = { + ttys: [], + init: function() {}, + shutdown: function() {}, + register: function(dev, ops) { + TTY.ttys[dev] = { + input: [], + output: [], + ops: ops + }; + FS.registerDevice(dev, TTY.stream_ops); + }, + stream_ops: { + open: function(stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43); + } + stream.tty = tty; + stream.seekable = false; + }, + close: function(stream) { + stream.tty.ops.fsync(stream.tty); + }, + fsync: function(stream) { + stream.tty.ops.fsync(stream.tty); + }, + read: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60); + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset + i]); + } + } catch (e) { + throw new FS.ErrnoError(29); + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }, + default_tty_ops: { + get_char: function(tty) { + if (!tty.input.length) { + var result = null; + if (typeof window != "undefined" && typeof window.prompt == "function") { + result = window.prompt("Input: "); + if (result !== null) { + result += "\n"; + } + } else if (typeof readline == "function") { + result = readline(); + if (result !== null) { + result += "\n"; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + }, + put_char: function(tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function(tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + }, + default_tty1_ops: { + put_char: function(tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function(tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + } + } +}; + +function mmapAlloc(size) { + abort(); +} + +var MEMFS = { + ops_table: null, + mount: function(mount) { + return MEMFS.createNode(null, "/", 16384 | 511, 0); + }, + createNode: function(parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + throw new FS.ErrnoError(63); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, + stream: { + llseek: MEMFS.stream_ops.llseek + } + }, + file: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: FS.chrdev_stream_ops + } + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + if (parent) { + parent.contents[name] = node; + parent.timestamp = node.timestamp; + } + return node; + }, + getFileDataAsTypedArray: function(node) { + if (!node.contents) return new Uint8Array(0); + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); + return new Uint8Array(node.contents); + }, + expandFileStorage: function(node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); + }, + resizeFileStorage: function(node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; + node.usedBytes = 0; + } else { + var oldContents = node.contents; + node.contents = new Uint8Array(newSize); + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); + } + node.usedBytes = newSize; + } + }, + node_ops: { + getattr: function(node) { + var attr = {}; + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + }, + setattr: function(node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + }, + lookup: function(parent, name) { + throw FS.genericErrors[44]; + }, + mknod: function(parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + }, + rename: function(old_node, new_dir, new_name) { + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) {} + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(55); + } + } + } + delete old_node.parent.contents[old_node.name]; + old_node.parent.timestamp = Date.now(); + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + new_dir.timestamp = old_node.parent.timestamp; + old_node.parent = new_dir; + }, + unlink: function(parent, name) { + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + rmdir: function(parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(55); + } + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + readdir: function(node) { + var entries = [ ".", ".." ]; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + }, + symlink: function(parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); + node.link = oldpath; + return node; + }, + readlink: function(node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(28); + } + return node.link; + } + }, + stream_ops: { + read: function(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + if (size > 8 && contents.subarray) { + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; + } + return size; + }, + write: function(stream, buffer, offset, length, position, canOwn) { + if (buffer.buffer === HEAP8.buffer) { + canOwn = false; + } + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + if (buffer.subarray && (!node.contents || node.contents.subarray)) { + if (canOwn) { + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { + node.contents = buffer.slice(offset, offset + length); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + MEMFS.expandFileStorage(node, position + length); + if (node.contents.subarray && buffer.subarray) { + node.contents.set(buffer.subarray(offset, offset + length), position); + } else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; + } + } + node.usedBytes = Math.max(node.usedBytes, position + length); + return length; + }, + llseek: function(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + }, + allocate: function(stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + }, + mmap: function(stream, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + var ptr; + var allocated; + var contents = stream.node.contents; + if (!(flags & 2) && contents.buffer === HEAP8.buffer) { + allocated = false; + ptr = contents.byteOffset; + } else { + if (position > 0 || position + length < contents.length) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + HEAP8.set(contents, ptr); + } + return { + ptr: ptr, + allocated: allocated + }; + }, + msync: function(stream, buffer, offset, length, mmapFlags) { + MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + return 0; + } + } +}; + +function asyncLoad(url, onload, onerror, noRunDep) { + var dep = !noRunDep ? getUniqueRunDependency("al " + url) : ""; + readAsync(url, arrayBuffer => { + assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); + onload(new Uint8Array(arrayBuffer)); + if (dep) removeRunDependency(dep); + }, event => { + if (onerror) { + onerror(); + } else { + throw 'Loading data file "' + url + '" failed.'; + } + }); + if (dep) addRunDependency(dep); +} + +var FS = { + root: null, + mounts: [], + devices: {}, + streams: [], + nextInode: 1, + nameTable: null, + currentPath: "/", + initialized: false, + ignorePermissions: true, + ErrnoError: null, + genericErrors: {}, + filesystems: null, + syncFSRequests: 0, + lookupPath: (path, opts = {}) => { + path = PATH_FS.resolve(path); + if (!path) return { + path: "", + node: null + }; + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + opts = Object.assign(defaults, opts); + if (opts.recurse_count > 8) { + throw new FS.ErrnoError(32); + } + var parts = path.split("/").filter(p => !!p); + var current = FS.root; + var current_path = "/"; + for (var i = 0; i < parts.length; i++) { + var islast = i === parts.length - 1; + if (islast && opts.parent) { + break; + } + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + if (FS.isMountpoint(current)) { + if (!islast || islast && opts.follow_mount) { + current = current.mounted.root; + } + } + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + var lookup = FS.lookupPath(current_path, { + recurse_count: opts.recurse_count + 1 + }); + current = lookup.node; + if (count++ > 40) { + throw new FS.ErrnoError(32); + } + } + } + } + return { + path: current_path, + node: current + }; + }, + getPath: node => { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path; + } + path = path ? node.name + "/" + path : node.name; + node = node.parent; + } + }, + hashName: (parentid, name) => { + var hash = 0; + for (var i = 0; i < name.length; i++) { + hash = (hash << 5) - hash + name.charCodeAt(i) | 0; + } + return (parentid + hash >>> 0) % FS.nameTable.length; + }, + hashAddNode: node => { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + }, + hashRemoveNode: node => { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + }, + lookupNode: (parent, name) => { + var errCode = FS.mayLookup(parent); + if (errCode) { + throw new FS.ErrnoError(errCode, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + return FS.lookup(parent, name); + }, + createNode: (parent, name, mode, rdev) => { + var node = new FS.FSNode(parent, name, mode, rdev); + FS.hashAddNode(node); + return node; + }, + destroyNode: node => { + FS.hashRemoveNode(node); + }, + isRoot: node => { + return node === node.parent; + }, + isMountpoint: node => { + return !!node.mounted; + }, + isFile: mode => { + return (mode & 61440) === 32768; + }, + isDir: mode => { + return (mode & 61440) === 16384; + }, + isLink: mode => { + return (mode & 61440) === 40960; + }, + isChrdev: mode => { + return (mode & 61440) === 8192; + }, + isBlkdev: mode => { + return (mode & 61440) === 24576; + }, + isFIFO: mode => { + return (mode & 61440) === 4096; + }, + isSocket: mode => { + return (mode & 49152) === 49152; + }, + flagModes: { + "r": 0, + "r+": 2, + "w": 577, + "w+": 578, + "a": 1089, + "a+": 1090 + }, + modeStringToFlags: str => { + var flags = FS.flagModes[str]; + if (typeof flags == "undefined") { + throw new Error("Unknown file open mode: " + str); + } + return flags; + }, + flagsToPermissionString: flag => { + var perms = [ "r", "w", "rw" ][flag & 3]; + if (flag & 512) { + perms += "w"; + } + return perms; + }, + nodePermissions: (node, perms) => { + if (FS.ignorePermissions) { + return 0; + } + if (perms.includes("r") && !(node.mode & 292)) { + return 2; + } else if (perms.includes("w") && !(node.mode & 146)) { + return 2; + } else if (perms.includes("x") && !(node.mode & 73)) { + return 2; + } + return 0; + }, + mayLookup: dir => { + var errCode = FS.nodePermissions(dir, "x"); + if (errCode) return errCode; + if (!dir.node_ops.lookup) return 2; + return 0; + }, + mayCreate: (dir, name) => { + try { + var node = FS.lookupNode(dir, name); + return 20; + } catch (e) {} + return FS.nodePermissions(dir, "wx"); + }, + mayDelete: (dir, name, isdir) => { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var errCode = FS.nodePermissions(dir, "wx"); + if (errCode) { + return errCode; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 54; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 10; + } + } else { + if (FS.isDir(node.mode)) { + return 31; + } + } + return 0; + }, + mayOpen: (node, flags) => { + if (!node) { + return 44; + } + if (FS.isLink(node.mode)) { + return 32; + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { + return 31; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + }, + MAX_OPEN_FDS: 4096, + nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => { + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(33); + }, + getStream: fd => FS.streams[fd], + createStream: (stream, fd_start, fd_end) => { + if (!FS.FSStream) { + FS.FSStream = function() { + this.shared = {}; + }; + FS.FSStream.prototype = {}; + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: function() { + return this.node; + }, + set: function(val) { + this.node = val; + } + }, + isRead: { + get: function() { + return (this.flags & 2097155) !== 1; + } + }, + isWrite: { + get: function() { + return (this.flags & 2097155) !== 0; + } + }, + isAppend: { + get: function() { + return this.flags & 1024; + } + }, + flags: { + get: function() { + return this.shared.flags; + }, + set: function(val) { + this.shared.flags = val; + } + }, + position: { + get: function() { + return this.shared.position; + }, + set: function(val) { + this.shared.position = val; + } + } + }); + } + stream = Object.assign(new FS.FSStream(), stream); + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + }, + closeStream: fd => { + FS.streams[fd] = null; + }, + chrdev_stream_ops: { + open: stream => { + var device = FS.getDevice(stream.node.rdev); + stream.stream_ops = device.stream_ops; + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + }, + llseek: () => { + throw new FS.ErrnoError(70); + } + }, + major: dev => dev >> 8, + minor: dev => dev & 255, + makedev: (ma, mi) => ma << 8 | mi, + registerDevice: (dev, ops) => { + FS.devices[dev] = { + stream_ops: ops + }; + }, + getDevice: dev => FS.devices[dev], + getMounts: mount => { + var mounts = []; + var check = [ mount ]; + while (check.length) { + var m = check.pop(); + mounts.push(m); + check.push.apply(check, m.mounts); + } + return mounts; + }, + syncfs: (populate, callback) => { + if (typeof populate == "function") { + callback = populate; + populate = false; + } + FS.syncFSRequests++; + if (FS.syncFSRequests > 1) { + err("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"); + } + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + function doCallback(errCode) { + FS.syncFSRequests--; + return callback(errCode); + } + function done(errCode) { + if (errCode) { + if (!done.errored) { + done.errored = true; + return doCallback(errCode); + } + return; + } + if (++completed >= mounts.length) { + doCallback(null); + } + } + mounts.forEach(mount => { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + }, + mount: (type, opts, mountpoint) => { + var root = mountpoint === "/"; + var pseudo = !mountpoint; + var node; + if (root && FS.root) { + throw new FS.ErrnoError(10); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + mountpoint = lookup.path; + node = lookup.node; + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + } + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + if (root) { + FS.root = mountRoot; + } else if (node) { + node.mounted = mount; + if (node.mount) { + node.mount.mounts.push(mount); + } + } + return mountRoot; + }, + unmount: mountpoint => { + var lookup = FS.lookupPath(mountpoint, { + follow_mount: false + }); + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(28); + } + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + Object.keys(FS.nameTable).forEach(hash => { + var current = FS.nameTable[hash]; + while (current) { + var next = current.name_next; + if (mounts.includes(current.mount)) { + FS.destroyNode(current); + } + current = next; + } + }); + node.mounted = null; + var idx = node.mount.mounts.indexOf(mount); + node.mount.mounts.splice(idx, 1); + }, + lookup: (parent, name) => { + return parent.node_ops.lookup(parent, name); + }, + mknod: (path, mode, dev) => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === "." || name === "..") { + throw new FS.ErrnoError(28); + } + var errCode = FS.mayCreate(parent, name); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.mknod(parent, name, mode, dev); + }, + create: (path, mode) => { + mode = mode !== undefined ? mode : 438; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + }, + mkdir: (path, mode) => { + mode = mode !== undefined ? mode : 511; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + }, + mkdirTree: (path, mode) => { + var dirs = path.split("/"); + var d = ""; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += "/" + dirs[i]; + 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); + } catch (e) { + throw e; + } finally { + FS.hashAddNode(old_node); + } + }, + rmdir: path => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, true); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + }, + readdir: path => { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(54); + } + return node.node_ops.readdir(node); + }, + unlink: path => { + var lookup = FS.lookupPath(path, { + parent: true + }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, false); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + }, + readlink: path => { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(44); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(28); + } + return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + }, + stat: (path, dontFollow) => { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(44); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(63); + } + return node.node_ops.getattr(node); + }, + lstat: path => { + return FS.stat(path, true); + }, + chmod: (path, mode, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + mode: mode & 4095 | node.mode & ~4095, + timestamp: Date.now() + }); + }, + lchmod: (path, mode) => { + FS.chmod(path, mode, true); + }, + fchmod: (fd, mode) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chmod(stream.node, mode); + }, + chown: (path, uid, gid, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: !dontFollow + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + }); + }, + lchown: (path, uid, gid) => { + FS.chown(path, uid, gid, true); + }, + fchown: (fd, uid, gid) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chown(stream.node, uid, gid); + }, + truncate: (path, len) => { + if (len < 0) { + throw new FS.ErrnoError(28); + } + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { + follow: true + }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(31); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(28); + } + var errCode = FS.nodePermissions(node, "w"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + }, + ftruncate: (fd, len) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(28); + } + FS.truncate(stream.node, len); + }, + utime: (path, atime, mtime) => { + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + }, + open: (path, flags, mode) => { + if (path === "") { + throw new FS.ErrnoError(44); + } + flags = typeof flags == "string" ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode == "undefined" ? 438 : mode; + if (flags & 64) { + mode = mode & 4095 | 32768; + } else { + mode = 0; + } + var node; + if (typeof path == "object") { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 131072) + }); + node = lookup.node; + } catch (e) {} + } + var created = false; + if (flags & 64) { + if (node) { + if (flags & 128) { + throw new FS.ErrnoError(20); + } + } else { + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(44); + } + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + if (flags & 65536 && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + if (!created) { + var errCode = FS.mayOpen(node, flags); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + } + if (flags & 512 && !created) { + FS.truncate(node, 0); + } + flags &= ~(128 | 512 | 131072); + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + ungotten: [], + error: false + }); + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module["logReadFiles"] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + } + } + return stream; + }, + close: stream => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (stream.getdents) stream.getdents = null; + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + stream.fd = null; + }, + isClosed: stream => { + return stream.fd === null; + }, + llseek: (stream, offset, whence) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(70); + } + if (whence != 0 && whence != 1 && whence != 2) { + throw new FS.ErrnoError(28); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + }, + read: (stream, buffer, offset, length, position) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(28); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + }, + write: (stream, buffer, offset, length, position, canOwn) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(28); + } + if (stream.seekable && stream.flags & 1024) { + FS.llseek(stream, 0, 2); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + return bytesWritten; + }, + allocate: (stream, offset, length) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(28); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(138); + } + stream.stream_ops.allocate(stream, offset, length); + }, + mmap: (stream, length, position, prot, flags) => { + if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) { + throw new FS.ErrnoError(2); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(2); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(43); + } + return stream.stream_ops.mmap(stream, length, position, prot, flags); + }, + msync: (stream, buffer, offset, length, mmapFlags) => { + if (!stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + }, + munmap: stream => 0, + ioctl: (stream, cmd, arg) => { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + }, + readFile: (path, opts = {}) => { + opts.flags = opts.flags || 0; + opts.encoding = opts.encoding || "binary"; + if (opts.encoding !== "utf8" && opts.encoding !== "binary") { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === "utf8") { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === "binary") { + ret = buf; + } + FS.close(stream); + return ret; + }, + writeFile: (path, data, opts = {}) => { + opts.flags = opts.flags || 577; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data == "string") { + var buf = new Uint8Array(lengthBytesUTF8(data) + 1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); + } else { + throw new Error("Unsupported data type"); + } + FS.close(stream); + }, + cwd: () => FS.currentPath, + chdir: path => { + var lookup = FS.lookupPath(path, { + follow: true + }); + if (lookup.node === null) { + throw new FS.ErrnoError(44); + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(54); + } + var errCode = FS.nodePermissions(lookup.node, "x"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + FS.currentPath = lookup.path; + }, + createDefaultDirectories: () => { + FS.mkdir("/tmp"); + FS.mkdir("/home"); + FS.mkdir("/home/web_user"); + }, + createDefaultDevices: () => { + FS.mkdir("/dev"); + FS.registerDevice(FS.makedev(1, 3), { + read: () => 0, + write: (stream, buffer, offset, length, pos) => length + }); + FS.mkdev("/dev/null", FS.makedev(1, 3)); + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev("/dev/tty", FS.makedev(5, 0)); + FS.mkdev("/dev/tty1", FS.makedev(6, 0)); + var random_device = getRandomDevice(); + FS.createDevice("/dev", "random", random_device); + FS.createDevice("/dev", "urandom", random_device); + FS.mkdir("/dev/shm"); + FS.mkdir("/dev/shm/tmp"); + }, + createSpecialDirectories: () => { + FS.mkdir("/proc"); + var proc_self = FS.mkdir("/proc/self"); + FS.mkdir("/proc/self/fd"); + FS.mount({ + mount: () => { + var node = FS.createNode(proc_self, "fd", 16384 | 511, 73); + node.node_ops = { + lookup: (parent, name) => { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + var ret = { + parent: null, + mount: { + mountpoint: "fake" + }, + node_ops: { + readlink: () => stream.path + } + }; + ret.parent = ret; + return ret; + } + }; + return node; + } + }, {}, "/proc/self/fd"); + }, + createStandardStreams: () => { + if (Module["stdin"]) { + FS.createDevice("/dev", "stdin", Module["stdin"]); + } else { + FS.symlink("/dev/tty", "/dev/stdin"); + } + if (Module["stdout"]) { + FS.createDevice("/dev", "stdout", null, Module["stdout"]); + } else { + FS.symlink("/dev/tty", "/dev/stdout"); + } + if (Module["stderr"]) { + FS.createDevice("/dev", "stderr", null, Module["stderr"]); + } else { + FS.symlink("/dev/tty1", "/dev/stderr"); + } + var stdin = FS.open("/dev/stdin", 0); + var stdout = FS.open("/dev/stdout", 1); + var stderr = FS.open("/dev/stderr", 1); + }, + ensureErrnoError: () => { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + this.name = "ErrnoError"; + this.node = node; + this.setErrno = function(errno) { + this.errno = errno; + }; + this.setErrno(errno); + this.message = "FS error"; + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + [ 44 ].forEach(code => { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = ""; + }); + }, + staticInit: () => { + FS.ensureErrnoError(); + FS.nameTable = new Array(4096); + FS.mount(MEMFS, {}, "/"); + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + FS.filesystems = { + "MEMFS": MEMFS + }; + }, + init: (input, output, error) => { + FS.init.initialized = true; + FS.ensureErrnoError(); + Module["stdin"] = input || Module["stdin"]; + Module["stdout"] = output || Module["stdout"]; + Module["stderr"] = error || Module["stderr"]; + FS.createStandardStreams(); + }, + quit: () => { + FS.init.initialized = false; + _fflush(0); + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + }, + getMode: (canRead, canWrite) => { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + }, + 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) {} + parent = current; + } + return current; + }, + createFile: (parent, name, properties, canRead, canWrite) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + }, + createDataFile: (parent, name, data, canRead, canWrite, canOwn) => { + var path = name; + if (parent) { + parent = typeof parent == "string" ? parent : FS.getPath(parent); + path = name ? PATH.join2(parent, name) : parent; + } + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data == "string") { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + 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); + } + return node; + }, + createDevice: (parent, name, input, output) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + FS.registerDevice(dev, { + open: stream => { + stream.seekable = false; + }, + close: stream => { + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: (stream, buffer, offset, length, pos) => { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: (stream, buffer, offset, length, pos) => { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset + i]); + } catch (e) { + throw new FS.ErrnoError(29); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + }, + forceLoadFile: obj => { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + if (typeof XMLHttpRequest != "undefined") { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (read_) { + try { + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + throw new FS.ErrnoError(29); + } + } else { + throw new Error("Cannot load without read() or XMLHttpRequest."); + } + }, + createLazyFile: (parent, name, url, canRead, canWrite) => { + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; + } + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length - 1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = idx / this.chunkSize | 0; + return this.getter(chunkNum)[chunkOffset]; + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + var xhr = new XMLHttpRequest(); + xhr.open("HEAD", url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + var chunkSize = 1024 * 1024; + if (!hasByteServing) chunkSize = datalength; + var doXHR = (from, to) => { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!"); + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + xhr.responseType = "arraybuffer"; + if (xhr.overrideMimeType) { + xhr.overrideMimeType("text/plain; charset=x-user-defined"); + } + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } + return intArrayFromString(xhr.responseText || "", true); + }; + var lazyArray = this; + lazyArray.setDataGetter(chunkNum => { + var start = chunkNum * chunkSize; + var end = (chunkNum + 1) * chunkSize - 1; + end = Math.min(end, datalength - 1); + if (typeof lazyArray.chunks[chunkNum] == "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof lazyArray.chunks[chunkNum] == "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + if (usesGzip || !datalength) { + chunkSize = datalength = 1; + datalength = this.getter(0).length; + chunkSize = datalength; + out("LazyFiles on gzip forces download of the whole file when length is accessed"); + } + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + }; + if (typeof XMLHttpRequest != "undefined") { + if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; + var lazyArray = new LazyUint8Array(); + Object.defineProperties(lazyArray, { + length: { + get: function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }, + chunkSize: { + get: function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + } + }); + var properties = { + isDevice: false, + contents: lazyArray + }; + } else { + var properties = { + isDevice: false, + url: url + }; + } + var node = FS.createFile(parent, name, properties, canRead, canWrite); + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + Object.defineProperties(node, { + usedBytes: { + get: function() { + return this.contents.length; + } + } + }); + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(key => { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + FS.forceLoadFile(node); + return fn.apply(null, arguments); + }; + }); + function writeChunks(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= contents.length) return 0; + var size = Math.min(contents.length - position, length); + if (contents.slice) { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents.get(position + i); + } + } + return size; + } + stream_ops.read = (stream, buffer, offset, length, position) => { + FS.forceLoadFile(node); + return writeChunks(stream, buffer, offset, length, position); + }; + stream_ops.mmap = (stream, length, position, prot, flags) => { + FS.forceLoadFile(node); + var ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + writeChunks(stream, HEAP8, ptr, length, position); + return { + ptr: ptr, + allocated: true + }; + }; + node.stream_ops = stream_ops; + return node; + }, + createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => { + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency("cp " + fullname); + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => { + if (onerror) onerror(); + removeRunDependency(dep); + })) { + return; + } + finish(byteArray); + } + addRunDependency(dep); + if (typeof url == "string") { + asyncLoad(url, byteArray => processData(byteArray), onerror); + } else { + processData(url); + } + }, + indexedDB: () => { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + }, + DB_NAME: () => { + return "EM_FS_" + window.location.pathname; + }, + DB_VERSION: 20, + DB_STORE_NAME: "FILE_DATA", + saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => { + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = () => { + out("creating db"); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = () => { + var db = openRequest.result; + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readwrite"); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(path => { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = () => { + ok++; + if (ok + fail == total) finish(); + }; + putRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }, + loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => { + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; + openRequest.onsuccess = () => { + var db = openRequest.result; + try { + var transaction = db.transaction([ FS.DB_STORE_NAME ], "readonly"); + } catch (e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(path => { + var getRequest = files.get(path); + getRequest.onsuccess = () => { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + } +}; + +var SYSCALLS = { + DEFAULT_POLLMASK: 5, + calculateAt: function(dirfd, path, allowEmpty) { + if (PATH.isAbs(path)) { + return path; + } + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = SYSCALLS.getStreamFromFD(dirfd); + dir = dirstream.path; + } + if (path.length == 0) { + if (!allowEmpty) { + throw new FS.ErrnoError(44); + } + return dir; + } + return PATH.join2(dir, path); + }, + doStat: function(func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + return -54; + } + throw e; + } + HEAP32[buf >> 2] = stat.dev; + HEAP32[buf + 8 >> 2] = stat.ino; + HEAP32[buf + 12 >> 2] = stat.mode; + HEAPU32[buf + 16 >> 2] = stat.nlink; + HEAP32[buf + 20 >> 2] = stat.uid; + HEAP32[buf + 24 >> 2] = stat.gid; + HEAP32[buf + 28 >> 2] = stat.rdev; + tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1]; + HEAP32[buf + 48 >> 2] = 4096; + HEAP32[buf + 52 >> 2] = stat.blocks; + var atime = stat.atime.getTime(); + var mtime = stat.mtime.getTime(); + var ctime = stat.ctime.getTime(); + tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1]; + HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3; + tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1]; + HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3; + tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1]; + HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3; + tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1]; + return 0; + }, + doMsync: function(addr, stream, len, flags, offset) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (flags & 2) { + return 0; + } + var buffer = HEAPU8.slice(addr, addr + len); + FS.msync(stream, buffer, offset, len, flags); + }, + varargs: undefined, + get: function() { + SYSCALLS.varargs += 4; + var ret = HEAP32[SYSCALLS.varargs - 4 >> 2]; + return ret; + }, + getStr: function(ptr) { + var ret = UTF8ToString(ptr); + return ret; + }, + getStreamFromFD: function(fd) { + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + return stream; + } +}; + +function ___syscall_dup(fd) { + try { + var old = SYSCALLS.getStreamFromFD(fd); + return FS.createStream(old, 0).fd; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_faccessat(dirfd, path, amode, flags) { + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + if (amode & ~7) { + return -28; + } + var lookup = FS.lookupPath(path, { + follow: true + }); + var node = lookup.node; + if (!node) { + return -44; + } + var perms = ""; + if (amode & 4) perms += "r"; + if (amode & 2) perms += "w"; + if (amode & 1) perms += "x"; + if (perms && FS.nodePermissions(node, perms)) { + return -2; + } + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function setErrNo(value) { + HEAP32[___errno_location() >> 2] = value; + return value; +} + +function ___syscall_fcntl64(fd, cmd, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (cmd) { + case 0: + { + var arg = SYSCALLS.get(); + if (arg < 0) { + return -28; + } + var newStream; + newStream = FS.createStream(stream, arg); + return newStream.fd; + } + + case 1: + case 2: + return 0; + + case 3: + return stream.flags; + + case 4: + { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0; + } + + case 5: + { + var arg = SYSCALLS.get(); + var offset = 0; + HEAP16[arg + offset >> 1] = 2; + return 0; + } + + case 6: + case 7: + return 0; + + case 16: + case 8: + return -28; + + case 9: + setErrNo(28); + return -1; + + default: + { + return -28; + } + } + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_getcwd(buf, size) { + try { + if (size === 0) return -28; + var cwd = FS.cwd(); + var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1; + if (size < cwdLengthInBytes) return -68; + stringToUTF8(cwd, buf, size); + return cwdLengthInBytes; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_getdents64(fd, dirp, count) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + if (!stream.getdents) { + stream.getdents = FS.readdir(stream.path); + } + var struct_size = 280; + var pos = 0; + var off = FS.llseek(stream, 0, 1); + var idx = Math.floor(off / struct_size); + while (idx < stream.getdents.length && pos + struct_size <= count) { + var id; + var type; + var name = stream.getdents[idx]; + if (name === ".") { + id = stream.node.id; + type = 4; + } else if (name === "..") { + var lookup = FS.lookupPath(stream.path, { + parent: true + }); + id = lookup.node.id; + type = 4; + } else { + var child = FS.lookupNode(stream.node, name); + id = child.id; + type = FS.isChrdev(child.mode) ? 2 : FS.isDir(child.mode) ? 4 : FS.isLink(child.mode) ? 10 : 8; + } + tempI64 = [ id >>> 0, (tempDouble = id, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[dirp + pos >> 2] = tempI64[0], HEAP32[dirp + pos + 4 >> 2] = tempI64[1]; + tempI64 = [ (idx + 1) * struct_size >>> 0, (tempDouble = (idx + 1) * struct_size, + +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[dirp + pos + 8 >> 2] = tempI64[0], HEAP32[dirp + pos + 12 >> 2] = tempI64[1]; + HEAP16[dirp + pos + 16 >> 1] = 280; + HEAP8[dirp + pos + 18 >> 0] = type; + stringToUTF8(name, dirp + pos + 19, 256); + pos += struct_size; + idx += 1; + } + FS.llseek(stream, idx * struct_size, 0); + return pos; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_ioctl(fd, op, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (op) { + case 21509: + case 21505: + { + if (!stream.tty) return -59; + return 0; + } + + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: + { + if (!stream.tty) return -59; + return 0; + } + + case 21519: + { + if (!stream.tty) return -59; + var argp = SYSCALLS.get(); + HEAP32[argp >> 2] = 0; + return 0; + } + + case 21520: + { + if (!stream.tty) return -59; + return -28; + } + + case 21531: + { + var argp = SYSCALLS.get(); + return FS.ioctl(stream, op, argp); + } + + case 21523: + { + if (!stream.tty) return -59; + return 0; + } + + case 21524: + { + if (!stream.tty) return -59; + return 0; + } + + default: + return -28; + } + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_lstat64(path, buf) { + try { + path = SYSCALLS.getStr(path); + return SYSCALLS.doStat(FS.lstat, path, buf); + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_mkdirat(dirfd, path, mode) { + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + path = PATH.normalize(path); + if (path[path.length - 1] === "/") path = path.substr(0, path.length - 1); + FS.mkdir(path, mode, 0); + return 0; + } 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.doStat(nofollow ? FS.lstat : FS.stat, path, buf); + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_openat(dirfd, path, flags, varargs) { + SYSCALLS.varargs = varargs; + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + var mode = varargs ? SYSCALLS.get() : 0; + return FS.open(path, flags, mode).fd; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +function ___syscall_readlinkat(dirfd, path, buf, bufsize) { + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + if (bufsize <= 0) return -28; + var ret = FS.readlink(path); + var len = Math.min(bufsize, lengthBytesUTF8(ret)); + var endChar = HEAP8[buf + len]; + stringToUTF8(ret, buf, bufsize + 1); + HEAP8[buf + len] = endChar; + return len; + } 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_rmdir(path) { + try { + path = SYSCALLS.getStr(path); + FS.rmdir(path); + return 0; + } 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.doStat(FS.stat, path, buf); + } 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 === 0) { + FS.unlink(path); + } else if (flags === 512) { + FS.rmdir(path); + } else { + abort("Invalid flags passed to unlinkat"); + } + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return -e.errno; + } +} + +var nowIsMonotonic = true; + +function __emscripten_get_now_is_monotonic() { + return nowIsMonotonic; +} + +function __emscripten_throw_longjmp() { + throw Infinity; +} + +function readI53FromI64(ptr) { + return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296; +} + +function __gmtime_js(time, tmPtr) { + var date = new Date(readI53FromI64(time) * 1e3); + HEAP32[tmPtr >> 2] = date.getUTCSeconds(); + HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes(); + HEAP32[tmPtr + 8 >> 2] = date.getUTCHours(); + HEAP32[tmPtr + 12 >> 2] = date.getUTCDate(); + HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth(); + HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900; + HEAP32[tmPtr + 24 >> 2] = date.getUTCDay(); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; +} + +function __isLeapYear(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +} + +var __MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ]; + +var __MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ]; + +function __yday_from_date(date) { + var isLeapYear = __isLeapYear(date.getFullYear()); + var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE; + var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1; + return yday; +} + +function __localtime_js(time, tmPtr) { + var date = new Date(readI53FromI64(time) * 1e3); + HEAP32[tmPtr >> 2] = date.getSeconds(); + HEAP32[tmPtr + 4 >> 2] = date.getMinutes(); + HEAP32[tmPtr + 8 >> 2] = date.getHours(); + HEAP32[tmPtr + 12 >> 2] = date.getDate(); + HEAP32[tmPtr + 16 >> 2] = date.getMonth(); + HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900; + HEAP32[tmPtr + 24 >> 2] = date.getDay(); + var yday = __yday_from_date(date) | 0; + HEAP32[tmPtr + 28 >> 2] = yday; + HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60); + var start = new Date(date.getFullYear(), 0, 1); + var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); + var winterOffset = start.getTimezoneOffset(); + var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0; + HEAP32[tmPtr + 32 >> 2] = dst; +} + +function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +function __tzset_js(timezone, daylight, tzname) { + var currentYear = new Date().getFullYear(); + var winter = new Date(currentYear, 0, 1); + var summer = new Date(currentYear, 6, 1); + var winterOffset = winter.getTimezoneOffset(); + var summerOffset = summer.getTimezoneOffset(); + var stdTimezoneOffset = Math.max(winterOffset, summerOffset); + HEAPU32[timezone >> 2] = stdTimezoneOffset * 60; + HEAP32[daylight >> 2] = Number(winterOffset != summerOffset); + function extractZone(date) { + var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); + return match ? match[1] : "GMT"; + } + var winterName = extractZone(winter); + var summerName = extractZone(summer); + var winterNamePtr = allocateUTF8(winterName); + var summerNamePtr = allocateUTF8(summerName); + if (summerOffset < winterOffset) { + HEAPU32[tzname >> 2] = winterNamePtr; + HEAPU32[tzname + 4 >> 2] = summerNamePtr; + } else { + HEAPU32[tzname >> 2] = summerNamePtr; + HEAPU32[tzname + 4 >> 2] = winterNamePtr; + } +} + +function _abort() { + abort(""); +} + +function _emscripten_date_now() { + return Date.now(); +} + +var _emscripten_get_now; + +_emscripten_get_now = () => performance.now(); + +function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); +} + +function getHeapMax() { + return 2147483648; +} + +function emscripten_realloc_buffer(size) { + var b = wasmMemory.buffer; + try { + wasmMemory.grow(size - b.byteLength + 65535 >>> 16); + updateMemoryViews(); + return 1; + } catch (e) {} +} + +function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + var maxHeapSize = getHeapMax(); + if (requestedSize > maxHeapSize) { + return false; + } + let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple; + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + .2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; +} + +var ENV = {}; + +function getExecutableName() { + return thisProgram || "./this.program"; +} + +function getEnvStrings() { + if (!getEnvStrings.strings) { + var lang = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8"; + var env = { + "USER": "web_user", + "LOGNAME": "web_user", + "PATH": "/", + "PWD": "/", + "HOME": "/home/web_user", + "LANG": lang, + "_": getExecutableName() + }; + for (var x in ENV) { + if (ENV[x] === undefined) delete env[x]; else env[x] = ENV[x]; + } + var strings = []; + for (var x in env) { + strings.push(x + "=" + env[x]); + } + getEnvStrings.strings = strings; + } + return getEnvStrings.strings; +} + +function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + HEAP8[buffer++ >> 0] = str.charCodeAt(i); + } + if (!dontAddNull) HEAP8[buffer >> 0] = 0; +} + +function _environ_get(__environ, environ_buf) { + var bufSize = 0; + getEnvStrings().forEach(function(string, i) { + var ptr = environ_buf + bufSize; + HEAPU32[__environ + i * 4 >> 2] = ptr; + writeAsciiToMemory(string, ptr); + bufSize += string.length + 1; + }); + return 0; +} + +function _environ_sizes_get(penviron_count, penviron_buf_size) { + var strings = getEnvStrings(); + HEAPU32[penviron_count >> 2] = strings.length; + var bufSize = 0; + strings.forEach(function(string) { + bufSize += string.length + 1; + }); + HEAPU32[penviron_buf_size >> 2] = bufSize; + return 0; +} + +function _proc_exit(code) { + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + if (Module["onExit"]) Module["onExit"](code); + ABORT = true; + } + quit_(code, new ExitStatus(code)); +} + +function exitJS(status, implicit) { + EXITSTATUS = status; + if (!keepRuntimeAlive()) { + exitRuntime(); + } + _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 doReadv(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 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 < len) break; + if (typeof offset !== "undefined") { + offset += curr; + } + } + return ret; +} + +function _fd_read(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doReadv(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function convertI32PairToI53Checked(lo, hi) { + return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN; +} + +function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + try { + var offset = convertI32PairToI53Checked(offset_low, offset_high); + if (isNaN(offset)) return 61; + var stream = SYSCALLS.getStreamFromFD(fd); + FS.llseek(stream, offset, whence); + tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1]; + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function doWritev(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[iov + 4 >> 2]; + iov += 8; + var curr = FS.write(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (typeof offset !== "undefined") { + offset += curr; + } + } + return ret; +} + +function _fd_write(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doWritev(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; + return e.errno; + } +} + +function __arraySum(array, index) { + var sum = 0; + for (var i = 0; i <= index; sum += array[i++]) {} + return sum; +} + +var __MONTH_DAYS_LEAP = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; + +var __MONTH_DAYS_REGULAR = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; + +function __addDays(date, days) { + var newDate = new Date(date.getTime()); + while (days > 0) { + var leap = __isLeapYear(newDate.getFullYear()); + var currentMonth = newDate.getMonth(); + var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth]; + if (days > daysInCurrentMonth - newDate.getDate()) { + days -= daysInCurrentMonth - newDate.getDate() + 1; + newDate.setDate(1); + if (currentMonth < 11) { + newDate.setMonth(currentMonth + 1); + } else { + newDate.setMonth(0); + newDate.setFullYear(newDate.getFullYear() + 1); + } + } else { + newDate.setDate(newDate.getDate() + days); + return newDate; + } + } + return newDate; +} + +function writeArrayToMemory(array, buffer) { + HEAP8.set(array, buffer); +} + +function _strftime(s, maxsize, format, tm) { + var tm_zone = HEAP32[tm + 40 >> 2]; + var date = { + tm_sec: HEAP32[tm >> 2], + tm_min: HEAP32[tm + 4 >> 2], + tm_hour: HEAP32[tm + 8 >> 2], + tm_mday: HEAP32[tm + 12 >> 2], + tm_mon: HEAP32[tm + 16 >> 2], + tm_year: HEAP32[tm + 20 >> 2], + tm_wday: HEAP32[tm + 24 >> 2], + tm_yday: HEAP32[tm + 28 >> 2], + tm_isdst: HEAP32[tm + 32 >> 2], + tm_gmtoff: HEAP32[tm + 36 >> 2], + tm_zone: tm_zone ? UTF8ToString(tm_zone) : "" + }; + var pattern = UTF8ToString(format); + var EXPANSION_RULES_1 = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var rule in EXPANSION_RULES_1) { + pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule]); + } + var WEEKDAYS = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]; + var MONTHS = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; + function leadingSomething(value, digits, character) { + var str = typeof value == "number" ? value.toString() : value || ""; + while (str.length < digits) { + str = character[0] + str; + } + return str; + } + function leadingNulls(value, digits) { + return leadingSomething(value, digits, "0"); + } + function compareByDay(date1, date2) { + function sgn(value) { + return value < 0 ? -1 : value > 0 ? 1 : 0; + } + var compare; + if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) { + if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) { + compare = sgn(date1.getDate() - date2.getDate()); + } + } + return compare; + } + function getFirstWeekStartDate(janFourth) { + switch (janFourth.getDay()) { + case 0: + return new Date(janFourth.getFullYear() - 1, 11, 29); + + case 1: + return janFourth; + + case 2: + return new Date(janFourth.getFullYear(), 0, 3); + + case 3: + return new Date(janFourth.getFullYear(), 0, 2); + + case 4: + return new Date(janFourth.getFullYear(), 0, 1); + + case 5: + return new Date(janFourth.getFullYear() - 1, 11, 31); + + case 6: + return new Date(janFourth.getFullYear() - 1, 11, 30); + } + } + function getWeekBasedYear(date) { + var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday); + var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4); + var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4); + var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); + var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); + if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) { + if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) { + return thisDate.getFullYear() + 1; + } + return thisDate.getFullYear(); + } + return thisDate.getFullYear() - 1; + } + var EXPANSION_RULES_2 = { + "%a": function(date) { + return WEEKDAYS[date.tm_wday].substring(0, 3); + }, + "%A": function(date) { + return WEEKDAYS[date.tm_wday]; + }, + "%b": function(date) { + return MONTHS[date.tm_mon].substring(0, 3); + }, + "%B": function(date) { + return MONTHS[date.tm_mon]; + }, + "%C": function(date) { + var year = date.tm_year + 1900; + return leadingNulls(year / 100 | 0, 2); + }, + "%d": function(date) { + return leadingNulls(date.tm_mday, 2); + }, + "%e": function(date) { + return leadingSomething(date.tm_mday, 2, " "); + }, + "%g": function(date) { + return getWeekBasedYear(date).toString().substring(2); + }, + "%G": function(date) { + return getWeekBasedYear(date); + }, + "%H": function(date) { + return leadingNulls(date.tm_hour, 2); + }, + "%I": function(date) { + var twelveHour = date.tm_hour; + if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12; + return leadingNulls(twelveHour, 2); + }, + "%j": function(date) { + return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3); + }, + "%m": function(date) { + return leadingNulls(date.tm_mon + 1, 2); + }, + "%M": function(date) { + return leadingNulls(date.tm_min, 2); + }, + "%n": function() { + return "\n"; + }, + "%p": function(date) { + if (date.tm_hour >= 0 && date.tm_hour < 12) { + return "AM"; + } + return "PM"; + }, + "%S": function(date) { + return leadingNulls(date.tm_sec, 2); + }, + "%t": function() { + return "\t"; + }, + "%u": function(date) { + return date.tm_wday || 7; + }, + "%U": function(date) { + var days = date.tm_yday + 7 - date.tm_wday; + return leadingNulls(Math.floor(days / 7), 2); + }, + "%V": function(date) { + var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7); + if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) { + val++; + } + if (!val) { + val = 52; + var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7; + if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) { + val++; + } + } else if (val == 53) { + var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7; + if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1; + } + return leadingNulls(val, 2); + }, + "%w": function(date) { + return date.tm_wday; + }, + "%W": function(date) { + var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7; + return leadingNulls(Math.floor(days / 7), 2); + }, + "%y": function(date) { + return (date.tm_year + 1900).toString().substring(2); + }, + "%Y": function(date) { + return date.tm_year + 1900; + }, + "%z": function(date) { + var off = date.tm_gmtoff; + var ahead = off >= 0; + off = Math.abs(off) / 60; + off = off / 60 * 100 + off % 60; + return (ahead ? "+" : "-") + String("0000" + off).slice(-4); + }, + "%Z": function(date) { + return date.tm_zone; + }, + "%%": function() { + return "%"; + } + }; + pattern = pattern.replace(/%%/g, "\0\0"); + for (var rule in EXPANSION_RULES_2) { + if (pattern.includes(rule)) { + pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date)); + } + } + pattern = pattern.replace(/\0\0/g, "%"); + var bytes = intArrayFromString(pattern, false); + if (bytes.length > maxsize) { + return 0; + } + writeArrayToMemory(bytes, s); + return bytes.length - 1; +} + +function handleException(e) { + if (e instanceof ExitStatus || e == "unwind") { + return EXITSTATUS; + } + quit_(1, e); +} + +function allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +function runAndAbortIfError(func) { + try { + return func(); + } catch (e) { + abort(e); + } +} + +function maybeExit() { + if (!keepRuntimeAlive()) { + try { + _exit(EXITSTATUS); + } catch (e) { + handleException(e); + } + } +} + +function callUserCallback(func) { + if (runtimeExited || ABORT) { + return; + } + try { + func(); + maybeExit(); + } catch (e) { + handleException(e); + } +} + +function runtimeKeepalivePush() { + runtimeKeepaliveCounter += 1; +} + +function runtimeKeepalivePop() { + runtimeKeepaliveCounter -= 1; +} + +var Asyncify = { + instrumentWasmImports: function(imports) { + var ASYNCIFY_IMPORTS = [ "invoke_*", "emscripten_sleep", "emscripten_wget", "emscripten_wget_data", "emscripten_idb_load", "emscripten_idb_store", "emscripten_idb_delete", "emscripten_idb_exists", "emscripten_idb_load_blob", "emscripten_idb_store_blob", "SDL_Delay", "emscripten_scan_registers", "emscripten_lazy_load_code", "emscripten_fiber_swap", "__load_secondary_module", "fd_sync", "__wasi_fd_sync", "_emval_await", "_dlopen_js", "__asyncjs__*" ]; + for (var x in imports) { + (function(x) { + var original = imports[x]; + var sig = original.sig; + if (typeof original == "function") { + var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith("__asyncjs__"); + } + })(x); + } + }, + instrumentWasmExports: function(exports) { + var ret = {}; + for (var x in exports) { + (function(x) { + var original = exports[x]; + if (typeof original == "function") { + ret[x] = function() { + Asyncify.exportCallStack.push(x); + try { + return original.apply(null, arguments); + } finally { + if (!ABORT) { + var y = Asyncify.exportCallStack.pop(); + assert(y === x); + Asyncify.maybeStopUnwind(); + } + } + }; + } else { + ret[x] = original; + } + })(x); + } + return ret; + }, + State: { + Normal: 0, + Unwinding: 1, + Rewinding: 2, + Disabled: 3 + }, + state: 0, + StackSize: 8192, + currData: null, + handleSleepReturnValue: 0, + exportCallStack: [], + callStackNameToId: {}, + callStackIdToName: {}, + callStackId: 0, + asyncPromiseHandlers: null, + sleepCallbacks: [], + getCallStackId: function(funcName) { + var id = Asyncify.callStackNameToId[funcName]; + if (id === undefined) { + id = Asyncify.callStackId++; + Asyncify.callStackNameToId[funcName] = id; + Asyncify.callStackIdToName[id] = funcName; + } + return id; + }, + maybeStopUnwind: function() { + if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) { + Asyncify.state = Asyncify.State.Normal; + runtimeKeepalivePush(); + runAndAbortIfError(_asyncify_stop_unwind); + if (typeof Fibers != "undefined") { + Fibers.trampoline(); + } + } + }, + whenDone: function() { + return new Promise((resolve, reject) => { + Asyncify.asyncPromiseHandlers = { + resolve: resolve, + reject: reject + }; + }); + }, + allocateData: function() { + var ptr = _malloc(12 + Asyncify.StackSize); + Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize); + Asyncify.setDataRewindFunc(ptr); + return ptr; + }, + setDataHeader: function(ptr, stack, stackSize) { + HEAP32[ptr >> 2] = stack; + HEAP32[ptr + 4 >> 2] = stack + stackSize; + }, + setDataRewindFunc: function(ptr) { + var bottomOfCallStack = Asyncify.exportCallStack[0]; + var rewindId = Asyncify.getCallStackId(bottomOfCallStack); + HEAP32[ptr + 8 >> 2] = rewindId; + }, + getDataRewindFunc: function(ptr) { + var id = HEAP32[ptr + 8 >> 2]; + var name = Asyncify.callStackIdToName[id]; + var func = Module["asm"][name]; + return func; + }, + doRewind: function(ptr) { + var start = Asyncify.getDataRewindFunc(ptr); + runtimeKeepalivePop(); + return start(); + }, + handleSleep: function(startAsync) { + if (ABORT) return; + if (Asyncify.state === Asyncify.State.Normal) { + var reachedCallback = false; + var reachedAfterCallback = false; + startAsync((handleSleepReturnValue = 0) => { + if (ABORT) return; + Asyncify.handleSleepReturnValue = handleSleepReturnValue; + reachedCallback = true; + if (!reachedAfterCallback) { + return; + } + Asyncify.state = Asyncify.State.Rewinding; + runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData)); + if (typeof Browser != "undefined" && Browser.mainLoop.func) { + Browser.mainLoop.resume(); + } + var asyncWasmReturnValue, isError = false; + try { + asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData); + } catch (err) { + asyncWasmReturnValue = err; + isError = true; + } + var handled = false; + if (!Asyncify.currData) { + var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers; + if (asyncPromiseHandlers) { + Asyncify.asyncPromiseHandlers = null; + (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue); + handled = true; + } + } + if (isError && !handled) { + throw asyncWasmReturnValue; + } + }); + reachedAfterCallback = true; + if (!reachedCallback) { + Asyncify.state = Asyncify.State.Unwinding; + Asyncify.currData = Asyncify.allocateData(); + if (typeof Browser != "undefined" && Browser.mainLoop.func) { + Browser.mainLoop.pause(); + } + runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData)); + } + } else if (Asyncify.state === Asyncify.State.Rewinding) { + Asyncify.state = Asyncify.State.Normal; + runAndAbortIfError(_asyncify_stop_rewind); + _free(Asyncify.currData); + Asyncify.currData = null; + Asyncify.sleepCallbacks.forEach(func => callUserCallback(func)); + } else { + abort("invalid state: " + Asyncify.state); + } + return Asyncify.handleSleepReturnValue; + }, + handleAsync: function(startAsync) { + return Asyncify.handleSleep(wakeUp => { + startAsync().then(wakeUp); + }); + } +}; + +function AsciiToString(ptr) { + var str = ""; + while (1) { + var ch = HEAPU8[ptr++ >> 0]; + if (!ch) return str; + str += String.fromCharCode(ch); + } +} + +var FSNode = function(parent, name, mode, rdev) { + if (!parent) { + parent = this; + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; +}; + +var readMode = 292 | 73; + +var writeMode = 146; + +Object.defineProperties(FSNode.prototype, { + read: { + get: function() { + return (this.mode & readMode) === readMode; + }, + set: function(val) { + val ? this.mode |= readMode : this.mode &= ~readMode; + } + }, + write: { + get: function() { + return (this.mode & writeMode) === writeMode; + }, + set: function(val) { + val ? this.mode |= writeMode : this.mode &= ~writeMode; + } + }, + isFolder: { + get: function() { + return FS.isDir(this.mode); + } + }, + isDevice: { + get: function() { + return FS.isChrdev(this.mode); + } + } +}); + +FS.FSNode = FSNode; + +FS.staticInit(); + +var wasmImports = { + "O": __asyncjs__emglken_fill_stdin_buffer, + "ga": ___syscall_dup, + "fa": ___syscall_faccessat, + "G": ___syscall_fcntl64, + "ea": ___syscall_getcwd, + "da": ___syscall_getdents64, + "ca": ___syscall_ioctl, + "ba": ___syscall_lstat64, + "aa": ___syscall_mkdirat, + "$": ___syscall_newfstatat, + "F": ___syscall_openat, + "_": ___syscall_readlinkat, + "Z": ___syscall_renameat, + "E": ___syscall_rmdir, + "Y": ___syscall_stat64, + "X": ___syscall_unlinkat, + "T": __emscripten_get_now_is_monotonic, + "S": __emscripten_throw_longjmp, + "R": __gmtime_js, + "Q": __localtime_js, + "P": __tzset_js, + "C": _abort, + "B": _emscripten_date_now, + "A": _emscripten_get_now, + "N": _emscripten_memcpy_big, + "M": _emscripten_resize_heap, + "W": _environ_get, + "V": _environ_sizes_get, + "y": _exit, + "w": _fd_close, + "U": _fd_read, + "I": _fd_seek, + "D": _fd_write, + "L": invoke_i, + "b": invoke_ii, + "f": invoke_iii, + "e": invoke_iiii, + "c": invoke_iiiii, + "j": invoke_iiiiii, + "l": invoke_iiiiiii, + "m": invoke_iiiiiiii, + "s": invoke_iiiiiiiii, + "t": invoke_iiiiiiiiii, + "p": invoke_iiiiiiiiiii, + "x": invoke_iiiiiiiiiiii, + "q": invoke_iiiiiiiiiiiiii, + "z": invoke_iiiiiiiiiiiiiiii, + "v": invoke_iiiiiiiiiiiiiiiiii, + "i": invoke_v, + "h": invoke_vi, + "d": invoke_vii, + "a": invoke_viii, + "g": invoke_viiii, + "o": invoke_viiiii, + "n": invoke_viiiiii, + "K": invoke_viiiiiii, + "r": invoke_viiiiiiii, + "k": invoke_viiiiiiiii, + "u": invoke_viiiiiiiiiii, + "J": invoke_viiiiiiiiiiiiiii, + "H": _strftime +}; + +var asm = createWasm(); + +var ___wasm_call_ctors = function() { + return (___wasm_call_ctors = Module["asm"]["ia"]).apply(null, arguments); +}; + +var _malloc = function() { + return (_malloc = Module["asm"]["ja"]).apply(null, arguments); +}; + +var _free = function() { + return (_free = Module["asm"]["ka"]).apply(null, arguments); +}; + +var _fflush = Module["_fflush"] = function() { + return (_fflush = Module["_fflush"] = Module["asm"]["la"]).apply(null, arguments); +}; + +var _main = Module["_main"] = function() { + return (_main = Module["_main"] = Module["asm"]["ma"]).apply(null, arguments); +}; + +var _gidispatch_get_game_id = Module["_gidispatch_get_game_id"] = function() { + return (_gidispatch_get_game_id = Module["_gidispatch_get_game_id"] = Module["asm"]["na"]).apply(null, arguments); +}; + +var ___errno_location = function() { + return (___errno_location = Module["asm"]["oa"]).apply(null, arguments); +}; + +var ___funcs_on_exit = function() { + return (___funcs_on_exit = Module["asm"]["pa"]).apply(null, arguments); +}; + +var _setThrew = function() { + return (_setThrew = Module["asm"]["ra"]).apply(null, arguments); +}; + +var _saveSetjmp = function() { + return (_saveSetjmp = Module["asm"]["saveSetjmp"]).apply(null, arguments); +}; + +var _emscripten_stack_set_limits = function() { + return (_emscripten_stack_set_limits = Module["asm"]["emscripten_stack_set_limits"]).apply(null, arguments); +}; + +var _emscripten_stack_get_base = function() { + return (_emscripten_stack_get_base = Module["asm"]["emscripten_stack_get_base"]).apply(null, arguments); +}; + +var _emscripten_stack_get_end = function() { + return (_emscripten_stack_get_end = Module["asm"]["emscripten_stack_get_end"]).apply(null, arguments); +}; + +var stackSave = function() { + return (stackSave = Module["asm"]["sa"]).apply(null, arguments); +}; + +var stackRestore = function() { + return (stackRestore = Module["asm"]["ta"]).apply(null, arguments); +}; + +var stackAlloc = function() { + return (stackAlloc = Module["asm"]["ua"]).apply(null, arguments); +}; + +var dynCall_iiiii = Module["dynCall_iiiii"] = function() { + return (dynCall_iiiii = Module["dynCall_iiiii"] = Module["asm"]["va"]).apply(null, arguments); +}; + +var dynCall_ii = Module["dynCall_ii"] = function() { + return (dynCall_ii = Module["dynCall_ii"] = Module["asm"]["wa"]).apply(null, arguments); +}; + +var dynCall_vi = Module["dynCall_vi"] = function() { + return (dynCall_vi = Module["dynCall_vi"] = Module["asm"]["xa"]).apply(null, arguments); +}; + +var dynCall_iii = Module["dynCall_iii"] = function() { + return (dynCall_iii = Module["dynCall_iii"] = Module["asm"]["ya"]).apply(null, arguments); +}; + +var dynCall_viii = Module["dynCall_viii"] = function() { + return (dynCall_viii = Module["dynCall_viii"] = Module["asm"]["za"]).apply(null, arguments); +}; + +var dynCall_viiiiiiii = Module["dynCall_viiiiiiii"] = function() { + return (dynCall_viiiiiiii = Module["dynCall_viiiiiiii"] = Module["asm"]["Aa"]).apply(null, arguments); +}; + +var dynCall_vii = Module["dynCall_vii"] = function() { + return (dynCall_vii = Module["dynCall_vii"] = Module["asm"]["Ba"]).apply(null, arguments); +}; + +var dynCall_viiiii = Module["dynCall_viiiii"] = function() { + return (dynCall_viiiii = Module["dynCall_viiiii"] = Module["asm"]["Ca"]).apply(null, arguments); +}; + +var dynCall_iiiiii = Module["dynCall_iiiiii"] = function() { + return (dynCall_iiiiii = Module["dynCall_iiiiii"] = Module["asm"]["Da"]).apply(null, arguments); +}; + +var dynCall_viiiiii = Module["dynCall_viiiiii"] = function() { + return (dynCall_viiiiii = Module["dynCall_viiiiii"] = Module["asm"]["Ea"]).apply(null, arguments); +}; + +var dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = function() { + return (dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = Module["asm"]["Fa"]).apply(null, arguments); +}; + +var dynCall_iiii = Module["dynCall_iiii"] = function() { + return (dynCall_iiii = Module["dynCall_iiii"] = Module["asm"]["Ga"]).apply(null, arguments); +}; + +var dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = function() { + return (dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = Module["asm"]["Ha"]).apply(null, arguments); +}; + +var dynCall_viiii = Module["dynCall_viiii"] = function() { + return (dynCall_viiii = Module["dynCall_viiii"] = Module["asm"]["Ia"]).apply(null, arguments); +}; + +var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = function() { + return (dynCall_iiiiiii = Module["dynCall_iiiiiii"] = Module["asm"]["Ja"]).apply(null, arguments); +}; + +var dynCall_viiiiiiiiiii = Module["dynCall_viiiiiiiiiii"] = function() { + return (dynCall_viiiiiiiiiii = Module["dynCall_viiiiiiiiiii"] = Module["asm"]["Ka"]).apply(null, arguments); +}; + +var dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = function() { + return (dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = Module["asm"]["La"]).apply(null, arguments); +}; + +var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = function() { + return (dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = Module["asm"]["Ma"]).apply(null, arguments); +}; + +var dynCall_iiiiiiiiiii = Module["dynCall_iiiiiiiiiii"] = function() { + return (dynCall_iiiiiiiiiii = Module["dynCall_iiiiiiiiiii"] = Module["asm"]["Na"]).apply(null, arguments); +}; + +var dynCall_iiiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiiii"] = function() { + return (dynCall_iiiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiiii"] = Module["asm"]["Oa"]).apply(null, arguments); +}; + +var dynCall_v = Module["dynCall_v"] = function() { + return (dynCall_v = Module["dynCall_v"] = Module["asm"]["Pa"]).apply(null, arguments); +}; + +var dynCall_iiiiiiiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiiiiiiii"] = function() { + return (dynCall_iiiiiiiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiiiiiiii"] = Module["asm"]["Qa"]).apply(null, arguments); +}; + +var dynCall_viiiiiii = Module["dynCall_viiiiiii"] = function() { + return (dynCall_viiiiiii = Module["dynCall_viiiiiii"] = Module["asm"]["Ra"]).apply(null, arguments); +}; + +var dynCall_viiiiiiiiiiiiiii = Module["dynCall_viiiiiiiiiiiiiii"] = function() { + return (dynCall_viiiiiiiiiiiiiii = Module["dynCall_viiiiiiiiiiiiiii"] = Module["asm"]["Sa"]).apply(null, arguments); +}; + +var dynCall_i = Module["dynCall_i"] = function() { + return (dynCall_i = Module["dynCall_i"] = Module["asm"]["Ta"]).apply(null, arguments); +}; + +var dynCall_iiiiiiiiiiii = Module["dynCall_iiiiiiiiiiii"] = function() { + return (dynCall_iiiiiiiiiiii = Module["dynCall_iiiiiiiiiiii"] = Module["asm"]["Ua"]).apply(null, arguments); +}; + +var dynCall_iiiiiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiiiiii"] = function() { + return (dynCall_iiiiiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiiiiii"] = Module["asm"]["Va"]).apply(null, arguments); +}; + +var _asyncify_start_unwind = function() { + return (_asyncify_start_unwind = Module["asm"]["Wa"]).apply(null, arguments); +}; + +var _asyncify_stop_unwind = function() { + return (_asyncify_stop_unwind = Module["asm"]["Xa"]).apply(null, arguments); +}; + +var _asyncify_start_rewind = function() { + return (_asyncify_start_rewind = Module["asm"]["Ya"]).apply(null, arguments); +}; + +var _asyncify_stop_rewind = function() { + return (_asyncify_stop_rewind = Module["asm"]["Za"]).apply(null, arguments); +}; + +var ___start_em_js = Module["___start_em_js"] = 356528; + +var ___stop_em_js = Module["___stop_em_js"] = 359213; + +function invoke_viii(index, a1, a2, a3) { + var sp = stackSave(); + try { + dynCall_viii(index, a1, a2, a3); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_vii(index, a1, a2) { + var sp = stackSave(); + try { + dynCall_vii(index, a1, a2); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiii(index, a1, a2, a3, a4, a5) { + var sp = stackSave(); + try { + return dynCall_iiiiii(index, a1, a2, a3, a4, a5); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iii(index, a1, a2) { + var sp = stackSave(); + try { + return dynCall_iii(index, a1, a2); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) { + var sp = stackSave(); + try { + dynCall_viiiiii(index, a1, a2, a3, a4, a5, a6); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) { + var sp = stackSave(); + try { + return dynCall_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiii(index, a1, a2, a3) { + var sp = stackSave(); + try { + return dynCall_iiii(index, a1, a2, a3); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) { + var sp = stackSave(); + try { + dynCall_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_vi(index, a1) { + var sp = stackSave(); + try { + dynCall_vi(index, a1); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiii(index, a1, a2, a3, a4) { + var sp = stackSave(); + try { + dynCall_viiii(index, a1, a2, a3, a4); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_ii(index, a1) { + var sp = stackSave(); + try { + return dynCall_ii(index, a1); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) { + var sp = stackSave(); + try { + return dynCall_iiiiiii(index, a1, a2, a3, a4, a5, a6); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) { + var sp = stackSave(); + try { + dynCall_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) { + var sp = stackSave(); + try { + return dynCall_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiiii(index, a1, a2, a3, a4, a5) { + var sp = stackSave(); + try { + dynCall_viiiii(index, a1, a2, a3, a4, a5); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiii(index, a1, a2, a3, a4) { + var sp = stackSave(); + try { + return dynCall_iiiii(index, a1, a2, a3, a4); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) { + var sp = stackSave(); + try { + return dynCall_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) { + var sp = stackSave(); + try { + return dynCall_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) { + var sp = stackSave(); + try { + return dynCall_iiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_v(index) { + var sp = stackSave(); + try { + dynCall_v(index); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) { + var sp = stackSave(); + try { + return dynCall_iiiiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) { + var sp = stackSave(); + try { + dynCall_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) { + var sp = stackSave(); + try { + dynCall_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) { + var sp = stackSave(); + try { + dynCall_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_i(index) { + var sp = stackSave(); + try { + return dynCall_i(index); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) { + var sp = stackSave(); + try { + return dynCall_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) { + var sp = stackSave(); + try { + return dynCall_iiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); + } catch (e) { + stackRestore(sp); + if (e !== e + 0) throw e; + _setThrew(1, 0); + } +} + +Module["AsciiToString"] = AsciiToString; + +Module["FS"] = FS; + +var calledRun; + +dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; +}; + +function callMain(args = []) { + var entryFunction = _main; + args.unshift(thisProgram); + var argc = args.length; + var argv = stackAlloc((argc + 1) * 4); + var argv_ptr = argv >> 2; + args.forEach(arg => { + HEAP32[argv_ptr++] = allocateUTF8OnStack(arg); + }); + HEAP32[argv_ptr] = 0; + try { + var ret = entryFunction(argc, argv); + exitJS(ret, true); + return ret; + } catch (e) { + return handleException(e); + } +} + +function run(args = arguments_) { + if (runDependencies > 0) { + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + preMain(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + if (shouldRunNow) callMain(args); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } +} + +if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } +} + +var shouldRunNow = true; + +if (Module["noInitialRun"]) shouldRunNow = false; + +run(); + + + return Module.ready +} + +); +})(); +export default Module; \ No newline at end of file diff --git a/docs/emglken/tads-core.wasm b/docs/emglken/tads-core.wasm new file mode 100755 index 0000000..220901b Binary files /dev/null and b/docs/emglken/tads-core.wasm differ diff --git a/docs/git-core.b75bc635.wasm b/docs/git-core.b75bc635.wasm new file mode 100644 index 0000000..bd6ea4e Binary files /dev/null and b/docs/git-core.b75bc635.wasm differ diff --git a/docs/hugo-core.34679da7.wasm b/docs/hugo-core.34679da7.wasm new file mode 100644 index 0000000..342e884 Binary files /dev/null and b/docs/hugo-core.34679da7.wasm differ diff --git a/docs/index.4a5edb74.js b/docs/index.4a5edb74.js new file mode 100644 index 0000000..cc3fdf8 --- /dev/null +++ b/docs/index.4a5edb74.js @@ -0,0 +1,2 @@ +function e(e,r,t,n){Object.defineProperty(e,r,{get:t,set:n,enumerable:!0,configurable:!0})}var r,t,n,o,a,i,s,u,l,c,d,f,m,h,p,v,w,g,_,y="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},E={},b={},k=y.parcelRequire847f;null==k&&((k=function(e){if(e in E)return E[e].exports;if(e in b){var r=b[e];delete b[e];var t={id:e,exports:{}};return E[e]=t,r.call(t.exports,t,t.exports),t.exports}var n=Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}).register=function(e,r){b[e]=r},y.parcelRequire847f=k);var S,D,F,M,P,A,x,R,C,T={},N=[],z=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,B=Array.isArray;function O(e,r){for(var t in r)e[t]=r[t];return e}function j(e){var r=e.parentNode;r&&r.removeChild(e)}function I(e,r,t){var n,o,a,i={};for(a in r)"key"==a?n=r[a]:"ref"==a?o=r[a]:i[a]=r[a];if(arguments.length>2&&(i.children=arguments.length>3?S.call(arguments,2):t),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===i[a]&&(i[a]=e.defaultProps[a]);return L(e,i,n,o,null)}function L(e,r,t,n,o){var a={type:e,props:r,key:t,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++F:o};return null==o&&null!=D.vnode&&D.vnode(a),a}function U(e){return e.children}function H(e,r){this.props=e,this.context=r}function W(e,r){if(null==r)return e.__?W(e.__,e.__.__k.indexOf(e)+1):null;for(var t;rr&&P.sort(R));Y.__r=0}function G(e,r,t,n,o,a,i,s,u,l){var c,d,f,m,h,p,v,w=n&&n.__k||N,g=w.length;for(t.__k=[],c=0;c0?L(m.type,m.props,m.key,m.ref?m.ref:null,m.__v):m)){if(m.__=t,m.__b=t.__b+1,null===(f=w[c])||f&&m.key==f.key&&m.type===f.type)w[c]=void 0;else for(d=0;d=0;t--)if((n=r.__k[t])&&(o=e(n)))return o}return null}(n).nextSibling),function e(r,t,n){var o,a;if(D.unmount&&D.unmount(r),(o=r.ref)&&(o.current&&o.current!==r.__e||ee(o,null,t)),null!=(o=r.__c)){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(e){D.__e(e,t)}o.base=o.__P=null,r.__c=void 0}if(o=r.__k)for(a=0;a2&&(s.children=arguments.length>3?S.call(arguments,2):t),L(e.type,s,n||e.key,o||e.ref,null)}S=N.slice,D={__e:function(e,r,t,n){for(var o,a,i;r=r.__;)if((o=r.__c)&&!o.__)try{if((a=o.constructor)&&null!=a.getDerivedStateFromError&&(o.setState(a.getDerivedStateFromError(e)),i=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,n||{}),i=o.__d),i)return o.__E=o}catch(r){e=r}throw e}},F=0,M=function(e){return null!=e&&void 0===e.constructor},H.prototype.setState=function(e,r){var t;t=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=O({},this.state),"function"==typeof e&&(e=e(O({},t),this.props)),e&&O(t,e),null!=e&&this.__v&&(r&&this._sb.push(r),q(this))},H.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),q(this))},H.prototype.render=U,P=[],x="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,R=function(e,r){return e.__v.__b-r.__v.__b},Y.__r=0,C=0;var en=0;function eo(e,r,t,n,o,a){var i,s,u={};for(s in r)"ref"==s?i=r[s]:u[s]=r[s];var l={type:e,props:u,key:t,ref:i,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--en,__source:o,__self:a};if("function"==typeof e&&(i=e.defaultProps))for(s in i)void 0===u[s]&&(u[s]=i[s]);return D.vnode&&D.vnode(l),l}var ea,ei,es,eu,el=0,ec=[],ed=[],ef=D.__b,em=D.__r,eh=D.diffed,ep=D.__c,ev=D.unmount;function ew(e,r){D.__h&&D.__h(ei,e,el||r),el=0;var t=ei.__H||(ei.__H={__:[],__h:[]});return e>=t.__.length&&t.__.push({__V:ed}),t.__[e]}function eg(e){return el=1,function(e,r,t){var n=ew(ea++,2);if(n.t=e,!n.__c&&(n.__=[t?t(r):eA(void 0,r),function(e){var r=n.__N?n.__N[0]:n.__[0],t=n.t(r,e);r!==t&&(n.__N=[t,n.__[1]],n.__c.setState({}))}],n.__c=ei,!ei.u)){var o=function(e,r,t){if(!n.__c.__H)return!0;var o=n.__c.__H.__.filter(function(e){return e.__c});if(o.every(function(e){return!e.__N}))return!a||a.call(this,e,r,t);var i=!1;return o.forEach(function(e){if(e.__N){var r=e.__[0];e.__=e.__N,e.__N=void 0,r!==e.__[0]&&(i=!0)}}),!(!i&&n.__c.props===e)&&(!a||a.call(this,e,r,t))};ei.u=!0;var a=ei.shouldComponentUpdate,i=ei.componentWillUpdate;ei.componentWillUpdate=function(e,r,t){if(this.__e){var n=a;a=void 0,o(e,r,t),a=n}i&&i.call(this,e,r,t)},ei.shouldComponentUpdate=o}return n.__N||n.__}(eA,e)}function e_(e,r){var t=ew(ea++,3);!D.__s&&eP(t.__H,r)&&(t.__=e,t.i=r,ei.__H.__h.push(t))}function ey(e,r){var t=ew(ea++,4);!D.__s&&eP(t.__H,r)&&(t.__=e,t.i=r,ei.__h.push(t))}function eE(e){return el=5,eb(function(){return{current:e}},[])}function eb(e,r){var t=ew(ea++,7);return eP(t.__H,r)?(t.__V=e(),t.i=r,t.__h=e,t.__V):t.__}function ek(){for(var e;e=ec.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(eF),e.__H.__h.forEach(eM),e.__H.__h=[]}catch(r){e.__H.__h=[],D.__e(r,e.__v)}}D.__b=function(e){ei=null,ef&&ef(e)},D.__r=function(e){em&&em(e),ea=0;var r=(ei=e.__c).__H;r&&(es===ei?(r.__h=[],ei.__h=[],r.__.forEach(function(e){e.__N&&(e.__=e.__N),e.__V=ed,e.__N=e.i=void 0})):(r.__h.forEach(eF),r.__h.forEach(eM),r.__h=[],ea=0)),es=ei},D.diffed=function(e){eh&&eh(e);var r=e.__c;r&&r.__H&&(r.__H.__h.length&&(1!==ec.push(r)&&eu===D.requestAnimationFrame||((eu=D.requestAnimationFrame)||eD)(ek)),r.__H.__.forEach(function(e){e.i&&(e.__H=e.i),e.__V!==ed&&(e.__=e.__V),e.i=void 0,e.__V=ed})),es=ei=null},D.__c=function(e,r){r.some(function(e){try{e.__h.forEach(eF),e.__h=e.__h.filter(function(e){return!e.__||eM(e)})}catch(t){r.some(function(e){e.__h&&(e.__h=[])}),r=[],D.__e(t,e.__v)}}),ep&&ep(e,r)},D.unmount=function(e){ev&&ev(e);var r,t=e.__c;t&&t.__H&&(t.__H.__.forEach(function(e){try{eF(e)}catch(e){r=e}}),t.__H=void 0,r&&D.__e(r,t.__v))};var eS="function"==typeof requestAnimationFrame;function eD(e){var r,t=function(){clearTimeout(n),eS&&cancelAnimationFrame(r),setTimeout(e)},n=setTimeout(t,100);eS&&(r=requestAnimationFrame(t))}function eF(e){var r=ei,t=e.__c;"function"==typeof t&&(e.__c=void 0,t()),ei=r}function eM(e){var r=ei;e.__c=e.__(),ei=r}function eP(e,r){return!e||e.length!==r.length||r.some(function(r,t){return r!==e[t]})}function eA(e,r){return"function"==typeof r?r(e):r}const ex=!!("undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement);function eR(e,r){return e===r&&(0!==e||1/e==1/r)||e!=e&&r!=r}const eC=e=>{let r=eE([e,(...e)=>r[0](...e)]).current;return ey(()=>{r[0]=e}),r[1]},eT=(e="",r=location.pathname)=>r.toLowerCase().indexOf(e.toLowerCase())?"~"+r:r.slice(e.length)||"/",eN=(e,r="")=>"~"===e[0]?e.slice(1):r+e,ez="pushState",eB="replaceState",eO=["popstate",ez,eB,"hashchange"],ej=e=>{for(let r of eO)addEventListener(r,e);return()=>{for(let r of eO)removeEventListener(r,e)}},eI=(e,r)=>(function(e,r,t){t&&!ex&&(r=t);let n=r(),[{_instance:o},a]=eg({_instance:{_value:n,_getSnapshot:r}});return ey(()=>{o._value=n,o._getSnapshot=r,eR(o._value,r())||a({_instance:o})},[e,n,r]),e_(()=>(eR(o._value,o._getSnapshot())||a({_instance:o}),e(()=>{eR(o._value,o._getSnapshot())||a({_instance:o})})),[e]),n})(ej,e,r),eL=()=>location.pathname,eU=({ssrPath:e}={})=>eI(eL,e?()=>e:eL),eH=(e,{replace:r=!1}={})=>history[r?eB:ez](null,"",e);if("undefined"!=typeof history)for(const e of[ez,eB]){let r=history[e];history[e]=function(){let t=r.apply(this,arguments),n=new Event(e);return n.arguments=arguments,dispatchEvent(n),t}}const eW=e=>e.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),eq=(e,r,t)=>{let n=e?"((?:[^\\/]+?)(?:\\/(?:[^\\/]+?))*)":"([^\\/]+?)";return r&&t&&(n="(?:\\/"+n+")"),n+(r?"?":"")},eY=e=>{let r=/:([A-Za-z0-9_]+)([?+*]?)/g,t=null,n=0,o=[],a="";for(;null!==(t=r.exec(e));){let[i,s,u]=t,l="+"===u||"*"===u,c="?"===u||"*"===u,d=c&&"/"===e[t.index-1]?1:0,f=e.substring(n,t.index-d);o.push({name:s}),n=r.lastIndex,a+=eW(f)+eq(l,c,d)}return{keys:o,regexp:RegExp("^"+(a+=eW(e.substring(n)))+"(?:\\/)?$","i")}},eG={hook:(e={})=>[eT(e.base,eU(e)),eC((r,t)=>eH(eN(r,e.base),t))],matcher:function(e=eY){let r={},t=t=>r[t]||(r[t]=e(t));return(e,r)=>{let{regexp:n,keys:o}=t(e||""),a=n.exec(r);if(!a)return[!1,null];let i=o.reduce((e,r,t)=>(e[r.name]=a[t+1],e),{});return[!0,i]}}(),base:""},eV=function(e,r){var t={__c:r="__cC"+C++,__:e,Consumer:function(e,r){return e.children(r)},Provider:function(e){var t,n;return this.getChildContext||(t=[],(n={})[r]=this,this.getChildContext=function(){return n},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&t.some(function(e){e.__e=!0,q(e)})},this.sub=function(e){t.push(e);var r=e.componentWillUnmount;e.componentWillUnmount=function(){t.splice(t.indexOf(e),1),r&&r.call(e)}}),e.children}};return t.Provider.__=t.Consumer.contextType=t}(eG),eX=()=>(function(e){var r=ei.context[e.__c],t=ew(ea++,9);return t.c=e,r?(null==t.__&&(t.__=!0,r.sub(ei)),r.props.value):e.__})(eV),eK=e=>e.hook(e),e$=e=>{let r=eX(),[t]=eK(r);return r.matcher(e,t)},eJ=({hook:e,matcher:r,ssrPath:t,base:n="",parent:o,children:a})=>{let i=(a,i=o||eG)=>(a.hook=e||i.hook,a.matcher=r||i.matcher,a.ssrPath=t||i.ssrPath,a.ownBase=n,a.parent=o,a),[s]=eg(()=>i({get base(){return(s.parent||eG).base+s.ownBase}}));return ey(()=>{i(s)}),I(eV.Provider,{value:s,children:a})},eZ=({path:e,match:r,component:t,children:n})=>{let o=e$(e),[a,i]=r||o;return a?t?I(t,{params:i}):"function"==typeof n?n(i):n:null},eQ=(e,r)=>{let t=eX(),[,n]=eK(t),{to:o,href:a=o,children:i,onClick:s}=e,u=eC(r=>{r.ctrlKey||r.metaKey||r.altKey||r.shiftKey||0!==r.button||(s&&s(r),r.defaultPrevented||(r.preventDefault(),n(o||a,e)))}),l={href:"~"===a[0]?a.slice(1):t.base+a,onClick:u,to:null,ref:r},c=M(i)?i:I("a",e);return et(c,l)},e0=e=>Array.isArray(e)?[].concat(...e.map(e=>e&&e.type===U?e0(e.props.children):e0(e))):[e],e1=({children:e,location:r})=>{let t=eX(),n=t.matcher,[o]=eK(t);for(let t of e0(e)){let e=0;if(M(t)&&(e=t.props.path?n(t.props.path,r||o):[!0,{}])[0])return et(t,{match:e})}return null},e2=()=>window.location.hash.replace("#","")||"/",e4=({url:e})=>`/#/play/${encodeURIComponent(e)}`,e6=e=>{if("/"===e)return"home";let r=e.split("/").filter(Boolean)[0];return r||""},e3=()=>{var e;let[r,t]=eg(e2());e_(()=>{let e=()=>{let e=e2();e!==r&&(t(e),window.scrollTo(0,0))};return e(),window.addEventListener("hashchange",e),()=>window.removeEventListener("hashchange",e)},[r,t]);let n=(e=e=>{window.location.hash=e.replace("#/","")},el=8,eb(function(){return e},[]));return[r,n]},e9=["light","dim","dark","solarized-light","solarized-dark","emo","redrum","toxin","valve","wasp","a8008","a80s_after_dark","a9009","aether","alduin","alpine","arch","aurora","beach","bento","bingsu","bliss","blue_dolphin","blueberry_dark","blueberry_light","botanical","bouquet","breeze","bushido","cafe","camping","carbon","catppuccin","chaos_theory","cheesecake","cherry_blossom","comfy","copper","creamsicle","cyberspace","dark_magic_girl","dark_note","darling","deku","desert_oasis","dev","diner","dino","dmg","dollar","dots","dracula","drowning","dualshot","earthsong","everblush","evil_eye","ez_mode","fire","fledgling","fleuriste","froyo","frozen_llama","fruit_chew","fundamentals","future_funk","godspeed","graen","grand_prix","gruvbox_dark","gruvbox_light","hammerhead","hanok","hedge","honey","horizon","husqy","iceberg_dark","iceberg_light","ishtar","iv_clover","iv_spade","joker","laser","lavender","leather","lil_dragon","lime","luna","magic_girl","mashu","matcha_moccha","material","matrix","menthol","metaverse","metropolis","mexican","miami","miami_nights","midnight","milkshake","mint","mizu","modern_dolch","modern_dolch_light","modern_ink","monokai","moonlight","mountain","mr_sleeves","ms_cupcakes","muted","nautilus","nebula","night_runner","nord","nord_light","norse","oblivion","olive","olivia","onedark","our_theme","paper","passion_fruit","pastel","peach_blossom","peaches","pink_lemonade","pulse","purpurite","red_dragon","red_samurai","repose_dark","repose_light","retro","retrocast","rose_pine","rose_pine_dawn","rose_pine_moon","rudy","ryujinscales","serika","serika_dark","sewing_tin","sewing_tin_light","shadow","shoko","slambook","snes","soaring_skies","sonokai","stealth","strawberry","striker","superuser","sweden","taro","terminal","terra","terror_below","tiramisu","trackday","trance","tron_orange","vaporwave","viridescent","voc","vscode","watermelon","wavez","witch_girl"],e8="elseifplayer/theme",e5=e9[0],e7=()=>{let e=localStorage.getItem(e8);return e||e5},re=e=>e9.includes(e)?e:e7(),rr=(e=e7())=>{let[r,t]=eg(e),n=e=>{let r=re(e);t(r),localStorage.setItem(e8,r)};return{currentTheme:r,setTheme:n,setRandomTheme:()=>{let e=e9[Math.floor(Math.random()*e9.length)];n(e)},themes:e9}};function rt({theme:e,setLocation:r,buildLink:t}){return eo("input",{type:"file",onChange:({target:n})=>{let o=n.files[0],a=`${URL.createObjectURL(o)}#${o.name}`;r(t({url:a,theme:e}))}})}function rn({theme:e,setLocation:r,buildLink:t}){let n=/^(http|https):\/\/[^ "]+$/;return eo("input",{type:"text",placeholder:"https://...",onKeyPress:({keyCode:o,target:a})=>{if(13!==o)return;let i=encodeURI(a.value);n.test(i)&&r(t({url:i,theme:e}))}})}function ro({themeEngine:e}){let r=e.themes.map(e=>eo("option",{value:e,children:e},e));return eo("select",{value:e.currentTheme,onChange:({target:r})=>e.setTheme(r.value),children:r})}function ra({themeEngine:e}){let r=e3()[1];return eo("main",{children:[eo("h1",{children:"ElseIFPlayer"}),eo("section",{children:eo("p",{children:["Interactive Fiction interpreter that runs right in your browser.",eo("br",{}),"Source code can be found in this ",eo("a",{target:"_blank",rel:"noopener noreferrer",href:"https://github.com/He4eT/elseifplayer",children:"repository"}),"."]})}),eo("hr",{}),eo("section",{children:[eo("h2",{children:"Interface Theme"}),eo(ro,{themeEngine:e}),eo("p",{children:["Preview and choose from available themes on the ",eo(eQ,{href:"/#/themes/",children:"themes page"}),"."]}),eo("p",{children:eo("small",{children:"Double-click the input field during the game to enter full-screen mode."})})]}),eo("hr",{}),eo("section",{children:[eo("h2",{children:"Play a Game from the List"}),eo("p",{children:eo(eQ,{href:"/#/games/",children:"IFDB games"})})]}),eo("hr",{}),eo("section",{children:[eo("h2",{children:"Play the Game from a File"}),eo("p",{children:eo("details",{children:[eo("summary",{children:"Supported formats"}),eo("p",{children:"Text-only games are supported:"}),eo("ul",{children:[eo("li",{children:"ADRIFT 4 (.taf)"}),eo("li",{children:"Glulx (.gblorb, .ulx)"}),eo("li",{children:"Hugo (.hex)"}),eo("li",{children:"TADS 2/3 (.gam, .t3)"}),eo("li",{children:"Z-code (.z3, .z4, .z5, .z8, .blorb)"})]})]})}),eo("p",{children:eo("label",{children:["Local file: ",eo("br",{}),eo(rt,{setLocation:r,buildLink:e4,theme:e.currentTheme})]})}),eo("p",{children:eo("label",{children:["Direct link: ",eo("br",{}),eo(rn,{setLocation:r,buildLink:e4,theme:e.currentTheme})]})})]})]})}function ri({name:e,ifdb:r,url:t}){return eo("div",{children:[eo("h4",{children:e}),eo("a",{target:"_blank",rel:"noopener noreferrer",href:r,children:"IFDB page"}),eo("span",{children:" | "}),eo(eQ,{href:e4({url:t}),children:"Play"})]})}var rs=[["Lost Pig","https://ifdb.org/viewgame?id=mohwfk47yjzii14w","https://mirror.ifarchive.org/if-archive/games/zcode/LostPig.z8"],["Counterfeit Monkey","https://ifdb.org/viewgame?id=aearuuxv83plclpl","https://mirror.ifarchive.org/if-archive/games/glulx/CounterfeitMonkey.gblorb"],["Anchorhead","https://ifdb.org/viewgame?id=op0uw1gn1tjqmjt7","https://ifarchive.org/if-archive/games/zcode/anchor.z8"],["Galatea","https://ifdb.org/viewgame?id=urxrv27t7qtu52lb","https://mirror.ifarchive.org/if-archive/games/zcode/Galatea.zblorb"],["Photopia","https://ifdb.org/viewgame?id=ju778uv5xaswnlpl","https://mirror.ifarchive.org/if-archive/games/zcode/photopia.z5"],["Spider and Web","https://ifdb.org/viewgame?id=2xyccw3pe0uovfad","https://mirror.ifarchive.org/if-archive/games/zcode/Tangle.z5"],["Slouching Towards Bedlam","https://ifdb.org/viewgame?id=032krqe6bjn5au78","https://mirror.ifarchive.org/if-archive/games/competition2003/zcode/slouch/slouch.z5"],["Curses!","https://ifdb.org/viewgame?id=plvzam05bmz3enh8","https://mirror.ifarchive.org/if-archive/games/zcode/curses.z5"],["Violet","https://ifdb.org/viewgame?id=4glrrfh7wrp9zz7b","https://mirror.ifarchive.org/if-archive/games/zcode/Violet.zblorb"],["The Wizard Sniffer","https://ifdb.org/viewgame?id=uq18rw9gt8j58da","https://ifarchive.org/if-archive/games/competition2017/The%20Wizard%20Sniffer/The_Wizard_Sniffer.gblorb"],["Shade","https://ifdb.org/viewgame?id=hsfc7fnl40k4a30q","https://mirror.ifarchive.org/if-archive/games/zcode/shade.z5"],["Vespers","https://ifdb.org/viewgame?id=6dj2vguyiagrhvc2","https://mirror.ifarchive.org/if-archive/games/zcode/vespers.z8"],["Savoir-Faire","https://ifdb.org/viewgame?id=p0cizeb3kiwzlm2p","https://mirror.ifarchive.org/if-archive/games/zcode/Savoir-Faire.zblorb"],["Aisle","https://ifdb.org/viewgame?id=j49crlvd62mhwuzu","https://mirror.ifarchive.org/if-archive/games/zcode/Aisle.z5"],["Gun Mute","https://ifdb.org/viewgame?id=xwedbibfksczn7eq","https://mirror.ifarchive.org/if-archive/games/tads/GunMute.t3"],["A Beauty Cold and Austere","https://ifdb.org/viewgame?id=y9y7jozi0l76bb82","https://ifarchive.org/if-archive/games/competition2017/A%20Beauty%20Cold%20and%20Austere/A_Beauty_Cold_and_Austere.gblorb"],["Coloratura","https://ifdb.org/viewgame?id=g0fl99ovcrq2sqzk","https://mirror.ifarchive.org/if-archive/games/competition2013/glulx/coloratura/Coloratura.gblorb"],["Lime Ergot","https://ifdb.org/viewgame?id=b8mb4fcwmf1hrxl","https://mirror.ifarchive.org/if-archive/games/glulx/Lime_Ergot.gblorb"],["Rameses","https://ifdb.org/viewgame?id=0stz0hr7a98bp9mp","https://mirror.ifarchive.org/if-archive/games/zcode/rameses.zblorb"],["The Wand","https://ifdb.org/viewgame?id=2jil5vbxmbv8riv1","https://ifarchive.org/if-archive/games/glulx/Wand.ulx"],["1893: A World's Fair Mystery","https://ifdb.org/viewgame?id=00e0t7swrris5pg6","https://mirror.ifarchive.org/if-archive/games/tads/1893.gam"],["Adventure","https://ifdb.org/viewgame?id=fft6pu91j85y4acv","https://mirror.ifarchive.org/if-archive/games/zcode/Advent.z5"],["Alias 'The Magpie'","https://ifdb.org/viewgame?id=yspn49v69hzc8rtb","https://ifarchive.org/if-archive/games/competition2018/Alias%20The%20Magpie/Alias%20%27The%20Magpie%27.gblorb"],["Cragne Manor","https://ifdb.org/viewgame?id=4x7nltu8p851tn4x","https://mirror.ifarchive.org/if-archive/games/glulx/cragne.gblorb"],["The Edifice","https://ifdb.org/viewgame?id=4tb9soabrb4apqzd","https://mirror.ifarchive.org/if-archive/games/zcode/edifice.z5"],["Endless, Nameless","https://ifdb.org/viewgame?id=7vtm1rq16hh3xch","https://ifarchive.org/if-archive/games/zcode/nameless.z8"],["Everybody Dies","https://ifdb.org/viewgame?id=lyblvftb8xtlo0a1","https://mirror.ifarchive.org/if-archive/games/competition2008/glulx/everybodydies/EverybodyDies.gblorb"],["Foo Foo","https://ifdb.org/viewgame?id=ec6x9y8qcmsrxob9","https://ifarchive.org/if-archive/games/springthing/2016/FooFoo.gblorb"],["The Gostak","https://ifdb.org/viewgame?id=w5s3sv43s3p98v45","https://mirror.ifarchive.org/if-archive/games/zcode/gostak.z5"],["Inside the Facility","https://ifdb.org/viewgame?id=stsdri5zh7a4i5my","https://ifarchive.org/if-archive/games/competition2016/Inside%20the%20Facility/Facility.z8"],["Make It Good","https://ifdb.org/viewgame?id=jdrbw1htq4ah8q57","https://mirror.ifarchive.org/if-archive/games/zcode/MakeItGood.z8"],["Sub Rosa","https://ifdb.org/viewgame?id=73nvz9yui87ub3sd","https://mirror.ifarchive.org/if-archive/games/glulx/Sub_Rosa.gblorb"],["Suveh Nux","https://ifdb.org/viewgame?id=xkai23ry99qdxce3","https://mirror.ifarchive.org/if-archive/games/zcode/suvehnux.z5"],["Varicella","https://ifdb.org/viewgame?id=ywwlr3tpxnktjasd","https://mirror.ifarchive.org/if-archive/games/zcode/vgame.z8"]].map(([e,r,t])=>({name:e,ifdb:r,url:t}));const ru={name:"The Dreamhold",ifdb:"https://ifdb.org/viewgame?id=3myqnrs64nbtwdaz",url:"https://mirror.ifarchive.org/if-archive/games/zcode/dreamhold.z8"};function rl(){return eo("main",{className:"-soi4G_games",children:[eo("h1",{children:[eo("a",{target:"_blank",rel:"noopener noreferrer",href:"https://ifdb.org/",title:"The Interactive Fiction Database",children:"IFDB"})," Games"]}),eo("p",{children:["Choose one or ",eo(eQ,{href:"/",children:"go back"}),"."]}),eo("section",{className:"-soi4G_tutorial",children:[eo("h2",{children:"Tutorial"}),eo("p",{children:"If you are not familiar with Interactive Fiction, you should start with this tutorial game by\xa0Andrew\xa0Plotkin:"}),eo("ul",{children:eo("li",{children:eo(ri,{...ru})})})]}),eo("h2",{children:"Interactive Fiction Top 50 of All Time"}),eo("p",{children:[eo("a",{target:"_blank",rel:"noopener noreferrer",href:"https://ifdb.org/search?comp&sortby=awn&searchfor=series%3AInteractive+Fiction+Top+50+of+All+Time",children:"Every four years "}),", Victor Gijsbers puts together a list of the top 50 IF games of all time. Here is an almost complete and slightly rearranged version of the ",eo("a",{target:"_blank",rel:"noopener noreferrer",href:"https://ifdb.org/viewcomp?id=1lv599reviaxvwo7",children:"list from 2019"}),":"]}),eo("ol",{children:rs.map(e=>eo("li",{children:eo(ri,{...e})},e.name))})]})}r="qdlvgW_input",t="qdlvgW_message",n="qdlvgW_output",o="qdlvgW_subheader",a="qdlvgW_themePreview";const rc=(e,i)=>eo("section",{className:[a,i].join(" "),children:[eo("div",{className:n,children:[eo("div",{className:[t,r].join(" "),children:"> look"}),eo("div",{children:eo("br",{})}),eo("div",{className:[t,o].join(" "),children:i}),eo("div",{children:"Observe a vibrant demonstration of colors at work, showcasing their versatile usage right before your eyes."}),eo("div",{children:eo("br",{})})]}),eo("button",{onClick:()=>e.setTheme(i),children:"Apply this colors"})]},i);function rd({themeEngine:e}){let i=e.themes.map(r=>rc(e,r));return eo("main",{className:"qdlvgW_themes",children:[eo("h1",{children:"Themes Page"}),eo("p",{children:["Choose one or ",eo(eQ,{href:"/",children:"go back"}),"."]}),eo("section",{className:[a,"qdlvgW_current"].join(" "),children:[eo("h2",{children:"Current Theme"}),eo("div",{className:n,children:[eo("div",{className:[t,r].join(" "),children:"> look"}),eo("div",{children:eo("br",{})}),eo("div",{className:[t,o].join(" "),children:["Selected: ",e.currentTheme]}),eo("div",{children:"You can set random one with the button below or choose any theme from the list."}),eo("div",{children:eo("br",{})})]}),eo("button",{onClick:()=>e.setRandomTheme(),children:"Set a random theme"})]}),eo("h2",{children:"Theme List"}),eo("section",{children:i})]})}class rf{constructor(e){this.dialog=e.options.Dialog,this.streaming=this.dialog.streaming,this.FS=e.Module.FS,this.VM=e,this.filename_map={},this.filename_counter=0}close(e){"storyfile"===e.name||(this.streaming?e.fstream.fclose():2!==e.fmode&&this.dialog.file_write(e.fref,e.data))}createNode(e,r,t){let n=this.FS;if(!n.isDir(t)&&!n.isFile(t))throw new n.ErrnoError(28);let o=n.createNode(e,r,t);return o.node_ops=this,o.stream_ops=this,o.timestamp=Date.now(),o}getattr(e){let r="storyfile"===e.name?this.VM.data.length:0;return{atime:new Date(e.timestamp),ctime:new Date(e.timestamp),dev:1,gid:0,ino:e.id,mode:e.mode,mtime:new Date(e.timestamp),nlink:1,rdev:e.rdev,size:r,uid:0}}get_dialog_ref(e){let[r,t]=e.split(".");t=t.replace("glk","");let n="";return"save"===t&&(n=this.VM.Module.AsciiToString(this.VM.Module._gidispatch_get_game_id())),this.dialog.file_construct_ref(r,t,n)}llseek(e,r,t){let n=r;if(1===t)n+=e.position;else if(2===t){if("storyfile"===e.name)n+=e.data.length;else if(this.streaming){let r=e.fstream.ftell();e.fstream.fseek(0,2),n+=e.fstream.ftell(),e.fstream.fseek(r,0)}else n+=e.data.length}if(n<0)throw new this.FS.ErrnoError(28);return n}lookup(e,r){if("storyfile"!==r){let e=this.filename_map[r]||r;if(!this.dialog.file_ref_exists(this.streaming?{filename:e}:this.get_dialog_ref(e)))throw new this.FS.ErrnoError(44)}return this.createNode(e,r,33206)}mknod(e,r,t){return this.createNode(e,r,t)}mmap(){throw Error("EmglkenFS.mmap")}mount(){return this.createNode(null,"/",16895,0)}msync(){throw Error("EmglkenFS.msync")}open(e){if(e.name=e.node.name,"storyfile"===e.name)e.data=this.VM.data;else{var r;let t=1024&(r=e.flags)?5:1&r?1:2&r?3:2,n=this.filename_map[e.name]||e.name;this.streaming?e.fstream=this.dialog.file_fopen(t,{filename:n}):(e.fref=this.get_dialog_ref(n),e.fmode=t,e.data=null,1!==t&&(e.data=this.dialog.file_read(e.fref)),null==e.data&&(e.data=new Uint8Array(0),2!==t&&this.dialog.file_write(e.fref,"",!0)))}}read(e,r,t,n,o){if(0===n)return 0;if("storyfile"===e.name){let a=Math.min(e.data.length-o,n);return r.set(e.data.subarray(o,o+a),t),a}if(this.streaming){e.fstream.fseek(o,0);let a=e.fstream.BufferClass.from(r.buffer,t,n);return e.fstream.fread(a,n)}{let a=Math.min(e.data.length-o,n);return r.set(e.data.subarray(o,o+a),t),a}}readdir(){throw Error("EmglkenFS.readdir")}readlink(){throw new this.FS.ErrnoError(28)}register_filename(e,r){let t="save"===r?".glksave":"data"===r?".glkdata":".txt";if(/\.(glkdata|glksave|txt)$/.test(e)||(e+=t),this.filename_map[e])return this.filename_map[e];let n="emglken_fake_file_"+this.filename_counter++;return this.filename_map[e]=n,this.filename_map[n+t]=e,n}rename(){throw Error("EmglkenFS.rename")}rmdir(){throw Error("EmglkenFS.rmdir")}setattr(){}symlink(){throw Error("EmglkenFS.symlink")}unlink(e,r){let t=this.filename_map[r]||r;this.dialog.file_remove_ref(this.get_dialog_ref(t))}write(e,r,t,n,o){if("storyfile"===e.name)throw Error("EmglkenFS.write: cannot write to storyfile");if(this.streaming){e.fstream.fseek(o,0);let a=e.fstream.BufferClass.from(r).subarray(t,t+n);return e.fstream.fwrite(a,n)}{o=o||e.position;let a=n+o;if(a>e.data.length){let r=e.data;e.data=new Uint8Array(a),e.data.set(r)}return e.data.set(r.subarray(t,t+n),o),n}}}const rm={arguments:["storyfile"]};class rh{init(e,r){this.data=e,this.options=Object.assign({},rm,this.default_options(),r)}async start(){let e=new TextEncoder,r="",t={arguments:this.options.show_help?["-help"]:this.options.arguments,emglken_stdin_buffers:[],emglken_stdin_ready(){},locateFile(){},print:e=>{if(""!==r||""===e||e.startsWith("{")){if(r+=e,e.endsWith("}")){let e;try{e=JSON.parse(r)}catch(e){}e&&(r="",e.specialinput&&"fileref_prompt"===e.specialinput.type&&(this.last_fr_usage=e.specialinput.filetype),this.options.GlkOte.update(e))}}else console.log(e)},preRun:()=>{let e=t.FS;this.EFS=new rf(this),e.mkdir("/emglken"),e.mount(this.EFS,{},"/emglken"),e.chdir("/emglken")},wasmBinary:this.options.wasmBinary};this.Module=t,this.options.accept=r=>{"specialresponse"===r.type&&"fileref_prompt"===r.response&&r.value&&(this.EFS.streaming?r.value=this.EFS.register_filename(r.value.filename,this.last_fr_usage):r.value=r.value.filename);let n=JSON.stringify(r),o=e.encode(n);t.emglken_stdin_buffers.push(o),t.emglken_stdin_ready()},await this.options.vmcore(t),this.options.GlkOte.init(this.options)}}var rp={};rp=new URL(k("6MsPj").resolve("4QCNJ"),import.meta.url).toString();var rv=(()=>{var e="file:///node_modules/emglken/build/bocfel-core.js";return function(r={}){var t,n,o,a,i,s,u,l,c,d,f,m,h,p,v,w,g,_,r=void 0!==r?r:{};r.ready=new Promise(function(e,r){n=e,o=r});var y=Object.assign({},r),E=[],b="./this.program",k=(e,r)=>{throw r},S="";"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),e&&(S=e),S=0!==S.indexOf("blob:")?S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):"",a=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},i=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{if(200==n.status||0==n.status&&n.response){r(n.response);return}t()},n.onerror=t,n.send(null)};var D=r.print||console.log.bind(console),F=r.printErr||console.warn.bind(console);Object.assign(r,y),y=null,r.arguments&&(E=r.arguments),r.thisProgram&&(b=r.thisProgram),r.quit&&(k=r.quit),r.wasmBinary&&(u=r.wasmBinary);var M=r.noExitRuntime||!1;"object"!=typeof WebAssembly&&V("no native wasm support detected");var P=!1,A=new TextDecoder("utf8");function x(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;return A.decode(e.buffer?e.subarray(r,o):new Uint8Array(e.slice(r,o)))}function R(e,r){if(!e)return"";for(var t=e+r,n=e;!(n>=t)&&f[n];)++n;return A.decode(f.subarray(e,n))}function C(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i)),s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function T(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r}function N(){var e=l.buffer;r.HEAP8=d=new Int8Array(e),r.HEAP16=m=new Int16Array(e),r.HEAP32=h=new Int32Array(e),r.HEAPU8=f=new Uint8Array(e),r.HEAPU16=new Uint16Array(e),r.HEAPU32=p=new Uint32Array(e),r.HEAPF32=new Float32Array(e),r.HEAPF64=new Float64Array(e)}var z=[],B=[],O=[],j=[],I=[],L=!1,U=0,H=0,W=null,q=null;function Y(e){H++,r.monitorRunDependencies&&r.monitorRunDependencies(H)}function G(e){if(H--,r.monitorRunDependencies&&r.monitorRunDependencies(H),0==H&&(null!==W&&(clearInterval(W),W=null),q)){var t=q;q=null,t()}}function V(e){r.onAbort&&r.onAbort(e),F(e="Aborted("+e+")"),P=!0,c=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw o(t),t}function X(e){return e.startsWith("data:application/octet-stream;base64,")}function K(e){try{if(e==v&&u)return new Uint8Array(u);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}catch(e){V(e)}}function $(e,r,t){return(u||"function"!=typeof fetch?Promise.resolve().then(function(){return K(e)}):fetch(e,{credentials:"same-origin"}).then(function(r){if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(function(){return K(e)})).then(function(e){return WebAssembly.instantiate(e,r)}).then(function(e){return e}).then(t,function(e){F("failed to asynchronously prepare wasm: "+e),V(e)})}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Z(e){for(;e.length>0;)e.shift()(r)}r.locateFile?X(v="bocfel-core.wasm")||(t=v,v=r.locateFile?r.locateFile(t,S):S+t):v=new URL(rp).href;var Q=[],ee=0,er=0;function et(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){p[this.ptr+4>>2]=e},this.get_type=function(){return p[this.ptr+4>>2]},this.set_destructor=function(e){p[this.ptr+8>>2]=e},this.get_destructor=function(){return p[this.ptr+8>>2]},this.set_refcount=function(e){h[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,d[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=d[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,d[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=d[this.ptr+13>>0]},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=h[this.ptr>>2];h[this.ptr>>2]=e+1},this.release_ref=function(){var e=h[this.ptr>>2];return h[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){p[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return p[this.ptr+16>>2]},this.get_exception_ptr=function(){if(eI(this.get_type()))return p[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}function en(){var e=er;if(!e)return eN(0),0;var r=new et(e);r.set_adjusted_ptr(e);var t=r.get_type();if(!t)return eN(0),e;for(var n=0;n"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=eo.isAbs(e),t="/"===e.substr(-1);return(e=eo.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=eo.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=eo.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return -1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments);return eo.normalize(e.join("/"))},join2:(e,r)=>eo.normalize(e+"/"+r)},ea={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:el.cwd();if("string"!=typeof n)throw TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=eo.isAbs(n)}return e=eo.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"),(r?"/":"")+e||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=ea.resolve(e).substr(1),r=ea.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t:T(e)+1),o=C(e,n,0,n.length);return r&&(n.length=o),n}var es={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){es.ttys[e]={input:[],output:[],ops:r},el.registerDevice(e,es.stream_ops)},stream_ops:{open:function(e){var r=es.ttys[e.node.rdev];if(!r)throw new el.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new el.ErrnoError(60);for(var a,i=0,s=0;s0&&(D(x(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(F(x(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(F(x(e.output,0)),e.output=[])}}},eu={ops_table:null,mount:function(e){return eu.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(el.isBlkdev(t)||el.isFIFO(t))throw new el.ErrnoError(63);eu.ops_table||(eu.ops_table={dir:{node:{getattr:eu.node_ops.getattr,setattr:eu.node_ops.setattr,lookup:eu.node_ops.lookup,mknod:eu.node_ops.mknod,rename:eu.node_ops.rename,unlink:eu.node_ops.unlink,rmdir:eu.node_ops.rmdir,readdir:eu.node_ops.readdir,symlink:eu.node_ops.symlink},stream:{llseek:eu.stream_ops.llseek}},file:{node:{getattr:eu.node_ops.getattr,setattr:eu.node_ops.setattr},stream:{llseek:eu.stream_ops.llseek,read:eu.stream_ops.read,write:eu.stream_ops.write,allocate:eu.stream_ops.allocate,mmap:eu.stream_ops.mmap,msync:eu.stream_ops.msync}},link:{node:{getattr:eu.node_ops.getattr,setattr:eu.node_ops.setattr,readlink:eu.node_ops.readlink},stream:{}},chrdev:{node:{getattr:eu.node_ops.getattr,setattr:eu.node_ops.setattr},stream:el.chrdev_stream_ops}});var o=el.createNode(e,r,t,n);return el.isDir(o.mode)?(o.node_ops=eu.ops_table.dir.node,o.stream_ops=eu.ops_table.dir.stream,o.contents={}):el.isFile(o.mode)?(o.node_ops=eu.ops_table.file.node,o.stream_ops=eu.ops_table.file.stream,o.usedBytes=0,o.contents=null):el.isLink(o.mode)?(o.node_ops=eu.ops_table.link.node,o.stream_ops=eu.ops_table.link.stream):el.isChrdev(o.mode)&&(o.node_ops=eu.ops_table.chrdev.node,o.stream_ops=eu.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r){if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}}},node_ops:{getattr:function(e){var r={};return r.dev=el.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,el.isDir(e.mode)?r.size=4096:el.isFile(e.mode)?r.size=e.usedBytes:el.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&eu.resizeFileStorage(e,r.size)},lookup:function(e,r){throw el.genericErrors[44]},mknod:function(e,r,t,n){return eu.createNode(e,r,t,n)},rename:function(e,r,t){if(el.isDir(e.mode)){var n;try{n=el.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new el.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=el.lookupNode(e,r);for(var n in t.contents)throw new el.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=eu.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!el.isLink(e.mode))throw new el.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||t+r{if(!(e=ea.resolve(e)))return{path:"",node:null};if((r=Object.assign({follow_mount:!0,recurse_count:0},r)).recurse_count>8)throw new el.ErrnoError(32);for(var t=e.split("/").filter(e=>!!e),n=el.root,o="/",a=0;a40)throw new el.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var r;;){if(el.isRoot(e)){var t=e.mount.mountpoint;if(!r)return t;return"/"!==t[t.length-1]?t+"/"+r:t+r}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%el.nameTable.length},hashAddNode:e=>{var r=el.hashName(e.parent.id,e.name);e.name_next=el.nameTable[r],el.nameTable[r]=e},hashRemoveNode:e=>{var r=el.hashName(e.parent.id,e.name);if(el.nameTable[r]===e)el.nameTable[r]=e.name_next;else for(var t=el.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=el.mayLookup(e);if(t)throw new el.ErrnoError(t,e);for(var n=el.hashName(e.id,r),o=el.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return el.lookup(e,r)},createNode:(e,r,t,n)=>{var o=new el.FSNode(e,r,t,n);return el.hashAddNode(o),o},destroyNode:e=>{el.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>(61440&e)==32768,isDir:e=>(61440&e)==16384,isLink:e=>(61440&e)==40960,isChrdev:e=>(61440&e)==8192,isBlkdev:e=>(61440&e)==24576,isFIFO:e=>(61440&e)==4096,isSocket:e=>(49152&e)==49152,flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=el.flagModes[e];if(void 0===r)throw Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>el.ignorePermissions?0:r.includes("r")&&!(292&e.mode)||r.includes("w")&&!(146&e.mode)||r.includes("x")&&!(73&e.mode)?2:0,mayLookup:e=>el.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,r)=>{try{return el.lookupNode(e,r),20}catch(e){}return el.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{try{n=el.lookupNode(e,r)}catch(e){return e.errno}var n,o=el.nodePermissions(e,"wx");if(o)return o;if(t){if(!el.isDir(n.mode))return 54;if(el.isRoot(n)||el.getPath(n)===el.cwd())return 10}else if(el.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?el.isLink(e.mode)?32:el.isDir(e.mode)&&("r"!==el.flagsToPermissionString(r)||512&r)?31:el.nodePermissions(e,el.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,r=el.MAX_OPEN_FDS)=>{for(var t=e;t<=r;t++)if(!el.streams[t])return t;throw new el.ErrnoError(33)},getStream:e=>el.streams[e],createStream:(e,r,t)=>{el.FSStream||(el.FSStream=function(){this.shared={}},el.FSStream.prototype={},Object.defineProperties(el.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return(2097155&this.flags)!=1}},isWrite:{get:function(){return(2097155&this.flags)!=0}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new el.FSStream,e);var n=el.nextfd(r,t);return e.fd=n,el.streams[n]=e,e},closeStream:e=>{el.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=el.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new el.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{el.devices[e]={stream_ops:r}},getDevice:e=>el.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),el.syncFSRequests++,el.syncFSRequests>1&&F("warning: "+el.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=el.getMounts(el.root.mount),n=0;function o(e){return el.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach(r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)})},mount:(e,r,t)=>{var n,o="/"===t,a=!t;if(o&&el.root)throw new el.ErrnoError(10);if(!o&&!a){var i=el.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,el.isMountpoint(n))throw new el.ErrnoError(10);if(!el.isDir(n.mode))throw new el.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?el.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:e=>{var r=el.lookupPath(e,{follow_mount:!1});if(!el.isMountpoint(r.node))throw new el.ErrnoError(28);var t=r.node,n=t.mounted,o=el.getMounts(n);Object.keys(el.nameTable).forEach(e=>{for(var r=el.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&el.destroyNode(r),r=t}}),t.mounted=null;var a=t.mount.mounts.indexOf(n);t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=el.lookupPath(e,{parent:!0}).node,o=eo.basename(e);if(!o||"."===o||".."===o)throw new el.ErrnoError(28);var a=el.mayCreate(n,o);if(a)throw new el.ErrnoError(a);if(!n.node_ops.mknod)throw new el.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=(void 0!==r?r:438)&4095|32768,el.mknod(e,r,0)),mkdir:(e,r)=>(r=(void 0!==r?r:511)&1023|16384,el.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,el.mknod(e,r,t)),symlink:(e,r)=>{if(!ea.resolve(e))throw new el.ErrnoError(44);var t=el.lookupPath(r,{parent:!0}).node;if(!t)throw new el.ErrnoError(44);var n=eo.basename(r),o=el.mayCreate(t,n);if(o)throw new el.ErrnoError(o);if(!t.node_ops.symlink)throw new el.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o,a=eo.dirname(e),i=eo.dirname(r),s=eo.basename(e),u=eo.basename(r);if(t=el.lookupPath(e,{parent:!0}).node,n=el.lookupPath(r,{parent:!0}).node,!t||!n)throw new el.ErrnoError(44);if(t.mount!==n.mount)throw new el.ErrnoError(75);var l=el.lookupNode(t,s),c=ea.relative(e,i);if("."!==c.charAt(0))throw new el.ErrnoError(28);if("."!==(c=ea.relative(r,a)).charAt(0))throw new el.ErrnoError(55);try{o=el.lookupNode(n,u)}catch(e){}if(l!==o){var d=el.isDir(l.mode),f=el.mayDelete(t,s,d);if(f||(f=o?el.mayDelete(n,u,d):el.mayCreate(n,u)))throw new el.ErrnoError(f);if(!t.node_ops.rename)throw new el.ErrnoError(63);if(el.isMountpoint(l)||o&&el.isMountpoint(o))throw new el.ErrnoError(10);if(n!==t&&(f=el.nodePermissions(t,"w")))throw new el.ErrnoError(f);el.hashRemoveNode(l);try{t.node_ops.rename(l,n,u)}catch(e){throw e}finally{el.hashAddNode(l)}}},rmdir:e=>{var r=el.lookupPath(e,{parent:!0}).node,t=eo.basename(e),n=el.lookupNode(r,t),o=el.mayDelete(r,t,!0);if(o)throw new el.ErrnoError(o);if(!r.node_ops.rmdir)throw new el.ErrnoError(63);if(el.isMountpoint(n))throw new el.ErrnoError(10);r.node_ops.rmdir(r,t),el.destroyNode(n)},readdir:e=>{var r=el.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new el.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=el.lookupPath(e,{parent:!0}).node;if(!r)throw new el.ErrnoError(44);var t=eo.basename(e),n=el.lookupNode(r,t),o=el.mayDelete(r,t,!1);if(o)throw new el.ErrnoError(o);if(!r.node_ops.unlink)throw new el.ErrnoError(63);if(el.isMountpoint(n))throw new el.ErrnoError(10);r.node_ops.unlink(r,t),el.destroyNode(n)},readlink:e=>{var r=el.lookupPath(e).node;if(!r)throw new el.ErrnoError(44);if(!r.node_ops.readlink)throw new el.ErrnoError(28);return ea.resolve(el.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=el.lookupPath(e,{follow:!r}).node;if(!t)throw new el.ErrnoError(44);if(!t.node_ops.getattr)throw new el.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>el.stat(e,!0),chmod:(e,r,t)=>{var n;if(!(n="string"==typeof e?el.lookupPath(e,{follow:!t}).node:e).node_ops.setattr)throw new el.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{el.chmod(e,r,!0)},fchmod:(e,r)=>{var t=el.getStream(e);if(!t)throw new el.ErrnoError(8);el.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;if(!(o="string"==typeof e?el.lookupPath(e,{follow:!n}).node:e).node_ops.setattr)throw new el.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{el.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=el.getStream(e);if(!n)throw new el.ErrnoError(8);el.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new el.ErrnoError(28);if("string"==typeof e){var t;t=el.lookupPath(e,{follow:!0}).node}else t=e;if(!t.node_ops.setattr)throw new el.ErrnoError(63);if(el.isDir(t.mode))throw new el.ErrnoError(31);if(!el.isFile(t.mode))throw new el.ErrnoError(28);var n=el.nodePermissions(t,"w");if(n)throw new el.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=el.getStream(e);if(!t)throw new el.ErrnoError(8);if((2097155&t.flags)==0)throw new el.ErrnoError(28);el.truncate(t.node,r)},utime:(e,r,t)=>{var n=el.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(e,t,n)=>{if(""===e)throw new el.ErrnoError(44);if(t="string"==typeof t?el.modeStringToFlags(t):t,n=void 0===n?438:n,n=64&t?4095&n|32768:0,"object"==typeof e)o=e;else{e=eo.normalize(e);try{var o;o=el.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var a=!1;if(64&t){if(o){if(128&t)throw new el.ErrnoError(20)}else o=el.mknod(e,n,0),a=!0}if(!o)throw new el.ErrnoError(44);if(el.isChrdev(o.mode)&&(t&=-513),65536&t&&!el.isDir(o.mode))throw new el.ErrnoError(54);if(!a){var i=el.mayOpen(o,t);if(i)throw new el.ErrnoError(i)}512&t&&!a&&el.truncate(o,0),t&=-131713;var s=el.createStream({node:o,path:el.getPath(o),flags:t,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),!r.logReadFiles||1&t||(el.readFiles||(el.readFiles={}),e in el.readFiles||(el.readFiles[e]=1)),s},close:e=>{if(el.isClosed(e))throw new el.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{el.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(el.isClosed(e))throw new el.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new el.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new el.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new el.ErrnoError(28);if(el.isClosed(e)||(2097155&e.flags)==1)throw new el.ErrnoError(8);if(el.isDir(e.node.mode))throw new el.ErrnoError(31);if(!e.stream_ops.read)throw new el.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new el.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new el.ErrnoError(28);if(el.isClosed(e)||(2097155&e.flags)==0)throw new el.ErrnoError(8);if(el.isDir(e.node.mode))throw new el.ErrnoError(31);if(!e.stream_ops.write)throw new el.ErrnoError(28);e.seekable&&1024&e.flags&&el.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new el.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(el.isClosed(e))throw new el.ErrnoError(8);if(r<0||t<=0)throw new el.ErrnoError(28);if((2097155&e.flags)==0)throw new el.ErrnoError(8);if(!el.isFile(e.node.mode)&&!el.isDir(e.node.mode))throw new el.ErrnoError(43);if(!e.stream_ops.allocate)throw new el.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o)=>{if((2&n)!=0&&(2&o)==0&&(2097155&e.flags)!=2||(2097155&e.flags)==1)throw new el.ErrnoError(2);if(!e.stream_ops.mmap)throw new el.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:(e,r,t,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new el.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:(e,r={})=>{if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw Error('Invalid encoding type "'+r.encoding+'"');var t,n=el.open(e,r.flags),o=el.stat(e).size,a=new Uint8Array(o);return el.read(n,a,0,o,0),"utf8"===r.encoding?t=x(a,0):"binary"===r.encoding&&(t=a),el.close(n),t},writeFile:(e,r,t={})=>{t.flags=t.flags||577;var n=el.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(T(r)+1),a=C(r,o,0,o.length);el.write(n,o,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))el.write(n,r,0,r.byteLength,void 0,t.canOwn);else throw Error("Unsupported data type");el.close(n)},cwd:()=>el.currentPath,chdir:e=>{var r=el.lookupPath(e,{follow:!0});if(null===r.node)throw new el.ErrnoError(44);if(!el.isDir(r.node.mode))throw new el.ErrnoError(54);var t=el.nodePermissions(r.node,"x");if(t)throw new el.ErrnoError(t);el.currentPath=r.path},createDefaultDirectories:()=>{el.mkdir("/tmp"),el.mkdir("/home"),el.mkdir("/home/web_user")},createDefaultDevices:()=>{el.mkdir("/dev"),el.registerDevice(el.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),el.mkdev("/dev/null",el.makedev(1,3)),es.register(el.makedev(5,0),es.default_tty_ops),es.register(el.makedev(6,0),es.default_tty1_ops),el.mkdev("/dev/tty",el.makedev(5,0)),el.mkdev("/dev/tty1",el.makedev(6,0));var e=function(){if("object"!=typeof crypto||"function"!=typeof crypto.getRandomValues)return()=>V("randomDevice");var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}();el.createDevice("/dev","random",e),el.createDevice("/dev","urandom",e),el.mkdir("/dev/shm"),el.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{el.mkdir("/proc");var e=el.mkdir("/proc/self");el.mkdir("/proc/self/fd"),el.mount({mount:()=>{var r=el.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=el.getStream(+r);if(!t)throw new el.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>t.path}};return n.parent=n,n}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{r.stdin?el.createDevice("/dev","stdin",r.stdin):el.symlink("/dev/tty","/dev/stdin"),r.stdout?el.createDevice("/dev","stdout",null,r.stdout):el.symlink("/dev/tty","/dev/stdout"),r.stderr?el.createDevice("/dev","stderr",null,r.stderr):el.symlink("/dev/tty1","/dev/stderr"),el.open("/dev/stdin",0),el.open("/dev/stdout",1),el.open("/dev/stderr",1)},ensureErrnoError:()=>{el.ErrnoError||(el.ErrnoError=function(e,r){this.name="ErrnoError",this.node=r,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},el.ErrnoError.prototype=Error(),el.ErrnoError.prototype.constructor=el.ErrnoError,[44].forEach(e=>{el.genericErrors[e]=new el.ErrnoError(e),el.genericErrors[e].stack=""}))},staticInit:()=>{el.ensureErrnoError(),el.nameTable=Array(4096),el.mount(eu,{},"/"),el.createDefaultDirectories(),el.createDefaultDevices(),el.createSpecialDirectories(),el.filesystems={MEMFS:eu}},init:(e,t,n)=>{el.init.initialized=!0,el.ensureErrnoError(),r.stdin=e||r.stdin,r.stdout=t||r.stdout,r.stderr=n||r.stderr,el.createStandardStreams()},quit:()=>{el.init.initialized=!1,eM(0);for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=el.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{var t=el.lookupPath(e,{follow:!r});e=t.path}catch(e){}var n={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var t=el.lookupPath(e,{parent:!0});n.parentExists=!0,n.parentPath=t.path,n.parentObject=t.node,n.name=eo.basename(e),t=el.lookupPath(e,{follow:!r}),n.exists=!0,n.path=t.path,n.object=t.node,n.name=t.node.name,n.isRoot="/"===t.path}catch(e){n.error=e.errno}return n},createPath:(e,r,t,n)=>{e="string"==typeof e?e:el.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=eo.join2(e,a);try{el.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=eo.join2("string"==typeof e?e:el.getPath(e),r),i=el.getMode(n,o);return el.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:el.getPath(e),i=r?eo.join2(e,r):e);var s=el.getMode(n,o),u=el.create(i,s);if(t){if("string"==typeof t){for(var l=Array(t.length),c=0,d=t.length;c{var o=eo.join2("string"==typeof e?e:el.getPath(e),r),a=el.getMode(!!t,!!n);el.createDevice.major||(el.createDevice.major=64);var i=el.makedev(el.createDevice.major++,0);return el.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i,s=0,u=0;u{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(a)try{e.contents=ei(a(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new el.ErrnoError(29)}else throw Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1)&&!(e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e,r=new XMLHttpRequest;if(r.open("HEAD",t,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw Error("Couldn't load "+t+". Status: "+r.status);var n=Number(r.getResponseHeader("Content-length")),o=(e=r.getResponseHeader("Accept-Ranges"))&&"bytes"===e,a=(e=r.getResponseHeader("Content-Encoding"))&&"gzip"===e,i=1048576;o||(i=n);var s=(e,r)=>{if(e>r)throw Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):ei(o.responseText||"",!0)},u=this;u.setDataGetter(e=>{var r=e*i,t=(e+1)*i-1;if(t=Math.min(t,n-1),void 0===u.chunks[e]&&(u.chunks[e]=s(r,t)),void 0===u.chunks[e])throw Error("doXHR failed!");return u.chunks[e]}),(a||!n)&&(i=n=1,i=n=this.getter(0).length,D("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){var i;throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"}var i={isDevice:!1,url:t},s=el.createFile(e,r,i,n,o);i.contents?s.contents=i.contents:i.url&&(s.contents=null,s.url=i.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};function l(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var s=0;s{var r=s.stream_ops[e];u[e]=function(){return el.forceLoadFile(s),r.apply(null,arguments)}}),u.read=(e,r,t,n,o)=>(el.forceLoadFile(s),l(e,r,t,n,o)),u.mmap=(e,r,t,n,o)=>{el.forceLoadFile(s);var a=void V();if(!a)throw new el.ErrnoError(48);return l(e,d,a,r,t),{ptr:a,allocated:!0}},s.stream_ops=u,s},createPreloadedFile:(e,r,t,n,o,a,s,u,l,c)=>{var d,f,m=r?ea.resolve(eo.join2(e,r)):e,h="cp "+m;function p(t){function i(t){c&&c(),u||el.createDataFile(e,r,t,n,o,l),a&&a(),G(h)}Browser.handledByPreloadPlugin(t,m,i,()=>{s&&s(),G(h)})||i(t)}Y(h),"string"==typeof t?(d=e=>p(e),f="al "+t,i(t,e=>{var r;r='Loading data file "'+t+'" failed (no arrayBuffer).',e||V(r),d(new Uint8Array(e)),f&&G(f)},e=>{if(s)s();else throw'Loading data file "'+t+'" failed.'}),f&&Y(f)):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r=()=>{},t=()=>{})=>{var n=el.indexedDB();try{var o=n.open(el.DB_NAME(),el.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{D("creating db"),o.result.createObjectStore(el.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([el.DB_STORE_NAME],"readwrite"),a=n.objectStore(el.DB_STORE_NAME),i=0,s=0,u=e.length;function l(){0==s?r():t()}e.forEach(e=>{var r=a.put(el.analyzePath(e).object.contents,e);r.onsuccess=()=>{++i+s==u&&l()},r.onerror=()=>{i+ ++s==u&&l()}}),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r=()=>{},t=()=>{})=>{var n=el.indexedDB();try{var o=n.open(el.DB_NAME(),el.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var a=n.transaction([el.DB_STORE_NAME],"readonly")}catch(e){t(e);return}var i=a.objectStore(el.DB_STORE_NAME),s=0,u=0,l=e.length;function c(){0==u?r():t()}e.forEach(e=>{var r=i.get(e);r.onsuccess=()=>{el.analyzePath(e).exists&&el.unlink(e),el.createDataFile(eo.dirname(e),eo.basename(e),r.result,!0,!0,!0),++s+u==l&&c()},r.onerror=()=>{s+ ++u==l&&c()}}),a.onerror=t},o.onerror=t}},ec={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(eo.isAbs(r))return r;if(-100===e)n=el.cwd();else{var n;n=ec.getStreamFromFD(e).path}if(0==r.length){if(!t)throw new el.ErrnoError(44);return n}return eo.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&eo.normalize(r)!==eo.normalize(el.getPath(e.node)))return -54;throw e}h[t>>2]=n.dev,h[t+8>>2]=n.ino,h[t+12>>2]=n.mode,p[t+16>>2]=n.nlink,h[t+20>>2]=n.uid,h[t+24>>2]=n.gid,h[t+28>>2]=n.rdev,g=[n.size>>>0,+Math.abs(w=n.size)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+40>>2]=g[0],h[t+44>>2]=g[1],h[t+48>>2]=4096,h[t+52>>2]=n.blocks;var o=n.atime.getTime(),a=n.mtime.getTime(),i=n.ctime.getTime();return g=[Math.floor(o/1e3)>>>0,+Math.abs(w=Math.floor(o/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+56>>2]=g[0],h[t+60>>2]=g[1],p[t+64>>2]=o%1e3*1e3,g=[Math.floor(a/1e3)>>>0,+Math.abs(w=Math.floor(a/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+72>>2]=g[0],h[t+76>>2]=g[1],p[t+80>>2]=a%1e3*1e3,g=[Math.floor(i/1e3)>>>0,+Math.abs(w=Math.floor(i/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+88>>2]=g[0],h[t+92>>2]=g[1],p[t+96>>2]=i%1e3*1e3,g=[n.ino>>>0,+Math.abs(w=n.ino)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+104>>2]=g[0],h[t+108>>2]=g[1],0},doMsync:function(e,r,t,n,o){if(!el.isFile(r.node.mode))throw new el.ErrnoError(43);if(2&n)return 0;var a=f.slice(e,e+t);el.msync(r,a,o,t,n)},varargs:void 0,get:function(){return ec.varargs+=4,h[ec.varargs-4>>2]},getStr:function(e){return R(e)},getStreamFromFD:function(e){var r=el.getStream(e);if(!r)throw new el.ErrnoError(8);return r}};function ed(e){return e%4==0&&(e%100!=0||e%400==0)}var ef=[0,31,60,91,121,152,182,213,244,274,305,335],em=[0,31,59,90,120,151,181,212,243,273,304,334];function eh(e){var r=T(e)+1,t=ex(r);return t&&C(e,d,t,r),t}var ep={};function ev(){if(!ev.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:b||"./this.program"};for(var r in ep)void 0===ep[r]?delete e[r]:e[r]=ep[r];var t=[];for(var r in e)t.push(r+"="+e[r]);ev.strings=t}return ev.strings}function ew(e,t){c=e,M||U>0||(eC(),Z(j),el.quit(),es.shutdown(),L=!0),c=e,M||U>0||(r.onExit&&r.onExit(e),P=!0),k(e,new J(e))}var eg=[31,29,31,30,31,30,31,31,30,31,30,31],e_=[31,28,31,30,31,30,31,31,30,31,30,31];function ey(e,r,t,n){var o=h[n+40>>2],a={tm_sec:h[n>>2],tm_min:h[n+4>>2],tm_hour:h[n+8>>2],tm_mday:h[n+12>>2],tm_mon:h[n+16>>2],tm_year:h[n+20>>2],tm_wday:h[n+24>>2],tm_yday:h[n+28>>2],tm_isdst:h[n+32>>2],tm_gmtoff:h[n+36>>2],tm_zone:o?R(o):""},i=R(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)i=i.replace(RegExp(u,"g"),s[u]);var l=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"];function f(e,r,t){for(var n="number"==typeof e?e.toString():e||"";n.length0?1:0}return 0===(t=n(e.getFullYear()-r.getFullYear()))&&0===(t=n(e.getMonth()-r.getMonth()))&&(t=n(e.getDate()-r.getDate())),t}function v(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function w(e){var r=function(e,r){for(var t=new Date(e.getTime());r>0;){var n=ed(t.getFullYear()),o=t.getMonth(),a=(n?eg:e_)[o];if(r>a-t.getDate())r-=a-t.getDate()+1,t.setDate(1),o<11?t.setMonth(o+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else{t.setDate(t.getDate()+r);break}}return t}(new Date(e.tm_year+1900,0,1),e.tm_yday),t=new Date(r.getFullYear(),0,4),n=new Date(r.getFullYear()+1,0,4),o=v(t),a=v(n);return 0>=p(o,r)?0>=p(a,r)?r.getFullYear()+1:r.getFullYear():r.getFullYear()-1}var g={"%a":function(e){return l[e.tm_wday].substring(0,3)},"%A":function(e){return l[e.tm_wday]},"%b":function(e){return c[e.tm_mon].substring(0,3)},"%B":function(e){return c[e.tm_mon]},"%C":function(e){return m((e.tm_year+1900)/100|0,2)},"%d":function(e){return m(e.tm_mday,2)},"%e":function(e){return f(e.tm_mday,2," ")},"%g":function(e){return w(e).toString().substring(2)},"%G":function(e){return w(e)},"%H":function(e){return m(e.tm_hour,2)},"%I":function(e){var r=e.tm_hour;return 0==r?r=12:r>12&&(r-=12),m(r,2)},"%j":function(e){return m(e.tm_mday+function(e,r){for(var t=0,n=0;n<=r;t+=e[n++]);return t}(ed(e.tm_year+1900)?eg:e_,e.tm_mon-1),3)},"%m":function(e){return m(e.tm_mon+1,2)},"%M":function(e){return m(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return m(e.tm_sec,2)},"%t":function(){return" "},"%u":function(e){return e.tm_wday||7},"%U":function(e){return m(Math.floor((e.tm_yday+7-e.tm_wday)/7),2)},"%V":function(e){var r=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&r++,r){if(53==r){var t=(e.tm_wday+371-e.tm_yday)%7;4==t||3==t&&ed(e.tm_year)||(r=1)}}else{r=52;var n=(e.tm_wday+7-e.tm_yday-1)%7;(4==n||5==n&&ed(e.tm_year%400-1))&&r++}return m(r,2)},"%w":function(e){return e.tm_wday},"%W":function(e){return m(Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var r=e.tm_gmtoff;return(r>=0?"+":"-")+String("0000"+(r=(r=Math.abs(r)/60)/60*100+r%60)).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in i=i.replace(/%%/g,"\x00\x00"),g)i.includes(u)&&(i=i.replace(RegExp(u,"g"),g[u](a)));var _=ei(i=i.replace(/\0\0/g,"%"),!1);return _.length>r?0:(d.set(_,e),_.length-1)}function eE(e){if(e instanceof J||"unwind"==e)return c;k(1,e)}function eb(e){try{return e()}catch(e){V(e)}}var ek={instrumentWasmImports:function(e){var r=["invoke_*","emscripten_sleep","emscripten_wget","emscripten_wget_data","emscripten_idb_load","emscripten_idb_store","emscripten_idb_delete","emscripten_idb_exists","emscripten_idb_load_blob","emscripten_idb_store_blob","SDL_Delay","emscripten_scan_registers","emscripten_lazy_load_code","emscripten_fiber_swap","__load_secondary_module","fd_sync","__wasi_fd_sync","_emval_await","_dlopen_js","__asyncjs__*"];for(var t in e)!function(t){var n=e[t];n.sig,"function"==typeof n&&(r.indexOf(t)>=0||t.startsWith("__asyncjs__"))}(t)},instrumentWasmExports:function(e){var r={};for(var t in e)!function(t){var n=e[t];"function"==typeof n?r[t]=function(){ek.exportCallStack.push(t);try{return n.apply(null,arguments)}finally{P||(ek.exportCallStack.pop()===t||V(void 0),ek.maybeStopUnwind())}}:r[t]=n}(t);return r},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:8192,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(e){var r=ek.callStackNameToId[e];return void 0===r&&(r=ek.callStackId++,ek.callStackNameToId[e]=r,ek.callStackIdToName[r]=e),r},maybeStopUnwind:function(){ek.currData&&ek.state===ek.State.Unwinding&&0===ek.exportCallStack.length&&(ek.state=ek.State.Normal,U+=1,eb(e7),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:function(){return new Promise((e,r)=>{ek.asyncPromiseHandlers={resolve:e,reject:r}})},allocateData:function(){var e=ex(12+ek.StackSize);return ek.setDataHeader(e,e+12,ek.StackSize),ek.setDataRewindFunc(e),e},setDataHeader:function(e,r,t){h[e>>2]=r,h[e+4>>2]=r+t},setDataRewindFunc:function(e){var r=ek.exportCallStack[0],t=ek.getCallStackId(r);h[e+8>>2]=t},getDataRewindFunc:function(e){var t=h[e+8>>2],n=ek.callStackIdToName[t];return r.asm[n]},doRewind:function(e){var r=ek.getDataRewindFunc(e);return U-=1,r()},handleSleep:function(e){if(!P){if(ek.state===ek.State.Normal){var r=!1,t=!1;e((e=0)=>{if(!P&&(ek.handleSleepReturnValue=e,r=!0,t)){ek.state=ek.State.Rewinding,eb(()=>re(ek.currData)),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var n,o=!1;try{n=ek.doRewind(ek.currData)}catch(e){n=e,o=!0}var a=!1;if(!ek.currData){var i=ek.asyncPromiseHandlers;i&&(ek.asyncPromiseHandlers=null,(o?i.reject:i.resolve)(n),a=!0)}if(o&&!a)throw n}}),t=!0,r||(ek.state=ek.State.Unwinding,ek.currData=ek.allocateData(),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause(),eb(()=>e5(ek.currData)))}else ek.state===ek.State.Rewinding?(ek.state=ek.State.Normal,eb(rr),eR(ek.currData),ek.currData=null,ek.sleepCallbacks.forEach(e=>(function(e){if(!L&&!P)try{e(),function(){if(!(M||U>0))try{ew(c)}catch(e){eE(e)}}()}catch(e){eE(e)}})(e))):V("invalid state: "+ek.state);return ek.handleSleepReturnValue}},handleAsync:function(e){return ek.handleSleep(r=>{e().then(r)})}},eS=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=el.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n};Object.defineProperties(eS.prototype,{read:{get:function(){return(365&this.mode)==365},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return(146&this.mode)==146},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return el.isDir(this.mode)}},isDevice:{get:function(){return el.isChrdev(this.mode)}}}),el.FSNode=eS,el.staticInit();var eD={S:function(e,t){return ek.handleAsync(async()=>{r.emglken_stdin_buffers.length||await new Promise(e=>{r.emglken_stdin_ready=e});let n=r.emglken_stdin_buffers.shift(),o=Math.min(n.length,t);return o==n.length?f.set(n,e):(f.set(n.subarray(0,o),e),r.emglken_stdin_buffers.unshift(n.subarray(o))),o})},k:function(e){var r=new et(e);return!r.get_caught()&&(r.set_caught(!0),ee--),r.set_rethrown(!1),Q.push(r),!function(e){e.add_ref()}(r),r.get_exception_ptr()},n:function(){eT(0),function(e){if(e.release_ref()&&!e.get_rethrown()){var r,t=e.get_destructor();t&&(r=e.excPtr,eL.apply(null,[t,r])),eF(e.excPtr)}}(Q.pop()),er=0},a:en,d:en,m:en,s:en,x:en,ca:en,K:function(){var e=Q.pop();e||V("no exception to throw");var r=e.excPtr;throw!e.get_rethrown()&&(Q.push(e),e.set_rethrown(!0),e.set_caught(!1),ee++),er=r,r},o:function(e,r,t){throw new et(e).init(r,t),er=e,ee++,e},ba:function(){return ee},g:function(e){throw er||(er=e),e},aa:function(e,r,t,n){try{if(r=ec.getStr(r),r=ec.calculateAt(e,r),-8&t)return -28;var o=el.lookupPath(r,{follow:!0}).node;if(!o)return -44;var a="";if(4&t&&(a+="r"),2&t&&(a+="w"),1&t&&(a+="x"),a&&el.nodePermissions(o,a))return -2;return 0}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return-e.errno}},J:function(e,r,t){ec.varargs=t;try{var n=ec.getStreamFromFD(e);switch(r){case 0:var o=ec.get();if(o<0)return -28;return el.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=ec.get();return n.flags|=o,0;case 5:var o=ec.get();return m[o+0>>1]=2,0;case 16:case 8:default:return -28;case 9:return h[eP()>>2]=28,-1}}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return-e.errno}},$:function(e,r){try{if(0===r)return -28;var t=el.cwd(),n=T(t)+1;if(r>2]=0,0;case 21520:if(!n.tty)return -59;return -28;case 21531:var o=ec.get();return el.ioctl(n,r,o);default:return -28}}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return-e.errno}},Z:function(e,r,t,n){ec.varargs=n;try{r=ec.getStr(r),r=ec.calculateAt(e,r);var o=n?ec.get():0;return el.open(r,t,o).fd}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return-e.errno}},V:function(){return!0},U:function(e,r){var t=new Date(1e3*(p[e>>2]+4294967296*h[e+4>>2]));h[r>>2]=t.getSeconds(),h[r+4>>2]=t.getMinutes(),h[r+8>>2]=t.getHours(),h[r+12>>2]=t.getDate(),h[r+16>>2]=t.getMonth(),h[r+20>>2]=t.getFullYear()-1900,h[r+24>>2]=t.getDay();var n=0|(ed(t.getFullYear())?ef:em)[t.getMonth()]+t.getDate()-1;h[r+28>>2]=n,h[r+36>>2]=-(60*t.getTimezoneOffset());var o=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=0|(a!=i&&t.getTimezoneOffset()==Math.min(i,a));h[r+32>>2]=s},T:function(e,r,t){var n=new Date().getFullYear(),o=new Date(n,0,1),a=new Date(n,6,1),i=o.getTimezoneOffset(),s=a.getTimezoneOffset();function u(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}p[e>>2]=60*Math.max(i,s),h[r>>2]=Number(i!=s);var l=u(o),c=u(a),d=eh(l),f=eh(c);s>2]=d,p[t+4>>2]=f):(p[t>>2]=f,p[t+4>>2]=d)},D:function(){V("")},B:function(){return Date.now()},R:function(e,r,t){f.copyWithin(e,r,r+t)},Q:function(e){var r=f.length;if((e>>>=0)>2147483648)return!1;let t=(e,r)=>e+(r-e%r)%r;for(var n=1;n<=4;n*=2){var o=r*(1+.2/n);if(o=Math.min(o,e+100663296),function(e){var r=l.buffer;try{return l.grow(e-r.byteLength+65535>>>16),N(),1}catch(e){}}(Math.min(2147483648,t(Math.max(e,o),65536))))return!0}return!1},Y:function(e,r){var t=0;return ev().forEach(function(n,o){var a=r+t;p[e+4*o>>2]=a,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);d[r>>0]=0}(n,a),t+=n.length+1}),0},X:function(e,r){var t=ev();p[e>>2]=t.length;var n=0;return t.forEach(function(e){n+=e.length+1}),p[r>>2]=n,0},C:ew,I:function(e){try{var r=ec.getStreamFromFD(e);return el.close(r),0}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return e.errno}},W:function(e,r,t,n){try{var o=ec.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=el.read(e,d,i,s,n);if(u<0)return -1;if(o+=u,u>2]=a,0}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return e.errno}},P:function(e,r,t,n,o){try{var a=t+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*t:NaN;if(isNaN(a))return 61;var i=ec.getStreamFromFD(e);return el.llseek(i,a,n),g=[i.position>>>0,(w=i.position,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[o>>2]=g[0],h[o+4>>2]=g[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return e.errno}},H:function(e,r,t,n){try{var o=ec.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=el.write(e,d,i,s,n);if(u<0)return -1;o+=u,void 0!==n&&(n+=u)}return o}(o,r,t);return p[n>>2]=a,0}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return e.errno}},G:function(e,r,t,n){var o=ez();try{return e4(e,r,t,n)}catch(e){if(eB(o),e!==e+0)throw e;eT(1,0)}},F:function(e,r,t,n){var o=ez();try{return e2(e,r,t,n)}catch(e){if(eB(o),e!==e+0)throw e;eT(1,0)}},q:function(e){var r=ez();try{return eK(e)}catch(e){if(eB(r),e!==e+0)throw e;eT(1,0)}},b:function(e,r){var t=ez();try{return eL(e,r)}catch(e){if(eB(t),e!==e+0)throw e;eT(1,0)}},c:function(e,r,t){var n=ez();try{return eY(e,r,t)}catch(e){if(eB(n),e!==e+0)throw e;eT(1,0)}},e:function(e,r,t,n){var o=ez();try{return eU(e,r,t,n)}catch(e){if(eB(o),e!==e+0)throw e;eT(1,0)}},p:function(e,r,t,n,o){var a=ez();try{return eX(e,r,t,n,o)}catch(e){if(eB(a),e!==e+0)throw e;eT(1,0)}},u:function(e,r,t,n,o,a){var i=ez();try{return eV(e,r,t,n,o,a)}catch(e){if(eB(i),e!==e+0)throw e;eT(1,0)}},w:function(e,r,t,n,o,a,i){var s=ez();try{return e$(e,r,t,n,o,a,i)}catch(e){if(eB(s),e!==e+0)throw e;eT(1,0)}},E:function(e,r,t,n,o,a,i,s){var u=ez();try{return e0(e,r,t,n,o,a,i,s)}catch(e){if(eB(u),e!==e+0)throw e;eT(1,0)}},A:function(e,r,t,n,o,a,i,s,u,l,c,d){var f=ez();try{return e3(e,r,t,n,o,a,i,s,u,l,c,d)}catch(e){if(eB(f),e!==e+0)throw e;eT(1,0)}},O:function(e,r){var t=ez();try{return eZ(e,r)}catch(e){if(eB(t),e!==e+0)throw e;eT(1,0)}},N:function(e,r,t,n,o){var a=ez();try{return e1(e,r,t,n,o)}catch(e){if(eB(a),e!==e+0)throw e;eT(1,0)}},h:function(e){var r=ez();try{eW(e)}catch(e){if(eB(r),e!==e+0)throw e;eT(1,0)}},i:function(e,r){var t=ez();try{eq(e,r)}catch(e){if(eB(t),e!==e+0)throw e;eT(1,0)}},f:function(e,r,t){var n=ez();try{eG(e,r,t)}catch(e){if(eB(n),e!==e+0)throw e;eT(1,0)}},j:function(e,r,t,n){var o=ez();try{eH(e,r,t,n)}catch(e){if(eB(o),e!==e+0)throw e;eT(1,0)}},r:function(e,r,t,n,o){var a=ez();try{eJ(e,r,t,n,o)}catch(e){if(eB(a),e!==e+0)throw e;eT(1,0)}},t:function(e,r,t,n,o,a){var i=ez();try{eQ(e,r,t,n,o,a)}catch(e){if(eB(i),e!==e+0)throw e;eT(1,0)}},v:function(e,r,t,n,o,a,i,s){var u=ez();try{e6(e,r,t,n,o,a,i,s)}catch(e){if(eB(u),e!==e+0)throw e;eT(1,0)}},y:function(e,r,t,n,o,a,i,s,u,l,c){var d=ez();try{e9(e,r,t,n,o,a,i,s,u,l,c)}catch(e){if(eB(d),e!==e+0)throw e;eT(1,0)}},z:function(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p){var v=ez();try{e8(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p)}catch(e){if(eB(v),e!==e+0)throw e;eT(1,0)}},l:function(e){return e},M:ey,L:function(e,r,t,n,o){return ey(e,r,t,n)}};!function(){var e,t,n,a={a:eD};function i(e,t){var n,o=e.exports;return o=ek.instrumentWasmExports(o),r.asm=o,l=r.asm.da,N(),r.asm.na,n=r.asm.ea,B.unshift(n),G("wasm-instantiate"),o}if(Y("wasm-instantiate"),r.instantiateWasm)try{return r.instantiateWasm(a,i)}catch(e){F("Module.instantiateWasm callback failed with error: "+e),o(e)}(e=u,t=v,n=function(e){i(e.instance)},e||"function"!=typeof WebAssembly.instantiateStreaming||X(t)||"function"!=typeof fetch?$(t,a,n):fetch(t,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,a).then(n,function(e){return F("wasm streaming compile failed: "+e),F("falling back to ArrayBuffer instantiation"),$(t,a,n)})})).catch(o)}();var eF=function(){return(eF=r.asm.fa).apply(null,arguments)},eM=r._fflush=function(){return(eM=r._fflush=r.asm.ga).apply(null,arguments)},eP=function(){return(eP=r.asm.ha).apply(null,arguments)},eA=r._main=function(){return(eA=r._main=r.asm.ia).apply(null,arguments)},ex=function(){return(ex=r.asm.ja).apply(null,arguments)},eR=function(){return(eR=r.asm.ka).apply(null,arguments)},eC=(r._gidispatch_get_game_id=function(){return(r._gidispatch_get_game_id=r.asm.la).apply(null,arguments)},function(){return(eC=r.asm.ma).apply(null,arguments)}),eT=function(){return(eT=r.asm.oa).apply(null,arguments)},eN=function(){return(eN=r.asm.pa).apply(null,arguments)},ez=function(){return(ez=r.asm.qa).apply(null,arguments)},eB=function(){return(eB=r.asm.ra).apply(null,arguments)},eO=function(){return(eO=r.asm.sa).apply(null,arguments)},ej=function(){return(ej=r.asm.ta).apply(null,arguments)},eI=function(){return(eI=r.asm.ua).apply(null,arguments)},eL=r.dynCall_ii=function(){return(eL=r.dynCall_ii=r.asm.va).apply(null,arguments)},eU=r.dynCall_iiii=function(){return(eU=r.dynCall_iiii=r.asm.wa).apply(null,arguments)},eH=r.dynCall_viii=function(){return(eH=r.dynCall_viii=r.asm.xa).apply(null,arguments)},eW=r.dynCall_v=function(){return(eW=r.dynCall_v=r.asm.ya).apply(null,arguments)},eq=r.dynCall_vi=function(){return(eq=r.dynCall_vi=r.asm.za).apply(null,arguments)},eY=r.dynCall_iii=function(){return(eY=r.dynCall_iii=r.asm.Aa).apply(null,arguments)},eG=r.dynCall_vii=function(){return(eG=r.dynCall_vii=r.asm.Ba).apply(null,arguments)},eV=r.dynCall_iiiiii=function(){return(eV=r.dynCall_iiiiii=r.asm.Ca).apply(null,arguments)},eX=r.dynCall_iiiii=function(){return(eX=r.dynCall_iiiii=r.asm.Da).apply(null,arguments)},eK=r.dynCall_i=function(){return(eK=r.dynCall_i=r.asm.Ea).apply(null,arguments)},e$=r.dynCall_iiiiiii=function(){return(e$=r.dynCall_iiiiiii=r.asm.Fa).apply(null,arguments)},eJ=r.dynCall_viiii=function(){return(eJ=r.dynCall_viiii=r.asm.Ga).apply(null,arguments)},eZ=r.dynCall_ji=function(){return(eZ=r.dynCall_ji=r.asm.Ha).apply(null,arguments)},eQ=r.dynCall_viiiii=function(){return(eQ=r.dynCall_viiiii=r.asm.Ia).apply(null,arguments)},e0=r.dynCall_iiiiiiii=function(){return(e0=r.dynCall_iiiiiiii=r.asm.Ja).apply(null,arguments)},e1=r.dynCall_jiiii=function(){return(e1=r.dynCall_jiiii=r.asm.Ka).apply(null,arguments)},e2=r.dynCall_fiii=function(){return(e2=r.dynCall_fiii=r.asm.La).apply(null,arguments)},e4=r.dynCall_diii=function(){return(e4=r.dynCall_diii=r.asm.Ma).apply(null,arguments)},e6=r.dynCall_viiiiiii=function(){return(e6=r.dynCall_viiiiiii=r.asm.Na).apply(null,arguments)},e3=r.dynCall_iiiiiiiiiiii=function(){return(e3=r.dynCall_iiiiiiiiiiii=r.asm.Oa).apply(null,arguments)},e9=r.dynCall_viiiiiiiiii=function(){return(e9=r.dynCall_viiiiiiiiii=r.asm.Pa).apply(null,arguments)},e8=r.dynCall_viiiiiiiiiiiiiii=function(){return(e8=r.dynCall_viiiiiiiiiiiiiii=r.asm.Qa).apply(null,arguments)},e5=function(){return(e5=r.asm.Ra).apply(null,arguments)},e7=function(){return(e7=r.asm.Sa).apply(null,arguments)},re=function(){return(re=r.asm.Ta).apply(null,arguments)},rr=function(){return(rr=r.asm.Ua).apply(null,arguments)};function rt(e=E){!(H>0)&&(!function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;){var e;e=r.preRun.shift(),z.unshift(e)}Z(z)}(),H>0||(r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),t()},1)):t()));function t(){!_&&(_=!0,r.calledRun=!0,P||(r.noFSInit||el.init.initialized||el.init(),el.ignorePermissions=!1,es.init(),Z(B),Z(O),n(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),rn&&function(e=[]){var r=eA;e.unshift(b);var t=e.length,n=eO((t+1)*4),o=n>>2;e.forEach(e=>{var r,t;h[o++]=(t=eO(r=T(e)+1),C(e,d,t,r),t)}),h[o]=0;try{var a=r(t,n);ew(a,!0)}catch(e){return eE(e)}}(e),function(){if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;){var e;e=r.postRun.shift(),I.unshift(e)}Z(I)}()))}}if(r.___start_em_js=52440,r.___stop_em_js=55125,r.AsciiToString=function(e){for(var r="";;){var t=f[e++>>0];if(!t)return r;r+=String.fromCharCode(t)}},r.FS=el,q=function e(){_||rt(),_||(q=e)},r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();var rn=!0;return r.noInitialRun&&(rn=!1),rt(),r.ready}})(),rw={};rw=new URL(k("6MsPj").resolve("kBXOE"),import.meta.url).toString();var rg=(()=>{var e="file:///node_modules/emglken/build/git-core.js";return function(r={}){var t,n,o,a,i,s,u,l,c,d,f,m,h,p,v,w,g,_,r=void 0!==r?r:{};r.ready=new Promise(function(e,r){n=e,o=r});var y=Object.assign({},r),E=[],b="./this.program",k=(e,r)=>{throw r},S="";"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),e&&(S=e),S=0!==S.indexOf("blob:")?S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):"",a=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},i=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{if(200==n.status||0==n.status&&n.response){r(n.response);return}t()},n.onerror=t,n.send(null)};var D=r.print||console.log.bind(console),F=r.printErr||console.warn.bind(console);Object.assign(r,y),y=null,r.arguments&&(E=r.arguments),r.thisProgram&&(b=r.thisProgram),r.quit&&(k=r.quit),r.wasmBinary&&(u=r.wasmBinary);var M=r.noExitRuntime||!1;"object"!=typeof WebAssembly&&G("no native wasm support detected");var P=!1,A=new TextDecoder("utf8");function x(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;return A.decode(e.buffer?e.subarray(r,o):new Uint8Array(e.slice(r,o)))}function R(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i)),s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function C(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r}function T(){var e=l.buffer;r.HEAP8=d=new Int8Array(e),r.HEAP16=m=new Int16Array(e),r.HEAP32=h=new Int32Array(e),r.HEAPU8=f=new Uint8Array(e),r.HEAPU16=new Uint16Array(e),r.HEAPU32=p=new Uint32Array(e),r.HEAPF32=new Float32Array(e),r.HEAPF64=new Float64Array(e)}var N=[],z=[],B=[],O=[],j=[],I=!1,L=0,U=0,H=null,W=null;function q(e){U++,r.monitorRunDependencies&&r.monitorRunDependencies(U)}function Y(e){if(U--,r.monitorRunDependencies&&r.monitorRunDependencies(U),0==U&&(null!==H&&(clearInterval(H),H=null),W)){var t=W;W=null,t()}}function G(e){r.onAbort&&r.onAbort(e),F(e="Aborted("+e+")"),P=!0,c=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw o(t),t}function V(e){return e.startsWith("data:application/octet-stream;base64,")}function X(e){try{if(e==v&&u)return new Uint8Array(u);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}catch(e){G(e)}}function K(e,r,t){return(u||"function"!=typeof fetch?Promise.resolve().then(function(){return X(e)}):fetch(e,{credentials:"same-origin"}).then(function(r){if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(function(){return X(e)})).then(function(e){return WebAssembly.instantiate(e,r)}).then(function(e){return e}).then(t,function(e){F("failed to asynchronously prepare wasm: "+e),G(e)})}function $(e,r,t,n,o){let a=e>>2,i=p.subarray(a,a+t),s=o?i:i.reduce((e,r)=>e+String.fromCodePoint(r),""),u=n(s),l=Uint32Array.from(u,e=>e.codePointAt(0)),c=l.length;return p.set(l.subarray(0,Math.min(r,c)),a),c}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Z(e){for(;e.length>0;)e.shift()(r)}r.locateFile?V(v="git-core.wasm")||(t=v,v=r.locateFile?r.locateFile(t,S):S+t):v=new URL(rw).href;var Q={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=Q.isAbs(e),t="/"===e.substr(-1);return(e=Q.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=Q.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=Q.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return -1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments);return Q.normalize(e.join("/"))},join2:(e,r)=>Q.normalize(e+"/"+r)},ee={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:eo.cwd();if("string"!=typeof n)throw TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=Q.isAbs(n)}return e=Q.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"),(r?"/":"")+e||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=ee.resolve(e).substr(1),r=ee.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t:C(e)+1),o=R(e,n,0,n.length);return r&&(n.length=o),n}var et={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){et.ttys[e]={input:[],output:[],ops:r},eo.registerDevice(e,et.stream_ops)},stream_ops:{open:function(e){var r=et.ttys[e.node.rdev];if(!r)throw new eo.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new eo.ErrnoError(60);for(var a,i=0,s=0;s0&&(D(x(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(F(x(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(F(x(e.output,0)),e.output=[])}}},en={ops_table:null,mount:function(e){return en.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(eo.isBlkdev(t)||eo.isFIFO(t))throw new eo.ErrnoError(63);en.ops_table||(en.ops_table={dir:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr,lookup:en.node_ops.lookup,mknod:en.node_ops.mknod,rename:en.node_ops.rename,unlink:en.node_ops.unlink,rmdir:en.node_ops.rmdir,readdir:en.node_ops.readdir,symlink:en.node_ops.symlink},stream:{llseek:en.stream_ops.llseek}},file:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr},stream:{llseek:en.stream_ops.llseek,read:en.stream_ops.read,write:en.stream_ops.write,allocate:en.stream_ops.allocate,mmap:en.stream_ops.mmap,msync:en.stream_ops.msync}},link:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr,readlink:en.node_ops.readlink},stream:{}},chrdev:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr},stream:eo.chrdev_stream_ops}});var o=eo.createNode(e,r,t,n);return eo.isDir(o.mode)?(o.node_ops=en.ops_table.dir.node,o.stream_ops=en.ops_table.dir.stream,o.contents={}):eo.isFile(o.mode)?(o.node_ops=en.ops_table.file.node,o.stream_ops=en.ops_table.file.stream,o.usedBytes=0,o.contents=null):eo.isLink(o.mode)?(o.node_ops=en.ops_table.link.node,o.stream_ops=en.ops_table.link.stream):eo.isChrdev(o.mode)&&(o.node_ops=en.ops_table.chrdev.node,o.stream_ops=en.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r){if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}}},node_ops:{getattr:function(e){var r={};return r.dev=eo.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,eo.isDir(e.mode)?r.size=4096:eo.isFile(e.mode)?r.size=e.usedBytes:eo.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&en.resizeFileStorage(e,r.size)},lookup:function(e,r){throw eo.genericErrors[44]},mknod:function(e,r,t,n){return en.createNode(e,r,t,n)},rename:function(e,r,t){if(eo.isDir(e.mode)){var n;try{n=eo.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new eo.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=eo.lookupNode(e,r);for(var n in t.contents)throw new eo.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=en.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!eo.isLink(e.mode))throw new eo.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||t+r{if(!(e=ee.resolve(e)))return{path:"",node:null};if((r=Object.assign({follow_mount:!0,recurse_count:0},r)).recurse_count>8)throw new eo.ErrnoError(32);for(var t=e.split("/").filter(e=>!!e),n=eo.root,o="/",a=0;a40)throw new eo.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var r;;){if(eo.isRoot(e)){var t=e.mount.mountpoint;if(!r)return t;return"/"!==t[t.length-1]?t+"/"+r:t+r}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%eo.nameTable.length},hashAddNode:e=>{var r=eo.hashName(e.parent.id,e.name);e.name_next=eo.nameTable[r],eo.nameTable[r]=e},hashRemoveNode:e=>{var r=eo.hashName(e.parent.id,e.name);if(eo.nameTable[r]===e)eo.nameTable[r]=e.name_next;else for(var t=eo.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=eo.mayLookup(e);if(t)throw new eo.ErrnoError(t,e);for(var n=eo.hashName(e.id,r),o=eo.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return eo.lookup(e,r)},createNode:(e,r,t,n)=>{var o=new eo.FSNode(e,r,t,n);return eo.hashAddNode(o),o},destroyNode:e=>{eo.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>(61440&e)==32768,isDir:e=>(61440&e)==16384,isLink:e=>(61440&e)==40960,isChrdev:e=>(61440&e)==8192,isBlkdev:e=>(61440&e)==24576,isFIFO:e=>(61440&e)==4096,isSocket:e=>(49152&e)==49152,flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=eo.flagModes[e];if(void 0===r)throw Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>eo.ignorePermissions?0:r.includes("r")&&!(292&e.mode)||r.includes("w")&&!(146&e.mode)||r.includes("x")&&!(73&e.mode)?2:0,mayLookup:e=>eo.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,r)=>{try{return eo.lookupNode(e,r),20}catch(e){}return eo.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{try{n=eo.lookupNode(e,r)}catch(e){return e.errno}var n,o=eo.nodePermissions(e,"wx");if(o)return o;if(t){if(!eo.isDir(n.mode))return 54;if(eo.isRoot(n)||eo.getPath(n)===eo.cwd())return 10}else if(eo.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?eo.isLink(e.mode)?32:eo.isDir(e.mode)&&("r"!==eo.flagsToPermissionString(r)||512&r)?31:eo.nodePermissions(e,eo.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,r=eo.MAX_OPEN_FDS)=>{for(var t=e;t<=r;t++)if(!eo.streams[t])return t;throw new eo.ErrnoError(33)},getStream:e=>eo.streams[e],createStream:(e,r,t)=>{eo.FSStream||(eo.FSStream=function(){this.shared={}},eo.FSStream.prototype={},Object.defineProperties(eo.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return(2097155&this.flags)!=1}},isWrite:{get:function(){return(2097155&this.flags)!=0}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new eo.FSStream,e);var n=eo.nextfd(r,t);return e.fd=n,eo.streams[n]=e,e},closeStream:e=>{eo.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=eo.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new eo.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{eo.devices[e]={stream_ops:r}},getDevice:e=>eo.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),eo.syncFSRequests++,eo.syncFSRequests>1&&F("warning: "+eo.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=eo.getMounts(eo.root.mount),n=0;function o(e){return eo.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach(r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)})},mount:(e,r,t)=>{var n,o="/"===t,a=!t;if(o&&eo.root)throw new eo.ErrnoError(10);if(!o&&!a){var i=eo.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,eo.isMountpoint(n))throw new eo.ErrnoError(10);if(!eo.isDir(n.mode))throw new eo.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?eo.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:e=>{var r=eo.lookupPath(e,{follow_mount:!1});if(!eo.isMountpoint(r.node))throw new eo.ErrnoError(28);var t=r.node,n=t.mounted,o=eo.getMounts(n);Object.keys(eo.nameTable).forEach(e=>{for(var r=eo.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&eo.destroyNode(r),r=t}}),t.mounted=null;var a=t.mount.mounts.indexOf(n);t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=eo.lookupPath(e,{parent:!0}).node,o=Q.basename(e);if(!o||"."===o||".."===o)throw new eo.ErrnoError(28);var a=eo.mayCreate(n,o);if(a)throw new eo.ErrnoError(a);if(!n.node_ops.mknod)throw new eo.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=(void 0!==r?r:438)&4095|32768,eo.mknod(e,r,0)),mkdir:(e,r)=>(r=(void 0!==r?r:511)&1023|16384,eo.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,eo.mknod(e,r,t)),symlink:(e,r)=>{if(!ee.resolve(e))throw new eo.ErrnoError(44);var t=eo.lookupPath(r,{parent:!0}).node;if(!t)throw new eo.ErrnoError(44);var n=Q.basename(r),o=eo.mayCreate(t,n);if(o)throw new eo.ErrnoError(o);if(!t.node_ops.symlink)throw new eo.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o,a=Q.dirname(e),i=Q.dirname(r),s=Q.basename(e),u=Q.basename(r);if(t=eo.lookupPath(e,{parent:!0}).node,n=eo.lookupPath(r,{parent:!0}).node,!t||!n)throw new eo.ErrnoError(44);if(t.mount!==n.mount)throw new eo.ErrnoError(75);var l=eo.lookupNode(t,s),c=ee.relative(e,i);if("."!==c.charAt(0))throw new eo.ErrnoError(28);if("."!==(c=ee.relative(r,a)).charAt(0))throw new eo.ErrnoError(55);try{o=eo.lookupNode(n,u)}catch(e){}if(l!==o){var d=eo.isDir(l.mode),f=eo.mayDelete(t,s,d);if(f||(f=o?eo.mayDelete(n,u,d):eo.mayCreate(n,u)))throw new eo.ErrnoError(f);if(!t.node_ops.rename)throw new eo.ErrnoError(63);if(eo.isMountpoint(l)||o&&eo.isMountpoint(o))throw new eo.ErrnoError(10);if(n!==t&&(f=eo.nodePermissions(t,"w")))throw new eo.ErrnoError(f);eo.hashRemoveNode(l);try{t.node_ops.rename(l,n,u)}catch(e){throw e}finally{eo.hashAddNode(l)}}},rmdir:e=>{var r=eo.lookupPath(e,{parent:!0}).node,t=Q.basename(e),n=eo.lookupNode(r,t),o=eo.mayDelete(r,t,!0);if(o)throw new eo.ErrnoError(o);if(!r.node_ops.rmdir)throw new eo.ErrnoError(63);if(eo.isMountpoint(n))throw new eo.ErrnoError(10);r.node_ops.rmdir(r,t),eo.destroyNode(n)},readdir:e=>{var r=eo.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new eo.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=eo.lookupPath(e,{parent:!0}).node;if(!r)throw new eo.ErrnoError(44);var t=Q.basename(e),n=eo.lookupNode(r,t),o=eo.mayDelete(r,t,!1);if(o)throw new eo.ErrnoError(o);if(!r.node_ops.unlink)throw new eo.ErrnoError(63);if(eo.isMountpoint(n))throw new eo.ErrnoError(10);r.node_ops.unlink(r,t),eo.destroyNode(n)},readlink:e=>{var r=eo.lookupPath(e).node;if(!r)throw new eo.ErrnoError(44);if(!r.node_ops.readlink)throw new eo.ErrnoError(28);return ee.resolve(eo.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=eo.lookupPath(e,{follow:!r}).node;if(!t)throw new eo.ErrnoError(44);if(!t.node_ops.getattr)throw new eo.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>eo.stat(e,!0),chmod:(e,r,t)=>{var n;if(!(n="string"==typeof e?eo.lookupPath(e,{follow:!t}).node:e).node_ops.setattr)throw new eo.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{eo.chmod(e,r,!0)},fchmod:(e,r)=>{var t=eo.getStream(e);if(!t)throw new eo.ErrnoError(8);eo.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;if(!(o="string"==typeof e?eo.lookupPath(e,{follow:!n}).node:e).node_ops.setattr)throw new eo.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{eo.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=eo.getStream(e);if(!n)throw new eo.ErrnoError(8);eo.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new eo.ErrnoError(28);if("string"==typeof e){var t;t=eo.lookupPath(e,{follow:!0}).node}else t=e;if(!t.node_ops.setattr)throw new eo.ErrnoError(63);if(eo.isDir(t.mode))throw new eo.ErrnoError(31);if(!eo.isFile(t.mode))throw new eo.ErrnoError(28);var n=eo.nodePermissions(t,"w");if(n)throw new eo.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=eo.getStream(e);if(!t)throw new eo.ErrnoError(8);if((2097155&t.flags)==0)throw new eo.ErrnoError(28);eo.truncate(t.node,r)},utime:(e,r,t)=>{var n=eo.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(e,t,n)=>{if(""===e)throw new eo.ErrnoError(44);if(t="string"==typeof t?eo.modeStringToFlags(t):t,n=void 0===n?438:n,n=64&t?4095&n|32768:0,"object"==typeof e)o=e;else{e=Q.normalize(e);try{var o;o=eo.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var a=!1;if(64&t){if(o){if(128&t)throw new eo.ErrnoError(20)}else o=eo.mknod(e,n,0),a=!0}if(!o)throw new eo.ErrnoError(44);if(eo.isChrdev(o.mode)&&(t&=-513),65536&t&&!eo.isDir(o.mode))throw new eo.ErrnoError(54);if(!a){var i=eo.mayOpen(o,t);if(i)throw new eo.ErrnoError(i)}512&t&&!a&&eo.truncate(o,0),t&=-131713;var s=eo.createStream({node:o,path:eo.getPath(o),flags:t,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),!r.logReadFiles||1&t||(eo.readFiles||(eo.readFiles={}),e in eo.readFiles||(eo.readFiles[e]=1)),s},close:e=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{eo.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new eo.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new eo.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new eo.ErrnoError(28);if(eo.isClosed(e)||(2097155&e.flags)==1)throw new eo.ErrnoError(8);if(eo.isDir(e.node.mode))throw new eo.ErrnoError(31);if(!e.stream_ops.read)throw new eo.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new eo.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new eo.ErrnoError(28);if(eo.isClosed(e)||(2097155&e.flags)==0)throw new eo.ErrnoError(8);if(eo.isDir(e.node.mode))throw new eo.ErrnoError(31);if(!e.stream_ops.write)throw new eo.ErrnoError(28);e.seekable&&1024&e.flags&&eo.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new eo.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);if(r<0||t<=0)throw new eo.ErrnoError(28);if((2097155&e.flags)==0)throw new eo.ErrnoError(8);if(!eo.isFile(e.node.mode)&&!eo.isDir(e.node.mode))throw new eo.ErrnoError(43);if(!e.stream_ops.allocate)throw new eo.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o)=>{if((2&n)!=0&&(2&o)==0&&(2097155&e.flags)!=2||(2097155&e.flags)==1)throw new eo.ErrnoError(2);if(!e.stream_ops.mmap)throw new eo.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:(e,r,t,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new eo.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:(e,r={})=>{if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw Error('Invalid encoding type "'+r.encoding+'"');var t,n=eo.open(e,r.flags),o=eo.stat(e).size,a=new Uint8Array(o);return eo.read(n,a,0,o,0),"utf8"===r.encoding?t=x(a,0):"binary"===r.encoding&&(t=a),eo.close(n),t},writeFile:(e,r,t={})=>{t.flags=t.flags||577;var n=eo.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(C(r)+1),a=R(r,o,0,o.length);eo.write(n,o,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))eo.write(n,r,0,r.byteLength,void 0,t.canOwn);else throw Error("Unsupported data type");eo.close(n)},cwd:()=>eo.currentPath,chdir:e=>{var r=eo.lookupPath(e,{follow:!0});if(null===r.node)throw new eo.ErrnoError(44);if(!eo.isDir(r.node.mode))throw new eo.ErrnoError(54);var t=eo.nodePermissions(r.node,"x");if(t)throw new eo.ErrnoError(t);eo.currentPath=r.path},createDefaultDirectories:()=>{eo.mkdir("/tmp"),eo.mkdir("/home"),eo.mkdir("/home/web_user")},createDefaultDevices:()=>{eo.mkdir("/dev"),eo.registerDevice(eo.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),eo.mkdev("/dev/null",eo.makedev(1,3)),et.register(eo.makedev(5,0),et.default_tty_ops),et.register(eo.makedev(6,0),et.default_tty1_ops),eo.mkdev("/dev/tty",eo.makedev(5,0)),eo.mkdev("/dev/tty1",eo.makedev(6,0));var e=function(){if("object"!=typeof crypto||"function"!=typeof crypto.getRandomValues)return()=>G("randomDevice");var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}();eo.createDevice("/dev","random",e),eo.createDevice("/dev","urandom",e),eo.mkdir("/dev/shm"),eo.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{eo.mkdir("/proc");var e=eo.mkdir("/proc/self");eo.mkdir("/proc/self/fd"),eo.mount({mount:()=>{var r=eo.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=eo.getStream(+r);if(!t)throw new eo.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>t.path}};return n.parent=n,n}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{r.stdin?eo.createDevice("/dev","stdin",r.stdin):eo.symlink("/dev/tty","/dev/stdin"),r.stdout?eo.createDevice("/dev","stdout",null,r.stdout):eo.symlink("/dev/tty","/dev/stdout"),r.stderr?eo.createDevice("/dev","stderr",null,r.stderr):eo.symlink("/dev/tty1","/dev/stderr"),eo.open("/dev/stdin",0),eo.open("/dev/stdout",1),eo.open("/dev/stderr",1)},ensureErrnoError:()=>{eo.ErrnoError||(eo.ErrnoError=function(e,r){this.name="ErrnoError",this.node=r,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},eo.ErrnoError.prototype=Error(),eo.ErrnoError.prototype.constructor=eo.ErrnoError,[44].forEach(e=>{eo.genericErrors[e]=new eo.ErrnoError(e),eo.genericErrors[e].stack=""}))},staticInit:()=>{eo.ensureErrnoError(),eo.nameTable=Array(4096),eo.mount(en,{},"/"),eo.createDefaultDirectories(),eo.createDefaultDevices(),eo.createSpecialDirectories(),eo.filesystems={MEMFS:en}},init:(e,t,n)=>{eo.init.initialized=!0,eo.ensureErrnoError(),r.stdin=e||r.stdin,r.stdout=t||r.stdout,r.stderr=n||r.stderr,eo.createStandardStreams()},quit:()=>{eo.init.initialized=!1,ey(0);for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=eo.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{var t=eo.lookupPath(e,{follow:!r});e=t.path}catch(e){}var n={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var t=eo.lookupPath(e,{parent:!0});n.parentExists=!0,n.parentPath=t.path,n.parentObject=t.node,n.name=Q.basename(e),t=eo.lookupPath(e,{follow:!r}),n.exists=!0,n.path=t.path,n.object=t.node,n.name=t.node.name,n.isRoot="/"===t.path}catch(e){n.error=e.errno}return n},createPath:(e,r,t,n)=>{e="string"==typeof e?e:eo.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=Q.join2(e,a);try{eo.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=Q.join2("string"==typeof e?e:eo.getPath(e),r),i=eo.getMode(n,o);return eo.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:eo.getPath(e),i=r?Q.join2(e,r):e);var s=eo.getMode(n,o),u=eo.create(i,s);if(t){if("string"==typeof t){for(var l=Array(t.length),c=0,d=t.length;c{var o=Q.join2("string"==typeof e?e:eo.getPath(e),r),a=eo.getMode(!!t,!!n);eo.createDevice.major||(eo.createDevice.major=64);var i=eo.makedev(eo.createDevice.major++,0);return eo.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i,s=0,u=0;u{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(a)try{e.contents=er(a(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new eo.ErrnoError(29)}else throw Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1)&&!(e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e,r=new XMLHttpRequest;if(r.open("HEAD",t,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw Error("Couldn't load "+t+". Status: "+r.status);var n=Number(r.getResponseHeader("Content-length")),o=(e=r.getResponseHeader("Accept-Ranges"))&&"bytes"===e,a=(e=r.getResponseHeader("Content-Encoding"))&&"gzip"===e,i=1048576;o||(i=n);var s=(e,r)=>{if(e>r)throw Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):er(o.responseText||"",!0)},u=this;u.setDataGetter(e=>{var r=e*i,t=(e+1)*i-1;if(t=Math.min(t,n-1),void 0===u.chunks[e]&&(u.chunks[e]=s(r,t)),void 0===u.chunks[e])throw Error("doXHR failed!");return u.chunks[e]}),(a||!n)&&(i=n=1,i=n=this.getter(0).length,D("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){var i;throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"}var i={isDevice:!1,url:t},s=eo.createFile(e,r,i,n,o);i.contents?s.contents=i.contents:i.url&&(s.contents=null,s.url=i.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};function l(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var s=0;s{var r=s.stream_ops[e];u[e]=function(){return eo.forceLoadFile(s),r.apply(null,arguments)}}),u.read=(e,r,t,n,o)=>(eo.forceLoadFile(s),l(e,r,t,n,o)),u.mmap=(e,r,t,n,o)=>{eo.forceLoadFile(s);var a=void G();if(!a)throw new eo.ErrnoError(48);return l(e,d,a,r,t),{ptr:a,allocated:!0}},s.stream_ops=u,s},createPreloadedFile:(e,r,t,n,o,a,s,u,l,c)=>{var d,f,m=r?ee.resolve(Q.join2(e,r)):e,h="cp "+m;function p(t){function i(t){c&&c(),u||eo.createDataFile(e,r,t,n,o,l),a&&a(),Y(h)}Browser.handledByPreloadPlugin(t,m,i,()=>{s&&s(),Y(h)})||i(t)}q(h),"string"==typeof t?(d=e=>p(e),f="al "+t,i(t,e=>{var r;r='Loading data file "'+t+'" failed (no arrayBuffer).',e||G(r),d(new Uint8Array(e)),f&&Y(f)},e=>{if(s)s();else throw'Loading data file "'+t+'" failed.'}),f&&q(f)):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r=()=>{},t=()=>{})=>{var n=eo.indexedDB();try{var o=n.open(eo.DB_NAME(),eo.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{D("creating db"),o.result.createObjectStore(eo.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([eo.DB_STORE_NAME],"readwrite"),a=n.objectStore(eo.DB_STORE_NAME),i=0,s=0,u=e.length;function l(){0==s?r():t()}e.forEach(e=>{var r=a.put(eo.analyzePath(e).object.contents,e);r.onsuccess=()=>{++i+s==u&&l()},r.onerror=()=>{i+ ++s==u&&l()}}),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r=()=>{},t=()=>{})=>{var n=eo.indexedDB();try{var o=n.open(eo.DB_NAME(),eo.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var a=n.transaction([eo.DB_STORE_NAME],"readonly")}catch(e){t(e);return}var i=a.objectStore(eo.DB_STORE_NAME),s=0,u=0,l=e.length;function c(){0==u?r():t()}e.forEach(e=>{var r=i.get(e);r.onsuccess=()=>{eo.analyzePath(e).exists&&eo.unlink(e),eo.createDataFile(Q.dirname(e),Q.basename(e),r.result,!0,!0,!0),++s+u==l&&c()},r.onerror=()=>{s+ ++u==l&&c()}}),a.onerror=t},o.onerror=t}},ea={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(Q.isAbs(r))return r;if(-100===e)n=eo.cwd();else{var n;n=ea.getStreamFromFD(e).path}if(0==r.length){if(!t)throw new eo.ErrnoError(44);return n}return Q.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&Q.normalize(r)!==Q.normalize(eo.getPath(e.node)))return -54;throw e}h[t>>2]=n.dev,h[t+8>>2]=n.ino,h[t+12>>2]=n.mode,p[t+16>>2]=n.nlink,h[t+20>>2]=n.uid,h[t+24>>2]=n.gid,h[t+28>>2]=n.rdev,g=[n.size>>>0,+Math.abs(w=n.size)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+40>>2]=g[0],h[t+44>>2]=g[1],h[t+48>>2]=4096,h[t+52>>2]=n.blocks;var o=n.atime.getTime(),a=n.mtime.getTime(),i=n.ctime.getTime();return g=[Math.floor(o/1e3)>>>0,+Math.abs(w=Math.floor(o/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+56>>2]=g[0],h[t+60>>2]=g[1],p[t+64>>2]=o%1e3*1e3,g=[Math.floor(a/1e3)>>>0,+Math.abs(w=Math.floor(a/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+72>>2]=g[0],h[t+76>>2]=g[1],p[t+80>>2]=a%1e3*1e3,g=[Math.floor(i/1e3)>>>0,+Math.abs(w=Math.floor(i/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+88>>2]=g[0],h[t+92>>2]=g[1],p[t+96>>2]=i%1e3*1e3,g=[n.ino>>>0,+Math.abs(w=n.ino)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+104>>2]=g[0],h[t+108>>2]=g[1],0},doMsync:function(e,r,t,n,o){if(!eo.isFile(r.node.mode))throw new eo.ErrnoError(43);if(2&n)return 0;var a=f.slice(e,e+t);eo.msync(r,a,o,t,n)},varargs:void 0,get:function(){return ea.varargs+=4,h[ea.varargs-4>>2]},getStr:function(e){return function(e,r){if(!e)return"";for(var t=e+void 0,n=e;!(n>=t)&&f[n];)++n;return A.decode(f.subarray(e,n))}(e)},getStreamFromFD:function(e){var r=eo.getStream(e);if(!r)throw new eo.ErrnoError(8);return r}};function ei(e){return p[e>>2]+4294967296*h[e+4>>2]}var es=[0,31,60,91,121,152,182,213,244,274,305,335],eu=[0,31,59,90,120,151,181,212,243,273,304,334];function el(e){var r;return((r=e.getFullYear())%4==0&&(r%100!=0||r%400==0)?es:eu)[e.getMonth()]+e.getDate()-1}function ec(e){var r=C(e)+1,t=ew(r);return t&&R(e,d,t,r),t}function ed(e,t){c=e,M||L>0||(eb(),Z(O),eo.quit(),et.shutdown(),I=!0),c=e,M||L>0||(r.onExit&&r.onExit(e),P=!0),k(e,new J(e))}function ef(e){if(e instanceof J||"unwind"==e)return c;k(1,e)}function em(e){try{return e()}catch(e){G(e)}}var eh={instrumentWasmImports:function(e){var r=["emscripten_sleep","emscripten_wget","emscripten_wget_data","emscripten_idb_load","emscripten_idb_store","emscripten_idb_delete","emscripten_idb_exists","emscripten_idb_load_blob","emscripten_idb_store_blob","SDL_Delay","emscripten_scan_registers","emscripten_lazy_load_code","emscripten_fiber_swap","__load_secondary_module","fd_sync","__wasi_fd_sync","_emval_await","_dlopen_js","__asyncjs__*"];for(var t in e)!function(t){var n=e[t];n.sig,"function"==typeof n&&(r.indexOf(t)>=0||t.startsWith("__asyncjs__"))}(t)},instrumentWasmExports:function(e){var r={};for(var t in e)!function(t){var n=e[t];"function"==typeof n?r[t]=function(){eh.exportCallStack.push(t);try{return n.apply(null,arguments)}finally{P||(eh.exportCallStack.pop()===t||G(void 0),eh.maybeStopUnwind())}}:r[t]=n}(t);return r},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:8192,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(e){var r=eh.callStackNameToId[e];return void 0===r&&(r=eh.callStackId++,eh.callStackNameToId[e]=r,eh.callStackIdToName[r]=e),r},maybeStopUnwind:function(){eh.currData&&eh.state===eh.State.Unwinding&&0===eh.exportCallStack.length&&(eh.state=eh.State.Normal,L+=1,em(ex),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:function(){return new Promise((e,r)=>{eh.asyncPromiseHandlers={resolve:e,reject:r}})},allocateData:function(){var e=ew(12+eh.StackSize);return eh.setDataHeader(e,e+12,eh.StackSize),eh.setDataRewindFunc(e),e},setDataHeader:function(e,r,t){h[e>>2]=r,h[e+4>>2]=r+t},setDataRewindFunc:function(e){var r=eh.exportCallStack[0],t=eh.getCallStackId(r);h[e+8>>2]=t},getDataRewindFunc:function(e){var t=h[e+8>>2],n=eh.callStackIdToName[t];return r.asm[n]},doRewind:function(e){var r=eh.getDataRewindFunc(e);return L-=1,r()},handleSleep:function(e){if(!P){if(eh.state===eh.State.Normal){var r=!1,t=!1;e((e=0)=>{if(!P&&(eh.handleSleepReturnValue=e,r=!0,t)){eh.state=eh.State.Rewinding,em(()=>eR(eh.currData)),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var n,o=!1;try{n=eh.doRewind(eh.currData)}catch(e){n=e,o=!0}var a=!1;if(!eh.currData){var i=eh.asyncPromiseHandlers;i&&(eh.asyncPromiseHandlers=null,(o?i.reject:i.resolve)(n),a=!0)}if(o&&!a)throw n}}),t=!0,r||(eh.state=eh.State.Unwinding,eh.currData=eh.allocateData(),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause(),em(()=>eA(eh.currData)))}else eh.state===eh.State.Rewinding?(eh.state=eh.State.Normal,em(eC),eg(eh.currData),eh.currData=null,eh.sleepCallbacks.forEach(e=>(function(e){if(!I&&!P)try{e(),function(){if(!(M||L>0))try{ed(c)}catch(e){ef(e)}}()}catch(e){ef(e)}})(e))):G("invalid state: "+eh.state);return eh.handleSleepReturnValue}},handleAsync:function(e){return eh.handleSleep(r=>{e().then(r)})}},ep=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=eo.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n};Object.defineProperties(ep.prototype,{read:{get:function(){return(365&this.mode)==365},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return(146&this.mode)==146},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return eo.isDir(this.mode)}},isDevice:{get:function(){return eo.isChrdev(this.mode)}}}),eo.FSNode=ep,eo.staticInit();var ev={q:function(e,t){return eh.handleAsync(async()=>{r.emglken_stdin_buffers.length||await new Promise(e=>{r.emglken_stdin_ready=e});let n=r.emglken_stdin_buffers.shift(),o=Math.min(n.length,t);return o==n.length?f.set(n,e):(f.set(n.subarray(0,o),e),r.emglken_stdin_buffers.unshift(n.subarray(o))),o})},D:function(e,r,t,n){try{if(r=ea.getStr(r),r=ea.calculateAt(e,r),-8&t)return -28;var o=eo.lookupPath(r,{follow:!0}).node;if(!o)return -44;var a="";if(4&t&&(a+="r"),2&t&&(a+="w"),1&t&&(a+="x"),a&&eo.nodePermissions(o,a))return -2;return 0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},l:function(e,r,t){ea.varargs=t;try{var n=ea.getStreamFromFD(e);switch(r){case 0:var o=ea.get();if(o<0)return -28;return eo.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=ea.get();return n.flags|=o,0;case 5:var o=ea.get();return m[o+0>>1]=2,0;case 16:case 8:default:return -28;case 9:return h[eE()>>2]=28,-1}}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},C:function(e,r){try{if(0===r)return -28;var t=eo.cwd(),n=C(t)+1;if(r>2]=0,0;case 21520:if(!n.tty)return -59;return -28;case 21531:var o=ea.get();return eo.ioctl(n,r,o);default:return -28}}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},k:function(e,r,t,n){ea.varargs=n;try{r=ea.getStr(r),r=ea.calculateAt(e,r);var o=n?ea.get():0;return eo.open(r,t,o).fd}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},A:function(e,r){try{return e=ea.getStr(e),ea.doStat(eo.stat,e,r)}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},z:function(e,r,t){try{return r=ea.getStr(r),r=ea.calculateAt(e,r),0===t?eo.unlink(r):512===t?eo.rmdir(r):G("Invalid flags passed to unlinkat"),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},x:function(){return!0},w:function(){throw 1/0},v:function(e,r){var t=new Date(1e3*ei(e));h[r>>2]=t.getUTCSeconds(),h[r+4>>2]=t.getUTCMinutes(),h[r+8>>2]=t.getUTCHours(),h[r+12>>2]=t.getUTCDate(),h[r+16>>2]=t.getUTCMonth(),h[r+20>>2]=t.getUTCFullYear()-1900,h[r+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-n)/864e5|0;h[r+28>>2]=o},u:function(e,r){var t=new Date(1e3*ei(e));h[r>>2]=t.getSeconds(),h[r+4>>2]=t.getMinutes(),h[r+8>>2]=t.getHours(),h[r+12>>2]=t.getDate(),h[r+16>>2]=t.getMonth(),h[r+20>>2]=t.getFullYear()-1900,h[r+24>>2]=t.getDay();var n=0|el(t);h[r+28>>2]=n,h[r+36>>2]=-(60*t.getTimezoneOffset());var o=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=0|(a!=i&&t.getTimezoneOffset()==Math.min(i,a));h[r+32>>2]=s},t:function(e){var r=new Date(h[e+20>>2]+1900,h[e+16>>2],h[e+12>>2],h[e+8>>2],h[e+4>>2],h[e>>2],0),t=h[e+32>>2],n=r.getTimezoneOffset(),o=new Date(r.getFullYear(),0,1),a=new Date(r.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=Math.min(i,a);if(t<0)h[e+32>>2]=Number(a!=i&&s==n);else if(t>0!=(s==n)){var u=t>0?s:Math.max(i,a);r.setTime(r.getTime()+(u-n)*6e4)}h[e+24>>2]=r.getDay();var l=0|el(r);return h[e+28>>2]=l,h[e>>2]=r.getSeconds(),h[e+4>>2]=r.getMinutes(),h[e+8>>2]=r.getHours(),h[e+12>>2]=r.getDate(),h[e+16>>2]=r.getMonth(),h[e+20>>2]=r.getYear(),r.getTime()/1e3|0},s:function(e){var r=Date.UTC(h[e+20>>2]+1900,h[e+16>>2],h[e+12>>2],h[e+8>>2],h[e+4>>2],h[e>>2],0),t=new Date(r);h[e+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-n)/864e5|0;return h[e+28>>2]=o,t.getTime()/1e3|0},r:function(e,r,t){var n=new Date().getFullYear(),o=new Date(n,0,1),a=new Date(n,6,1),i=o.getTimezoneOffset(),s=a.getTimezoneOffset();function u(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}p[e>>2]=60*Math.max(i,s),h[r>>2]=Number(i!=s);var l=u(o),c=u(a),d=ec(l),f=ec(c);s>2]=d,p[t+4>>2]=f):(p[t>>2]=f,p[t+4>>2]=d)},i:function(){return Date.now()},p:function(e,r,t){f.copyWithin(e,r,r+t)},o:function(e){var r=f.length;if((e>>>=0)>2147483648)return!1;let t=(e,r)=>e+(r-e%r)%r;for(var n=1;n<=4;n*=2){var o=r*(1+.2/n);if(o=Math.min(o,e+100663296),function(e){var r=l.buffer;try{return l.grow(e-r.byteLength+65535>>>16),T(),1}catch(e){}}(Math.min(2147483648,t(Math.max(e,o),65536))))return!0}return!1},a:ed,c:function(e){try{var r=ea.getStreamFromFD(e);return eo.close(r),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},y:function(e,r,t,n){try{var o=ea.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=eo.read(e,d,i,s,n);if(u<0)return -1;if(o+=u,u>2]=a,0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},m:function(e,r,t,n,o){try{var a=t+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*t:NaN;if(isNaN(a))return 61;var i=ea.getStreamFromFD(e);return eo.llseek(i,a,n),g=[i.position>>>0,(w=i.position,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[o>>2]=g[0],h[o+4>>2]=g[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},j:function(e,r,t,n){try{var o=ea.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=eo.write(e,d,i,s,n);if(u<0)return -1;o+=u,void 0!==n&&(n+=u)}return o}(o,r,t);return p[n>>2]=a,0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},h:function(e,r,t){return $(e,r,t,e=>e.normalize("NFD"))},g:function(e,r,t){return $(e,r,t,e=>e.normalize("NFC"))},f:function(e,r,t){return $(e,r,t,e=>e.toLowerCase())},e:function(e,r,t,n){return $(e,r,t,e=>e.reduce((e,r,t)=>{let o={ß:"Ss",DŽ:"Dž",Dž:"Dž",dž:"Dž",LJ:"Lj",Lj:"Lj",lj:"Lj",NJ:"Nj",Nj:"Nj",nj:"Nj",DZ:"Dz",Dz:"Dz",dz:"Dz",և:"Եւ",ᾲ:"Ὰͅ",ᾳ:"ᾼ",ᾴ:"Άͅ",ᾷ:"ᾼ͂",ᾼ:"ᾼ",ῂ:"Ὴͅ",ῃ:"ῌ",ῄ:"Ήͅ",ῇ:"ῌ͂",ῌ:"ῌ",ῲ:"Ὼͅ",ῳ:"ῼ",ῴ:"Ώͅ",ῷ:"ῼ͂",ῼ:"ῼ",ff:"Ff",fi:"Fi",fl:"Fl",ffi:"Ffi",ffl:"Ffl",ſt:"St",st:"St",ﬓ:"Մն",ﬔ:"Մե",ﬕ:"Մի",ﬖ:"Վն",ﬗ:"Մխ"},a=String.fromCodePoint(r);return 0===t?a=o[a]?o[a]:r>=8064&&r<8112?["ᾈᾉᾊᾋᾌᾍᾎᾏ","ᾘᾙᾚᾛᾜᾝᾞᾟ","ᾨᾩᾪᾫᾬᾭᾮᾯ"][(r-8064)/16|0][r%8]:a.toUpperCase():n&&(a=a.toLowerCase()),e+a},""),1)},d:function(e,r,t){return $(e,r,t,e=>e.toUpperCase())},n:function(e,r){var t=eS();try{eP(e,r)}catch(e){if(eD(t),e!==e+0)throw e;ek(1,0)}},b:function(e,r,t){var n=eS();try{eM(e,r,t)}catch(e){if(eD(n),e!==e+0)throw e;ek(1,0)}}};!function(){var e,t,n,a={a:ev};function i(e,t){var n,o=e.exports;return o=eh.instrumentWasmExports(o),r.asm=o,l=r.asm.E,T(),r.asm.N,n=r.asm.F,z.unshift(n),Y("wasm-instantiate"),o}if(q("wasm-instantiate"),r.instantiateWasm)try{return r.instantiateWasm(a,i)}catch(e){F("Module.instantiateWasm callback failed with error: "+e),o(e)}(e=u,t=v,n=function(e){i(e.instance)},e||"function"!=typeof WebAssembly.instantiateStreaming||V(t)||"function"!=typeof fetch?K(t,a,n):fetch(t,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,a).then(n,function(e){return F("wasm streaming compile failed: "+e),F("falling back to ArrayBuffer instantiation"),K(t,a,n)})})).catch(o)}();var ew=function(){return(ew=r.asm.G).apply(null,arguments)},eg=function(){return(eg=r.asm.H).apply(null,arguments)},e_=r._main=function(){return(e_=r._main=r.asm.I).apply(null,arguments)},ey=(r._gidispatch_get_game_id=function(){return(r._gidispatch_get_game_id=r.asm.J).apply(null,arguments)},r._fflush=function(){return(ey=r._fflush=r.asm.K).apply(null,arguments)}),eE=function(){return(eE=r.asm.L).apply(null,arguments)},eb=function(){return(eb=r.asm.M).apply(null,arguments)},ek=function(){return(ek=r.asm.O).apply(null,arguments)},eS=function(){return(eS=r.asm.P).apply(null,arguments)},eD=function(){return(eD=r.asm.Q).apply(null,arguments)},eF=function(){return(eF=r.asm.R).apply(null,arguments)},eM=r.dynCall_vii=function(){return(eM=r.dynCall_vii=r.asm.S).apply(null,arguments)},eP=r.dynCall_vi=function(){return(eP=r.dynCall_vi=r.asm.T).apply(null,arguments)},eA=function(){return(eA=r.asm.U).apply(null,arguments)},ex=function(){return(ex=r.asm.V).apply(null,arguments)},eR=function(){return(eR=r.asm.W).apply(null,arguments)},eC=function(){return(eC=r.asm.X).apply(null,arguments)};function eT(e=E){!(U>0)&&(!function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;){var e;e=r.preRun.shift(),N.unshift(e)}Z(N)}(),U>0||(r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),t()},1)):t()));function t(){!_&&(_=!0,r.calledRun=!0,P||(r.noFSInit||eo.init.initialized||eo.init(),eo.ignorePermissions=!1,et.init(),Z(z),Z(B),n(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),eN&&function(e=[]){var r=e_;e.unshift(b);var t=e.length,n=eF((t+1)*4),o=n>>2;e.forEach(e=>{var r,t;h[o++]=(t=eF(r=C(e)+1),R(e,d,t,r),t)}),h[o]=0;try{var a=r(t,n);ed(a,!0)}catch(e){return ef(e)}}(e),function(){if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;){var e;e=r.postRun.shift(),j.unshift(e)}Z(j)}()))}}if(r.___start_em_js=33568,r.___stop_em_js=36253,r.AsciiToString=function(e){for(var r="";;){var t=f[e++>>0];if(!t)return r;r+=String.fromCharCode(t)}},r.FS=eo,W=function e(){_||eT(),_||(W=e)},r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();var eN=!0;return r.noInitialRun&&(eN=!1),eT(),r.ready}})(),r_={};r_=new URL(k("6MsPj").resolve("ida9s"),import.meta.url).toString();var ry=(()=>{var e="file:///node_modules/emglken/build/hugo-core.js";return function(r={}){var t,n,o,a,i,s,u,l,c,d,f,m,h,p,v,w,g,_,r=void 0!==r?r:{};r.ready=new Promise(function(e,r){n=e,o=r});var y=Object.assign({},r),E=[],b="./this.program",k=(e,r)=>{throw r},S="";"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),e&&(S=e),S=0!==S.indexOf("blob:")?S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):"",a=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},i=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{if(200==n.status||0==n.status&&n.response){r(n.response);return}t()},n.onerror=t,n.send(null)};var D=r.print||console.log.bind(console),F=r.printErr||console.warn.bind(console);Object.assign(r,y),y=null,r.arguments&&(E=r.arguments),r.thisProgram&&(b=r.thisProgram),r.quit&&(k=r.quit),r.wasmBinary&&(u=r.wasmBinary);var M=r.noExitRuntime||!1;"object"!=typeof WebAssembly&&V("no native wasm support detected");var P=!1,A=new TextDecoder("utf8");function x(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;return A.decode(e.buffer?e.subarray(r,o):new Uint8Array(e.slice(r,o)))}function R(e,r){if(!e)return"";for(var t=e+r,n=e;!(n>=t)&&f[n];)++n;return A.decode(f.subarray(e,n))}function C(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i)),s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function T(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r}function N(){var e=l.buffer;r.HEAP8=d=new Int8Array(e),r.HEAP16=m=new Int16Array(e),r.HEAP32=h=new Int32Array(e),r.HEAPU8=f=new Uint8Array(e),r.HEAPU16=new Uint16Array(e),r.HEAPU32=p=new Uint32Array(e),r.HEAPF32=new Float32Array(e),r.HEAPF64=new Float64Array(e)}var z=[],B=[],O=[],j=[],I=[],L=!1,U=0,H=0,W=null,q=null;function Y(e){H++,r.monitorRunDependencies&&r.monitorRunDependencies(H)}function G(e){if(H--,r.monitorRunDependencies&&r.monitorRunDependencies(H),0==H&&(null!==W&&(clearInterval(W),W=null),q)){var t=q;q=null,t()}}function V(e){r.onAbort&&r.onAbort(e),F(e="Aborted("+e+")"),P=!0,c=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw o(t),t}function X(e){return e.startsWith("data:application/octet-stream;base64,")}function K(e){try{if(e==v&&u)return new Uint8Array(u);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}catch(e){V(e)}}function $(e,r,t){return(u||"function"!=typeof fetch?Promise.resolve().then(function(){return K(e)}):fetch(e,{credentials:"same-origin"}).then(function(r){if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(function(){return K(e)})).then(function(e){return WebAssembly.instantiate(e,r)}).then(function(e){return e}).then(t,function(e){F("failed to asynchronously prepare wasm: "+e),V(e)})}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Z(e){for(;e.length>0;)e.shift()(r)}r.locateFile?X(v="hugo-core.wasm")||(t=v,v=r.locateFile?r.locateFile(t,S):S+t):v=new URL(r_).href;var Q={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=Q.isAbs(e),t="/"===e.substr(-1);return(e=Q.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=Q.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=Q.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return -1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments);return Q.normalize(e.join("/"))},join2:(e,r)=>Q.normalize(e+"/"+r)},ee={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:eo.cwd();if("string"!=typeof n)throw TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=Q.isAbs(n)}return e=Q.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"),(r?"/":"")+e||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=ee.resolve(e).substr(1),r=ee.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t:T(e)+1),o=C(e,n,0,n.length);return r&&(n.length=o),n}var et={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){et.ttys[e]={input:[],output:[],ops:r},eo.registerDevice(e,et.stream_ops)},stream_ops:{open:function(e){var r=et.ttys[e.node.rdev];if(!r)throw new eo.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new eo.ErrnoError(60);for(var a,i=0,s=0;s0&&(D(x(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(F(x(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(F(x(e.output,0)),e.output=[])}}},en={ops_table:null,mount:function(e){return en.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(eo.isBlkdev(t)||eo.isFIFO(t))throw new eo.ErrnoError(63);en.ops_table||(en.ops_table={dir:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr,lookup:en.node_ops.lookup,mknod:en.node_ops.mknod,rename:en.node_ops.rename,unlink:en.node_ops.unlink,rmdir:en.node_ops.rmdir,readdir:en.node_ops.readdir,symlink:en.node_ops.symlink},stream:{llseek:en.stream_ops.llseek}},file:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr},stream:{llseek:en.stream_ops.llseek,read:en.stream_ops.read,write:en.stream_ops.write,allocate:en.stream_ops.allocate,mmap:en.stream_ops.mmap,msync:en.stream_ops.msync}},link:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr,readlink:en.node_ops.readlink},stream:{}},chrdev:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr},stream:eo.chrdev_stream_ops}});var o=eo.createNode(e,r,t,n);return eo.isDir(o.mode)?(o.node_ops=en.ops_table.dir.node,o.stream_ops=en.ops_table.dir.stream,o.contents={}):eo.isFile(o.mode)?(o.node_ops=en.ops_table.file.node,o.stream_ops=en.ops_table.file.stream,o.usedBytes=0,o.contents=null):eo.isLink(o.mode)?(o.node_ops=en.ops_table.link.node,o.stream_ops=en.ops_table.link.stream):eo.isChrdev(o.mode)&&(o.node_ops=en.ops_table.chrdev.node,o.stream_ops=en.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r){if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}}},node_ops:{getattr:function(e){var r={};return r.dev=eo.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,eo.isDir(e.mode)?r.size=4096:eo.isFile(e.mode)?r.size=e.usedBytes:eo.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&en.resizeFileStorage(e,r.size)},lookup:function(e,r){throw eo.genericErrors[44]},mknod:function(e,r,t,n){return en.createNode(e,r,t,n)},rename:function(e,r,t){if(eo.isDir(e.mode)){var n;try{n=eo.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new eo.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=eo.lookupNode(e,r);for(var n in t.contents)throw new eo.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=en.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!eo.isLink(e.mode))throw new eo.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||t+r{if(!(e=ee.resolve(e)))return{path:"",node:null};if((r=Object.assign({follow_mount:!0,recurse_count:0},r)).recurse_count>8)throw new eo.ErrnoError(32);for(var t=e.split("/").filter(e=>!!e),n=eo.root,o="/",a=0;a40)throw new eo.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var r;;){if(eo.isRoot(e)){var t=e.mount.mountpoint;if(!r)return t;return"/"!==t[t.length-1]?t+"/"+r:t+r}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%eo.nameTable.length},hashAddNode:e=>{var r=eo.hashName(e.parent.id,e.name);e.name_next=eo.nameTable[r],eo.nameTable[r]=e},hashRemoveNode:e=>{var r=eo.hashName(e.parent.id,e.name);if(eo.nameTable[r]===e)eo.nameTable[r]=e.name_next;else for(var t=eo.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=eo.mayLookup(e);if(t)throw new eo.ErrnoError(t,e);for(var n=eo.hashName(e.id,r),o=eo.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return eo.lookup(e,r)},createNode:(e,r,t,n)=>{var o=new eo.FSNode(e,r,t,n);return eo.hashAddNode(o),o},destroyNode:e=>{eo.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>(61440&e)==32768,isDir:e=>(61440&e)==16384,isLink:e=>(61440&e)==40960,isChrdev:e=>(61440&e)==8192,isBlkdev:e=>(61440&e)==24576,isFIFO:e=>(61440&e)==4096,isSocket:e=>(49152&e)==49152,flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=eo.flagModes[e];if(void 0===r)throw Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>eo.ignorePermissions?0:r.includes("r")&&!(292&e.mode)||r.includes("w")&&!(146&e.mode)||r.includes("x")&&!(73&e.mode)?2:0,mayLookup:e=>eo.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,r)=>{try{return eo.lookupNode(e,r),20}catch(e){}return eo.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{try{n=eo.lookupNode(e,r)}catch(e){return e.errno}var n,o=eo.nodePermissions(e,"wx");if(o)return o;if(t){if(!eo.isDir(n.mode))return 54;if(eo.isRoot(n)||eo.getPath(n)===eo.cwd())return 10}else if(eo.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?eo.isLink(e.mode)?32:eo.isDir(e.mode)&&("r"!==eo.flagsToPermissionString(r)||512&r)?31:eo.nodePermissions(e,eo.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,r=eo.MAX_OPEN_FDS)=>{for(var t=e;t<=r;t++)if(!eo.streams[t])return t;throw new eo.ErrnoError(33)},getStream:e=>eo.streams[e],createStream:(e,r,t)=>{eo.FSStream||(eo.FSStream=function(){this.shared={}},eo.FSStream.prototype={},Object.defineProperties(eo.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return(2097155&this.flags)!=1}},isWrite:{get:function(){return(2097155&this.flags)!=0}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new eo.FSStream,e);var n=eo.nextfd(r,t);return e.fd=n,eo.streams[n]=e,e},closeStream:e=>{eo.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=eo.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new eo.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{eo.devices[e]={stream_ops:r}},getDevice:e=>eo.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),eo.syncFSRequests++,eo.syncFSRequests>1&&F("warning: "+eo.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=eo.getMounts(eo.root.mount),n=0;function o(e){return eo.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach(r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)})},mount:(e,r,t)=>{var n,o="/"===t,a=!t;if(o&&eo.root)throw new eo.ErrnoError(10);if(!o&&!a){var i=eo.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,eo.isMountpoint(n))throw new eo.ErrnoError(10);if(!eo.isDir(n.mode))throw new eo.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?eo.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:e=>{var r=eo.lookupPath(e,{follow_mount:!1});if(!eo.isMountpoint(r.node))throw new eo.ErrnoError(28);var t=r.node,n=t.mounted,o=eo.getMounts(n);Object.keys(eo.nameTable).forEach(e=>{for(var r=eo.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&eo.destroyNode(r),r=t}}),t.mounted=null;var a=t.mount.mounts.indexOf(n);t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=eo.lookupPath(e,{parent:!0}).node,o=Q.basename(e);if(!o||"."===o||".."===o)throw new eo.ErrnoError(28);var a=eo.mayCreate(n,o);if(a)throw new eo.ErrnoError(a);if(!n.node_ops.mknod)throw new eo.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=(void 0!==r?r:438)&4095|32768,eo.mknod(e,r,0)),mkdir:(e,r)=>(r=(void 0!==r?r:511)&1023|16384,eo.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,eo.mknod(e,r,t)),symlink:(e,r)=>{if(!ee.resolve(e))throw new eo.ErrnoError(44);var t=eo.lookupPath(r,{parent:!0}).node;if(!t)throw new eo.ErrnoError(44);var n=Q.basename(r),o=eo.mayCreate(t,n);if(o)throw new eo.ErrnoError(o);if(!t.node_ops.symlink)throw new eo.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o,a=Q.dirname(e),i=Q.dirname(r),s=Q.basename(e),u=Q.basename(r);if(t=eo.lookupPath(e,{parent:!0}).node,n=eo.lookupPath(r,{parent:!0}).node,!t||!n)throw new eo.ErrnoError(44);if(t.mount!==n.mount)throw new eo.ErrnoError(75);var l=eo.lookupNode(t,s),c=ee.relative(e,i);if("."!==c.charAt(0))throw new eo.ErrnoError(28);if("."!==(c=ee.relative(r,a)).charAt(0))throw new eo.ErrnoError(55);try{o=eo.lookupNode(n,u)}catch(e){}if(l!==o){var d=eo.isDir(l.mode),f=eo.mayDelete(t,s,d);if(f||(f=o?eo.mayDelete(n,u,d):eo.mayCreate(n,u)))throw new eo.ErrnoError(f);if(!t.node_ops.rename)throw new eo.ErrnoError(63);if(eo.isMountpoint(l)||o&&eo.isMountpoint(o))throw new eo.ErrnoError(10);if(n!==t&&(f=eo.nodePermissions(t,"w")))throw new eo.ErrnoError(f);eo.hashRemoveNode(l);try{t.node_ops.rename(l,n,u)}catch(e){throw e}finally{eo.hashAddNode(l)}}},rmdir:e=>{var r=eo.lookupPath(e,{parent:!0}).node,t=Q.basename(e),n=eo.lookupNode(r,t),o=eo.mayDelete(r,t,!0);if(o)throw new eo.ErrnoError(o);if(!r.node_ops.rmdir)throw new eo.ErrnoError(63);if(eo.isMountpoint(n))throw new eo.ErrnoError(10);r.node_ops.rmdir(r,t),eo.destroyNode(n)},readdir:e=>{var r=eo.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new eo.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=eo.lookupPath(e,{parent:!0}).node;if(!r)throw new eo.ErrnoError(44);var t=Q.basename(e),n=eo.lookupNode(r,t),o=eo.mayDelete(r,t,!1);if(o)throw new eo.ErrnoError(o);if(!r.node_ops.unlink)throw new eo.ErrnoError(63);if(eo.isMountpoint(n))throw new eo.ErrnoError(10);r.node_ops.unlink(r,t),eo.destroyNode(n)},readlink:e=>{var r=eo.lookupPath(e).node;if(!r)throw new eo.ErrnoError(44);if(!r.node_ops.readlink)throw new eo.ErrnoError(28);return ee.resolve(eo.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=eo.lookupPath(e,{follow:!r}).node;if(!t)throw new eo.ErrnoError(44);if(!t.node_ops.getattr)throw new eo.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>eo.stat(e,!0),chmod:(e,r,t)=>{var n;if(!(n="string"==typeof e?eo.lookupPath(e,{follow:!t}).node:e).node_ops.setattr)throw new eo.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{eo.chmod(e,r,!0)},fchmod:(e,r)=>{var t=eo.getStream(e);if(!t)throw new eo.ErrnoError(8);eo.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;if(!(o="string"==typeof e?eo.lookupPath(e,{follow:!n}).node:e).node_ops.setattr)throw new eo.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{eo.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=eo.getStream(e);if(!n)throw new eo.ErrnoError(8);eo.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new eo.ErrnoError(28);if("string"==typeof e){var t;t=eo.lookupPath(e,{follow:!0}).node}else t=e;if(!t.node_ops.setattr)throw new eo.ErrnoError(63);if(eo.isDir(t.mode))throw new eo.ErrnoError(31);if(!eo.isFile(t.mode))throw new eo.ErrnoError(28);var n=eo.nodePermissions(t,"w");if(n)throw new eo.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=eo.getStream(e);if(!t)throw new eo.ErrnoError(8);if((2097155&t.flags)==0)throw new eo.ErrnoError(28);eo.truncate(t.node,r)},utime:(e,r,t)=>{var n=eo.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(e,t,n)=>{if(""===e)throw new eo.ErrnoError(44);if(t="string"==typeof t?eo.modeStringToFlags(t):t,n=void 0===n?438:n,n=64&t?4095&n|32768:0,"object"==typeof e)o=e;else{e=Q.normalize(e);try{var o;o=eo.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var a=!1;if(64&t){if(o){if(128&t)throw new eo.ErrnoError(20)}else o=eo.mknod(e,n,0),a=!0}if(!o)throw new eo.ErrnoError(44);if(eo.isChrdev(o.mode)&&(t&=-513),65536&t&&!eo.isDir(o.mode))throw new eo.ErrnoError(54);if(!a){var i=eo.mayOpen(o,t);if(i)throw new eo.ErrnoError(i)}512&t&&!a&&eo.truncate(o,0),t&=-131713;var s=eo.createStream({node:o,path:eo.getPath(o),flags:t,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),!r.logReadFiles||1&t||(eo.readFiles||(eo.readFiles={}),e in eo.readFiles||(eo.readFiles[e]=1)),s},close:e=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{eo.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new eo.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new eo.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new eo.ErrnoError(28);if(eo.isClosed(e)||(2097155&e.flags)==1)throw new eo.ErrnoError(8);if(eo.isDir(e.node.mode))throw new eo.ErrnoError(31);if(!e.stream_ops.read)throw new eo.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new eo.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new eo.ErrnoError(28);if(eo.isClosed(e)||(2097155&e.flags)==0)throw new eo.ErrnoError(8);if(eo.isDir(e.node.mode))throw new eo.ErrnoError(31);if(!e.stream_ops.write)throw new eo.ErrnoError(28);e.seekable&&1024&e.flags&&eo.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new eo.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);if(r<0||t<=0)throw new eo.ErrnoError(28);if((2097155&e.flags)==0)throw new eo.ErrnoError(8);if(!eo.isFile(e.node.mode)&&!eo.isDir(e.node.mode))throw new eo.ErrnoError(43);if(!e.stream_ops.allocate)throw new eo.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o)=>{if((2&n)!=0&&(2&o)==0&&(2097155&e.flags)!=2||(2097155&e.flags)==1)throw new eo.ErrnoError(2);if(!e.stream_ops.mmap)throw new eo.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:(e,r,t,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new eo.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:(e,r={})=>{if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw Error('Invalid encoding type "'+r.encoding+'"');var t,n=eo.open(e,r.flags),o=eo.stat(e).size,a=new Uint8Array(o);return eo.read(n,a,0,o,0),"utf8"===r.encoding?t=x(a,0):"binary"===r.encoding&&(t=a),eo.close(n),t},writeFile:(e,r,t={})=>{t.flags=t.flags||577;var n=eo.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(T(r)+1),a=C(r,o,0,o.length);eo.write(n,o,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))eo.write(n,r,0,r.byteLength,void 0,t.canOwn);else throw Error("Unsupported data type");eo.close(n)},cwd:()=>eo.currentPath,chdir:e=>{var r=eo.lookupPath(e,{follow:!0});if(null===r.node)throw new eo.ErrnoError(44);if(!eo.isDir(r.node.mode))throw new eo.ErrnoError(54);var t=eo.nodePermissions(r.node,"x");if(t)throw new eo.ErrnoError(t);eo.currentPath=r.path},createDefaultDirectories:()=>{eo.mkdir("/tmp"),eo.mkdir("/home"),eo.mkdir("/home/web_user")},createDefaultDevices:()=>{eo.mkdir("/dev"),eo.registerDevice(eo.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),eo.mkdev("/dev/null",eo.makedev(1,3)),et.register(eo.makedev(5,0),et.default_tty_ops),et.register(eo.makedev(6,0),et.default_tty1_ops),eo.mkdev("/dev/tty",eo.makedev(5,0)),eo.mkdev("/dev/tty1",eo.makedev(6,0));var e=function(){if("object"!=typeof crypto||"function"!=typeof crypto.getRandomValues)return()=>V("randomDevice");var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}();eo.createDevice("/dev","random",e),eo.createDevice("/dev","urandom",e),eo.mkdir("/dev/shm"),eo.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{eo.mkdir("/proc");var e=eo.mkdir("/proc/self");eo.mkdir("/proc/self/fd"),eo.mount({mount:()=>{var r=eo.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=eo.getStream(+r);if(!t)throw new eo.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>t.path}};return n.parent=n,n}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{r.stdin?eo.createDevice("/dev","stdin",r.stdin):eo.symlink("/dev/tty","/dev/stdin"),r.stdout?eo.createDevice("/dev","stdout",null,r.stdout):eo.symlink("/dev/tty","/dev/stdout"),r.stderr?eo.createDevice("/dev","stderr",null,r.stderr):eo.symlink("/dev/tty1","/dev/stderr"),eo.open("/dev/stdin",0),eo.open("/dev/stdout",1),eo.open("/dev/stderr",1)},ensureErrnoError:()=>{eo.ErrnoError||(eo.ErrnoError=function(e,r){this.name="ErrnoError",this.node=r,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},eo.ErrnoError.prototype=Error(),eo.ErrnoError.prototype.constructor=eo.ErrnoError,[44].forEach(e=>{eo.genericErrors[e]=new eo.ErrnoError(e),eo.genericErrors[e].stack=""}))},staticInit:()=>{eo.ensureErrnoError(),eo.nameTable=Array(4096),eo.mount(en,{},"/"),eo.createDefaultDirectories(),eo.createDefaultDevices(),eo.createSpecialDirectories(),eo.filesystems={MEMFS:en}},init:(e,t,n)=>{eo.init.initialized=!0,eo.ensureErrnoError(),r.stdin=e||r.stdin,r.stdout=t||r.stdout,r.stderr=n||r.stderr,eo.createStandardStreams()},quit:()=>{eo.init.initialized=!1,eE(0);for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=eo.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{var t=eo.lookupPath(e,{follow:!r});e=t.path}catch(e){}var n={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var t=eo.lookupPath(e,{parent:!0});n.parentExists=!0,n.parentPath=t.path,n.parentObject=t.node,n.name=Q.basename(e),t=eo.lookupPath(e,{follow:!r}),n.exists=!0,n.path=t.path,n.object=t.node,n.name=t.node.name,n.isRoot="/"===t.path}catch(e){n.error=e.errno}return n},createPath:(e,r,t,n)=>{e="string"==typeof e?e:eo.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=Q.join2(e,a);try{eo.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=Q.join2("string"==typeof e?e:eo.getPath(e),r),i=eo.getMode(n,o);return eo.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:eo.getPath(e),i=r?Q.join2(e,r):e);var s=eo.getMode(n,o),u=eo.create(i,s);if(t){if("string"==typeof t){for(var l=Array(t.length),c=0,d=t.length;c{var o=Q.join2("string"==typeof e?e:eo.getPath(e),r),a=eo.getMode(!!t,!!n);eo.createDevice.major||(eo.createDevice.major=64);var i=eo.makedev(eo.createDevice.major++,0);return eo.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i,s=0,u=0;u{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(a)try{e.contents=er(a(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new eo.ErrnoError(29)}else throw Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1)&&!(e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e,r=new XMLHttpRequest;if(r.open("HEAD",t,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw Error("Couldn't load "+t+". Status: "+r.status);var n=Number(r.getResponseHeader("Content-length")),o=(e=r.getResponseHeader("Accept-Ranges"))&&"bytes"===e,a=(e=r.getResponseHeader("Content-Encoding"))&&"gzip"===e,i=1048576;o||(i=n);var s=(e,r)=>{if(e>r)throw Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):er(o.responseText||"",!0)},u=this;u.setDataGetter(e=>{var r=e*i,t=(e+1)*i-1;if(t=Math.min(t,n-1),void 0===u.chunks[e]&&(u.chunks[e]=s(r,t)),void 0===u.chunks[e])throw Error("doXHR failed!");return u.chunks[e]}),(a||!n)&&(i=n=1,i=n=this.getter(0).length,D("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){var i;throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"}var i={isDevice:!1,url:t},s=eo.createFile(e,r,i,n,o);i.contents?s.contents=i.contents:i.url&&(s.contents=null,s.url=i.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};function l(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var s=0;s{var r=s.stream_ops[e];u[e]=function(){return eo.forceLoadFile(s),r.apply(null,arguments)}}),u.read=(e,r,t,n,o)=>(eo.forceLoadFile(s),l(e,r,t,n,o)),u.mmap=(e,r,t,n,o)=>{eo.forceLoadFile(s);var a=void V();if(!a)throw new eo.ErrnoError(48);return l(e,d,a,r,t),{ptr:a,allocated:!0}},s.stream_ops=u,s},createPreloadedFile:(e,r,t,n,o,a,s,u,l,c)=>{var d,f,m=r?ee.resolve(Q.join2(e,r)):e,h="cp "+m;function p(t){function i(t){c&&c(),u||eo.createDataFile(e,r,t,n,o,l),a&&a(),G(h)}Browser.handledByPreloadPlugin(t,m,i,()=>{s&&s(),G(h)})||i(t)}Y(h),"string"==typeof t?(d=e=>p(e),f="al "+t,i(t,e=>{var r;r='Loading data file "'+t+'" failed (no arrayBuffer).',e||V(r),d(new Uint8Array(e)),f&&G(f)},e=>{if(s)s();else throw'Loading data file "'+t+'" failed.'}),f&&Y(f)):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r=()=>{},t=()=>{})=>{var n=eo.indexedDB();try{var o=n.open(eo.DB_NAME(),eo.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{D("creating db"),o.result.createObjectStore(eo.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([eo.DB_STORE_NAME],"readwrite"),a=n.objectStore(eo.DB_STORE_NAME),i=0,s=0,u=e.length;function l(){0==s?r():t()}e.forEach(e=>{var r=a.put(eo.analyzePath(e).object.contents,e);r.onsuccess=()=>{++i+s==u&&l()},r.onerror=()=>{i+ ++s==u&&l()}}),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r=()=>{},t=()=>{})=>{var n=eo.indexedDB();try{var o=n.open(eo.DB_NAME(),eo.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var a=n.transaction([eo.DB_STORE_NAME],"readonly")}catch(e){t(e);return}var i=a.objectStore(eo.DB_STORE_NAME),s=0,u=0,l=e.length;function c(){0==u?r():t()}e.forEach(e=>{var r=i.get(e);r.onsuccess=()=>{eo.analyzePath(e).exists&&eo.unlink(e),eo.createDataFile(Q.dirname(e),Q.basename(e),r.result,!0,!0,!0),++s+u==l&&c()},r.onerror=()=>{s+ ++u==l&&c()}}),a.onerror=t},o.onerror=t}},ea={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(Q.isAbs(r))return r;if(-100===e)n=eo.cwd();else{var n;n=ea.getStreamFromFD(e).path}if(0==r.length){if(!t)throw new eo.ErrnoError(44);return n}return Q.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&Q.normalize(r)!==Q.normalize(eo.getPath(e.node)))return -54;throw e}h[t>>2]=n.dev,h[t+8>>2]=n.ino,h[t+12>>2]=n.mode,p[t+16>>2]=n.nlink,h[t+20>>2]=n.uid,h[t+24>>2]=n.gid,h[t+28>>2]=n.rdev,g=[n.size>>>0,+Math.abs(w=n.size)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+40>>2]=g[0],h[t+44>>2]=g[1],h[t+48>>2]=4096,h[t+52>>2]=n.blocks;var o=n.atime.getTime(),a=n.mtime.getTime(),i=n.ctime.getTime();return g=[Math.floor(o/1e3)>>>0,+Math.abs(w=Math.floor(o/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+56>>2]=g[0],h[t+60>>2]=g[1],p[t+64>>2]=o%1e3*1e3,g=[Math.floor(a/1e3)>>>0,+Math.abs(w=Math.floor(a/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+72>>2]=g[0],h[t+76>>2]=g[1],p[t+80>>2]=a%1e3*1e3,g=[Math.floor(i/1e3)>>>0,+Math.abs(w=Math.floor(i/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+88>>2]=g[0],h[t+92>>2]=g[1],p[t+96>>2]=i%1e3*1e3,g=[n.ino>>>0,+Math.abs(w=n.ino)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+104>>2]=g[0],h[t+108>>2]=g[1],0},doMsync:function(e,r,t,n,o){if(!eo.isFile(r.node.mode))throw new eo.ErrnoError(43);if(2&n)return 0;var a=f.slice(e,e+t);eo.msync(r,a,o,t,n)},varargs:void 0,get:function(){return ea.varargs+=4,h[ea.varargs-4>>2]},getStr:function(e){return R(e)},getStreamFromFD:function(e){var r=eo.getStream(e);if(!r)throw new eo.ErrnoError(8);return r}};function ei(e){return e%4==0&&(e%100!=0||e%400==0)}var es=[0,31,60,91,121,152,182,213,244,274,305,335],eu=[0,31,59,90,120,151,181,212,243,273,304,334];function el(e){var r=T(e)+1,t=eg(r);return t&&C(e,d,t,r),t}function ec(e,t){c=e,M||U>0||(ek(),Z(j),eo.quit(),et.shutdown(),L=!0),c=e,M||U>0||(r.onExit&&r.onExit(e),P=!0),k(e,new J(e))}var ed=[31,29,31,30,31,30,31,31,30,31,30,31],ef=[31,28,31,30,31,30,31,31,30,31,30,31];function em(e){if(e instanceof J||"unwind"==e)return c;k(1,e)}function eh(e){try{return e()}catch(e){V(e)}}var ep={instrumentWasmImports:function(e){var r=["emscripten_sleep","emscripten_wget","emscripten_wget_data","emscripten_idb_load","emscripten_idb_store","emscripten_idb_delete","emscripten_idb_exists","emscripten_idb_load_blob","emscripten_idb_store_blob","SDL_Delay","emscripten_scan_registers","emscripten_lazy_load_code","emscripten_fiber_swap","__load_secondary_module","fd_sync","__wasi_fd_sync","_emval_await","_dlopen_js","__asyncjs__*"];for(var t in e)!function(t){var n=e[t];n.sig,"function"==typeof n&&(r.indexOf(t)>=0||t.startsWith("__asyncjs__"))}(t)},instrumentWasmExports:function(e){var r={};for(var t in e)!function(t){var n=e[t];"function"==typeof n?r[t]=function(){ep.exportCallStack.push(t);try{return n.apply(null,arguments)}finally{P||(ep.exportCallStack.pop()===t||V(void 0),ep.maybeStopUnwind())}}:r[t]=n}(t);return r},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:8192,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(e){var r=ep.callStackNameToId[e];return void 0===r&&(r=ep.callStackId++,ep.callStackNameToId[e]=r,ep.callStackIdToName[r]=e),r},maybeStopUnwind:function(){ep.currData&&ep.state===ep.State.Unwinding&&0===ep.exportCallStack.length&&(ep.state=ep.State.Normal,U+=1,eh(eF),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:function(){return new Promise((e,r)=>{ep.asyncPromiseHandlers={resolve:e,reject:r}})},allocateData:function(){var e=eg(12+ep.StackSize);return ep.setDataHeader(e,e+12,ep.StackSize),ep.setDataRewindFunc(e),e},setDataHeader:function(e,r,t){h[e>>2]=r,h[e+4>>2]=r+t},setDataRewindFunc:function(e){var r=ep.exportCallStack[0],t=ep.getCallStackId(r);h[e+8>>2]=t},getDataRewindFunc:function(e){var t=h[e+8>>2],n=ep.callStackIdToName[t];return r.asm[n]},doRewind:function(e){var r=ep.getDataRewindFunc(e);return U-=1,r()},handleSleep:function(e){if(!P){if(ep.state===ep.State.Normal){var r=!1,t=!1;e((e=0)=>{if(!P&&(ep.handleSleepReturnValue=e,r=!0,t)){ep.state=ep.State.Rewinding,eh(()=>eM(ep.currData)),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var n,o=!1;try{n=ep.doRewind(ep.currData)}catch(e){n=e,o=!0}var a=!1;if(!ep.currData){var i=ep.asyncPromiseHandlers;i&&(ep.asyncPromiseHandlers=null,(o?i.reject:i.resolve)(n),a=!0)}if(o&&!a)throw n}}),t=!0,r||(ep.state=ep.State.Unwinding,ep.currData=ep.allocateData(),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause(),eh(()=>eD(ep.currData)))}else ep.state===ep.State.Rewinding?(ep.state=ep.State.Normal,eh(eP),e_(ep.currData),ep.currData=null,ep.sleepCallbacks.forEach(e=>(function(e){if(!L&&!P)try{e(),function(){if(!(M||U>0))try{ec(c)}catch(e){em(e)}}()}catch(e){em(e)}})(e))):V("invalid state: "+ep.state);return ep.handleSleepReturnValue}},handleAsync:function(e){return ep.handleSleep(r=>{e().then(r)})}},ev=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=eo.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n};Object.defineProperties(ev.prototype,{read:{get:function(){return(365&this.mode)==365},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return(146&this.mode)==146},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return eo.isDir(this.mode)}},isDevice:{get:function(){return eo.isChrdev(this.mode)}}}),eo.FSNode=ev,eo.staticInit();var ew={j:function(e,t){return ep.handleAsync(async()=>{r.emglken_stdin_buffers.length||await new Promise(e=>{r.emglken_stdin_ready=e});let n=r.emglken_stdin_buffers.shift(),o=Math.min(n.length,t);return o==n.length?f.set(n,e):(f.set(n.subarray(0,o),e),r.emglken_stdin_buffers.unshift(n.subarray(o))),o})},s:function(e,r,t,n){try{if(r=ea.getStr(r),r=ea.calculateAt(e,r),-8&t)return -28;var o=eo.lookupPath(r,{follow:!0}).node;if(!o)return -44;var a="";if(4&t&&(a+="r"),2&t&&(a+="w"),1&t&&(a+="x"),a&&eo.nodePermissions(o,a))return -2;return 0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},e:function(e,r,t){ea.varargs=t;try{var n=ea.getStreamFromFD(e);switch(r){case 0:var o=ea.get();if(o<0)return -28;return eo.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=ea.get();return n.flags|=o,0;case 5:var o=ea.get();return m[o+0>>1]=2,0;case 16:case 8:default:return -28;case 9:return h[eb()>>2]=28,-1}}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},r:function(e,r){try{if(0===r)return -28;var t=eo.cwd(),n=T(t)+1;if(r>2]=0,0;case 21520:if(!n.tty)return -59;return -28;case 21531:var o=ea.get();return eo.ioctl(n,r,o);default:return -28}}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},p:function(e,r,t,n){ea.varargs=n;try{r=ea.getStr(r),r=ea.calculateAt(e,r);var o=n?ea.get():0;return eo.open(r,t,o).fd}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},o:function(e,r){try{return e=ea.getStr(e),ea.doStat(eo.stat,e,r)}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},m:function(){return!0},l:function(e,r){var t=new Date(1e3*(p[e>>2]+4294967296*h[e+4>>2]));h[r>>2]=t.getSeconds(),h[r+4>>2]=t.getMinutes(),h[r+8>>2]=t.getHours(),h[r+12>>2]=t.getDate(),h[r+16>>2]=t.getMonth(),h[r+20>>2]=t.getFullYear()-1900,h[r+24>>2]=t.getDay();var n=0|(ei(t.getFullYear())?es:eu)[t.getMonth()]+t.getDate()-1;h[r+28>>2]=n,h[r+36>>2]=-(60*t.getTimezoneOffset());var o=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=0|(a!=i&&t.getTimezoneOffset()==Math.min(i,a));h[r+32>>2]=s},k:function(e,r,t){var n=new Date().getFullYear(),o=new Date(n,0,1),a=new Date(n,6,1),i=o.getTimezoneOffset(),s=a.getTimezoneOffset();function u(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}p[e>>2]=60*Math.max(i,s),h[r>>2]=Number(i!=s);var l=u(o),c=u(a),d=el(l),f=el(c);s>2]=d,p[t+4>>2]=f):(p[t>>2]=f,p[t+4>>2]=d)},b:function(){return Date.now()},i:function(e,r,t){f.copyWithin(e,r,r+t)},h:function(e){var r=f.length;if((e>>>=0)>2147483648)return!1;let t=(e,r)=>e+(r-e%r)%r;for(var n=1;n<=4;n*=2){var o=r*(1+.2/n);if(o=Math.min(o,e+100663296),function(e){var r=l.buffer;try{return l.grow(e-r.byteLength+65535>>>16),N(),1}catch(e){}}(Math.min(2147483648,t(Math.max(e,o),65536))))return!0}return!1},a:ec,d:function(e){try{var r=ea.getStreamFromFD(e);return eo.close(r),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},n:function(e,r,t,n){try{var o=ea.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=eo.read(e,d,i,s,n);if(u<0)return -1;if(o+=u,u>2]=a,0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},g:function(e,r,t,n,o){try{var a=t+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*t:NaN;if(isNaN(a))return 61;var i=ea.getStreamFromFD(e);return eo.llseek(i,a,n),g=[i.position>>>0,(w=i.position,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[o>>2]=g[0],h[o+4>>2]=g[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},c:function(e,r,t,n){try{var o=ea.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=eo.write(e,d,i,s,n);if(u<0)return -1;o+=u,void 0!==n&&(n+=u)}return o}(o,r,t);return p[n>>2]=a,0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},f:function(e,r,t,n){var o=h[n+40>>2],a={tm_sec:h[n>>2],tm_min:h[n+4>>2],tm_hour:h[n+8>>2],tm_mday:h[n+12>>2],tm_mon:h[n+16>>2],tm_year:h[n+20>>2],tm_wday:h[n+24>>2],tm_yday:h[n+28>>2],tm_isdst:h[n+32>>2],tm_gmtoff:h[n+36>>2],tm_zone:o?R(o):""},i=R(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)i=i.replace(RegExp(u,"g"),s[u]);var l=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"];function f(e,r,t){for(var n="number"==typeof e?e.toString():e||"";n.length0?1:0}return 0===(t=n(e.getFullYear()-r.getFullYear()))&&0===(t=n(e.getMonth()-r.getMonth()))&&(t=n(e.getDate()-r.getDate())),t}function v(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function w(e){var r=function(e,r){for(var t=new Date(e.getTime());r>0;){var n=ei(t.getFullYear()),o=t.getMonth(),a=(n?ed:ef)[o];if(r>a-t.getDate())r-=a-t.getDate()+1,t.setDate(1),o<11?t.setMonth(o+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else{t.setDate(t.getDate()+r);break}}return t}(new Date(e.tm_year+1900,0,1),e.tm_yday),t=new Date(r.getFullYear(),0,4),n=new Date(r.getFullYear()+1,0,4),o=v(t),a=v(n);return 0>=p(o,r)?0>=p(a,r)?r.getFullYear()+1:r.getFullYear():r.getFullYear()-1}var g={"%a":function(e){return l[e.tm_wday].substring(0,3)},"%A":function(e){return l[e.tm_wday]},"%b":function(e){return c[e.tm_mon].substring(0,3)},"%B":function(e){return c[e.tm_mon]},"%C":function(e){return m((e.tm_year+1900)/100|0,2)},"%d":function(e){return m(e.tm_mday,2)},"%e":function(e){return f(e.tm_mday,2," ")},"%g":function(e){return w(e).toString().substring(2)},"%G":function(e){return w(e)},"%H":function(e){return m(e.tm_hour,2)},"%I":function(e){var r=e.tm_hour;return 0==r?r=12:r>12&&(r-=12),m(r,2)},"%j":function(e){return m(e.tm_mday+function(e,r){for(var t=0,n=0;n<=r;t+=e[n++]);return t}(ei(e.tm_year+1900)?ed:ef,e.tm_mon-1),3)},"%m":function(e){return m(e.tm_mon+1,2)},"%M":function(e){return m(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return m(e.tm_sec,2)},"%t":function(){return" "},"%u":function(e){return e.tm_wday||7},"%U":function(e){return m(Math.floor((e.tm_yday+7-e.tm_wday)/7),2)},"%V":function(e){var r=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&r++,r){if(53==r){var t=(e.tm_wday+371-e.tm_yday)%7;4==t||3==t&&ei(e.tm_year)||(r=1)}}else{r=52;var n=(e.tm_wday+7-e.tm_yday-1)%7;(4==n||5==n&&ei(e.tm_year%400-1))&&r++}return m(r,2)},"%w":function(e){return e.tm_wday},"%W":function(e){return m(Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var r=e.tm_gmtoff;return(r>=0?"+":"-")+String("0000"+(r=(r=Math.abs(r)/60)/60*100+r%60)).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in i=i.replace(/%%/g,"\x00\x00"),g)i.includes(u)&&(i=i.replace(RegExp(u,"g"),g[u](a)));var _=er(i=i.replace(/\0\0/g,"%"),!1);return _.length>r?0:(d.set(_,e),_.length-1)}};!function(){var e,t,n,a={a:ew};function i(e,t){var n,o=e.exports;return o=ep.instrumentWasmExports(o),r.asm=o,l=r.asm.t,N(),r.asm.C,n=r.asm.u,B.unshift(n),G("wasm-instantiate"),o}if(Y("wasm-instantiate"),r.instantiateWasm)try{return r.instantiateWasm(a,i)}catch(e){F("Module.instantiateWasm callback failed with error: "+e),o(e)}(e=u,t=v,n=function(e){i(e.instance)},e||"function"!=typeof WebAssembly.instantiateStreaming||X(t)||"function"!=typeof fetch?$(t,a,n):fetch(t,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,a).then(n,function(e){return F("wasm streaming compile failed: "+e),F("falling back to ArrayBuffer instantiation"),$(t,a,n)})})).catch(o)}();var eg=function(){return(eg=r.asm.v).apply(null,arguments)},e_=function(){return(e_=r.asm.w).apply(null,arguments)},ey=r._main=function(){return(ey=r._main=r.asm.x).apply(null,arguments)},eE=(r._gidispatch_get_game_id=function(){return(r._gidispatch_get_game_id=r.asm.y).apply(null,arguments)},r._fflush=function(){return(eE=r._fflush=r.asm.z).apply(null,arguments)}),eb=function(){return(eb=r.asm.A).apply(null,arguments)},ek=function(){return(ek=r.asm.B).apply(null,arguments)},eS=function(){return(eS=r.asm.D).apply(null,arguments)},eD=function(){return(eD=r.asm.E).apply(null,arguments)},eF=function(){return(eF=r.asm.F).apply(null,arguments)},eM=function(){return(eM=r.asm.G).apply(null,arguments)},eP=function(){return(eP=r.asm.H).apply(null,arguments)};function eA(e=E){!(H>0)&&(!function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;){var e;e=r.preRun.shift(),z.unshift(e)}Z(z)}(),H>0||(r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),t()},1)):t()));function t(){!_&&(_=!0,r.calledRun=!0,P||(r.noFSInit||eo.init.initialized||eo.init(),eo.ignorePermissions=!1,et.init(),Z(B),Z(O),n(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),ex&&function(e=[]){var r=ey;e.unshift(b);var t=e.length,n=eS((t+1)*4),o=n>>2;e.forEach(e=>{var r,t;h[o++]=(t=eS(r=T(e)+1),C(e,d,t,r),t)}),h[o]=0;try{var a=r(t,n);ec(a,!0)}catch(e){return em(e)}}(e),function(){if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;){var e;e=r.postRun.shift(),I.unshift(e)}Z(I)}()))}}if(r.___start_em_js=18128,r.___stop_em_js=20813,r.AsciiToString=function(e){for(var r="";;){var t=f[e++>>0];if(!t)return r;r+=String.fromCharCode(t)}},r.FS=eo,q=function e(){_||eA(),_||(q=e)},r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();var ex=!0;return r.noInitialRun&&(ex=!1),eA(),r.ready}})(),rE={};rE=new URL(k("6MsPj").resolve("90qbH"),import.meta.url).toString();var rb=(()=>{var e="file:///node_modules/emglken/build/tads-core.js";return function(r={}){var t,n,o,a,i,s,u,l,c,d,f,m,h,p,v,w,g,_,r=void 0!==r?r:{};r.ready=new Promise(function(e,r){n=e,o=r});var y=Object.assign({},r),E=[],b="./this.program",k=(e,r)=>{throw r},S="";"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),e&&(S=e),S=0!==S.indexOf("blob:")?S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):"",a=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},i=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{if(200==n.status||0==n.status&&n.response){r(n.response);return}t()},n.onerror=t,n.send(null)};var D=r.print||console.log.bind(console),F=r.printErr||console.warn.bind(console);Object.assign(r,y),y=null,r.arguments&&(E=r.arguments),r.thisProgram&&(b=r.thisProgram),r.quit&&(k=r.quit),r.wasmBinary&&(u=r.wasmBinary);var M=r.noExitRuntime||!1;"object"!=typeof WebAssembly&&V("no native wasm support detected");var P=!1,A=new TextDecoder("utf8");function x(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;return A.decode(e.buffer?e.subarray(r,o):new Uint8Array(e.slice(r,o)))}function R(e,r){if(!e)return"";for(var t=e+r,n=e;!(n>=t)&&f[n];)++n;return A.decode(f.subarray(e,n))}function C(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i)),s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function T(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r}function N(){var e=l.buffer;r.HEAP8=d=new Int8Array(e),r.HEAP16=m=new Int16Array(e),r.HEAP32=h=new Int32Array(e),r.HEAPU8=f=new Uint8Array(e),r.HEAPU16=new Uint16Array(e),r.HEAPU32=p=new Uint32Array(e),r.HEAPF32=new Float32Array(e),r.HEAPF64=new Float64Array(e)}var z=[],B=[],O=[],j=[],I=[],L=!1,U=0,H=0,W=null,q=null;function Y(e){H++,r.monitorRunDependencies&&r.monitorRunDependencies(H)}function G(e){if(H--,r.monitorRunDependencies&&r.monitorRunDependencies(H),0==H&&(null!==W&&(clearInterval(W),W=null),q)){var t=q;q=null,t()}}function V(e){r.onAbort&&r.onAbort(e),F(e="Aborted("+e+")"),P=!0,c=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw o(t),t}function X(e){return e.startsWith("data:application/octet-stream;base64,")}function K(e){try{if(e==v&&u)return new Uint8Array(u);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}catch(e){V(e)}}function $(e,r,t){return(u||"function"!=typeof fetch?Promise.resolve().then(function(){return K(e)}):fetch(e,{credentials:"same-origin"}).then(function(r){if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(function(){return K(e)})).then(function(e){return WebAssembly.instantiate(e,r)}).then(function(e){return e}).then(t,function(e){F("failed to asynchronously prepare wasm: "+e),V(e)})}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Z(e){for(;e.length>0;)e.shift()(r)}r.locateFile?X(v="tads-core.wasm")||(t=v,v=r.locateFile?r.locateFile(t,S):S+t):v=new URL(rE).href;var Q={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=Q.isAbs(e),t="/"===e.substr(-1);return(e=Q.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=Q.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=Q.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return -1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments);return Q.normalize(e.join("/"))},join2:(e,r)=>Q.normalize(e+"/"+r)},ee={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:eo.cwd();if("string"!=typeof n)throw TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=Q.isAbs(n)}return e=Q.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"),(r?"/":"")+e||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=ee.resolve(e).substr(1),r=ee.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t:T(e)+1),o=C(e,n,0,n.length);return r&&(n.length=o),n}var et={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){et.ttys[e]={input:[],output:[],ops:r},eo.registerDevice(e,et.stream_ops)},stream_ops:{open:function(e){var r=et.ttys[e.node.rdev];if(!r)throw new eo.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new eo.ErrnoError(60);for(var a,i=0,s=0;s0&&(D(x(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(F(x(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(F(x(e.output,0)),e.output=[])}}},en={ops_table:null,mount:function(e){return en.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(eo.isBlkdev(t)||eo.isFIFO(t))throw new eo.ErrnoError(63);en.ops_table||(en.ops_table={dir:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr,lookup:en.node_ops.lookup,mknod:en.node_ops.mknod,rename:en.node_ops.rename,unlink:en.node_ops.unlink,rmdir:en.node_ops.rmdir,readdir:en.node_ops.readdir,symlink:en.node_ops.symlink},stream:{llseek:en.stream_ops.llseek}},file:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr},stream:{llseek:en.stream_ops.llseek,read:en.stream_ops.read,write:en.stream_ops.write,allocate:en.stream_ops.allocate,mmap:en.stream_ops.mmap,msync:en.stream_ops.msync}},link:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr,readlink:en.node_ops.readlink},stream:{}},chrdev:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr},stream:eo.chrdev_stream_ops}});var o=eo.createNode(e,r,t,n);return eo.isDir(o.mode)?(o.node_ops=en.ops_table.dir.node,o.stream_ops=en.ops_table.dir.stream,o.contents={}):eo.isFile(o.mode)?(o.node_ops=en.ops_table.file.node,o.stream_ops=en.ops_table.file.stream,o.usedBytes=0,o.contents=null):eo.isLink(o.mode)?(o.node_ops=en.ops_table.link.node,o.stream_ops=en.ops_table.link.stream):eo.isChrdev(o.mode)&&(o.node_ops=en.ops_table.chrdev.node,o.stream_ops=en.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r){if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}}},node_ops:{getattr:function(e){var r={};return r.dev=eo.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,eo.isDir(e.mode)?r.size=4096:eo.isFile(e.mode)?r.size=e.usedBytes:eo.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&en.resizeFileStorage(e,r.size)},lookup:function(e,r){throw eo.genericErrors[44]},mknod:function(e,r,t,n){return en.createNode(e,r,t,n)},rename:function(e,r,t){if(eo.isDir(e.mode)){var n;try{n=eo.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new eo.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=eo.lookupNode(e,r);for(var n in t.contents)throw new eo.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=en.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!eo.isLink(e.mode))throw new eo.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||t+r{if(!(e=ee.resolve(e)))return{path:"",node:null};if((r=Object.assign({follow_mount:!0,recurse_count:0},r)).recurse_count>8)throw new eo.ErrnoError(32);for(var t=e.split("/").filter(e=>!!e),n=eo.root,o="/",a=0;a40)throw new eo.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var r;;){if(eo.isRoot(e)){var t=e.mount.mountpoint;if(!r)return t;return"/"!==t[t.length-1]?t+"/"+r:t+r}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%eo.nameTable.length},hashAddNode:e=>{var r=eo.hashName(e.parent.id,e.name);e.name_next=eo.nameTable[r],eo.nameTable[r]=e},hashRemoveNode:e=>{var r=eo.hashName(e.parent.id,e.name);if(eo.nameTable[r]===e)eo.nameTable[r]=e.name_next;else for(var t=eo.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=eo.mayLookup(e);if(t)throw new eo.ErrnoError(t,e);for(var n=eo.hashName(e.id,r),o=eo.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return eo.lookup(e,r)},createNode:(e,r,t,n)=>{var o=new eo.FSNode(e,r,t,n);return eo.hashAddNode(o),o},destroyNode:e=>{eo.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>(61440&e)==32768,isDir:e=>(61440&e)==16384,isLink:e=>(61440&e)==40960,isChrdev:e=>(61440&e)==8192,isBlkdev:e=>(61440&e)==24576,isFIFO:e=>(61440&e)==4096,isSocket:e=>(49152&e)==49152,flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=eo.flagModes[e];if(void 0===r)throw Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>eo.ignorePermissions?0:r.includes("r")&&!(292&e.mode)||r.includes("w")&&!(146&e.mode)||r.includes("x")&&!(73&e.mode)?2:0,mayLookup:e=>eo.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,r)=>{try{return eo.lookupNode(e,r),20}catch(e){}return eo.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{try{n=eo.lookupNode(e,r)}catch(e){return e.errno}var n,o=eo.nodePermissions(e,"wx");if(o)return o;if(t){if(!eo.isDir(n.mode))return 54;if(eo.isRoot(n)||eo.getPath(n)===eo.cwd())return 10}else if(eo.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?eo.isLink(e.mode)?32:eo.isDir(e.mode)&&("r"!==eo.flagsToPermissionString(r)||512&r)?31:eo.nodePermissions(e,eo.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,r=eo.MAX_OPEN_FDS)=>{for(var t=e;t<=r;t++)if(!eo.streams[t])return t;throw new eo.ErrnoError(33)},getStream:e=>eo.streams[e],createStream:(e,r,t)=>{eo.FSStream||(eo.FSStream=function(){this.shared={}},eo.FSStream.prototype={},Object.defineProperties(eo.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return(2097155&this.flags)!=1}},isWrite:{get:function(){return(2097155&this.flags)!=0}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new eo.FSStream,e);var n=eo.nextfd(r,t);return e.fd=n,eo.streams[n]=e,e},closeStream:e=>{eo.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=eo.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new eo.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{eo.devices[e]={stream_ops:r}},getDevice:e=>eo.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),eo.syncFSRequests++,eo.syncFSRequests>1&&F("warning: "+eo.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=eo.getMounts(eo.root.mount),n=0;function o(e){return eo.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach(r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)})},mount:(e,r,t)=>{var n,o="/"===t,a=!t;if(o&&eo.root)throw new eo.ErrnoError(10);if(!o&&!a){var i=eo.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,eo.isMountpoint(n))throw new eo.ErrnoError(10);if(!eo.isDir(n.mode))throw new eo.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?eo.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:e=>{var r=eo.lookupPath(e,{follow_mount:!1});if(!eo.isMountpoint(r.node))throw new eo.ErrnoError(28);var t=r.node,n=t.mounted,o=eo.getMounts(n);Object.keys(eo.nameTable).forEach(e=>{for(var r=eo.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&eo.destroyNode(r),r=t}}),t.mounted=null;var a=t.mount.mounts.indexOf(n);t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=eo.lookupPath(e,{parent:!0}).node,o=Q.basename(e);if(!o||"."===o||".."===o)throw new eo.ErrnoError(28);var a=eo.mayCreate(n,o);if(a)throw new eo.ErrnoError(a);if(!n.node_ops.mknod)throw new eo.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=(void 0!==r?r:438)&4095|32768,eo.mknod(e,r,0)),mkdir:(e,r)=>(r=(void 0!==r?r:511)&1023|16384,eo.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,eo.mknod(e,r,t)),symlink:(e,r)=>{if(!ee.resolve(e))throw new eo.ErrnoError(44);var t=eo.lookupPath(r,{parent:!0}).node;if(!t)throw new eo.ErrnoError(44);var n=Q.basename(r),o=eo.mayCreate(t,n);if(o)throw new eo.ErrnoError(o);if(!t.node_ops.symlink)throw new eo.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o,a=Q.dirname(e),i=Q.dirname(r),s=Q.basename(e),u=Q.basename(r);if(t=eo.lookupPath(e,{parent:!0}).node,n=eo.lookupPath(r,{parent:!0}).node,!t||!n)throw new eo.ErrnoError(44);if(t.mount!==n.mount)throw new eo.ErrnoError(75);var l=eo.lookupNode(t,s),c=ee.relative(e,i);if("."!==c.charAt(0))throw new eo.ErrnoError(28);if("."!==(c=ee.relative(r,a)).charAt(0))throw new eo.ErrnoError(55);try{o=eo.lookupNode(n,u)}catch(e){}if(l!==o){var d=eo.isDir(l.mode),f=eo.mayDelete(t,s,d);if(f||(f=o?eo.mayDelete(n,u,d):eo.mayCreate(n,u)))throw new eo.ErrnoError(f);if(!t.node_ops.rename)throw new eo.ErrnoError(63);if(eo.isMountpoint(l)||o&&eo.isMountpoint(o))throw new eo.ErrnoError(10);if(n!==t&&(f=eo.nodePermissions(t,"w")))throw new eo.ErrnoError(f);eo.hashRemoveNode(l);try{t.node_ops.rename(l,n,u)}catch(e){throw e}finally{eo.hashAddNode(l)}}},rmdir:e=>{var r=eo.lookupPath(e,{parent:!0}).node,t=Q.basename(e),n=eo.lookupNode(r,t),o=eo.mayDelete(r,t,!0);if(o)throw new eo.ErrnoError(o);if(!r.node_ops.rmdir)throw new eo.ErrnoError(63);if(eo.isMountpoint(n))throw new eo.ErrnoError(10);r.node_ops.rmdir(r,t),eo.destroyNode(n)},readdir:e=>{var r=eo.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new eo.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=eo.lookupPath(e,{parent:!0}).node;if(!r)throw new eo.ErrnoError(44);var t=Q.basename(e),n=eo.lookupNode(r,t),o=eo.mayDelete(r,t,!1);if(o)throw new eo.ErrnoError(o);if(!r.node_ops.unlink)throw new eo.ErrnoError(63);if(eo.isMountpoint(n))throw new eo.ErrnoError(10);r.node_ops.unlink(r,t),eo.destroyNode(n)},readlink:e=>{var r=eo.lookupPath(e).node;if(!r)throw new eo.ErrnoError(44);if(!r.node_ops.readlink)throw new eo.ErrnoError(28);return ee.resolve(eo.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=eo.lookupPath(e,{follow:!r}).node;if(!t)throw new eo.ErrnoError(44);if(!t.node_ops.getattr)throw new eo.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>eo.stat(e,!0),chmod:(e,r,t)=>{var n;if(!(n="string"==typeof e?eo.lookupPath(e,{follow:!t}).node:e).node_ops.setattr)throw new eo.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{eo.chmod(e,r,!0)},fchmod:(e,r)=>{var t=eo.getStream(e);if(!t)throw new eo.ErrnoError(8);eo.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;if(!(o="string"==typeof e?eo.lookupPath(e,{follow:!n}).node:e).node_ops.setattr)throw new eo.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{eo.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=eo.getStream(e);if(!n)throw new eo.ErrnoError(8);eo.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new eo.ErrnoError(28);if("string"==typeof e){var t;t=eo.lookupPath(e,{follow:!0}).node}else t=e;if(!t.node_ops.setattr)throw new eo.ErrnoError(63);if(eo.isDir(t.mode))throw new eo.ErrnoError(31);if(!eo.isFile(t.mode))throw new eo.ErrnoError(28);var n=eo.nodePermissions(t,"w");if(n)throw new eo.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=eo.getStream(e);if(!t)throw new eo.ErrnoError(8);if((2097155&t.flags)==0)throw new eo.ErrnoError(28);eo.truncate(t.node,r)},utime:(e,r,t)=>{var n=eo.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(e,t,n)=>{if(""===e)throw new eo.ErrnoError(44);if(t="string"==typeof t?eo.modeStringToFlags(t):t,n=void 0===n?438:n,n=64&t?4095&n|32768:0,"object"==typeof e)o=e;else{e=Q.normalize(e);try{var o;o=eo.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var a=!1;if(64&t){if(o){if(128&t)throw new eo.ErrnoError(20)}else o=eo.mknod(e,n,0),a=!0}if(!o)throw new eo.ErrnoError(44);if(eo.isChrdev(o.mode)&&(t&=-513),65536&t&&!eo.isDir(o.mode))throw new eo.ErrnoError(54);if(!a){var i=eo.mayOpen(o,t);if(i)throw new eo.ErrnoError(i)}512&t&&!a&&eo.truncate(o,0),t&=-131713;var s=eo.createStream({node:o,path:eo.getPath(o),flags:t,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),!r.logReadFiles||1&t||(eo.readFiles||(eo.readFiles={}),e in eo.readFiles||(eo.readFiles[e]=1)),s},close:e=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{eo.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new eo.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new eo.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new eo.ErrnoError(28);if(eo.isClosed(e)||(2097155&e.flags)==1)throw new eo.ErrnoError(8);if(eo.isDir(e.node.mode))throw new eo.ErrnoError(31);if(!e.stream_ops.read)throw new eo.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new eo.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new eo.ErrnoError(28);if(eo.isClosed(e)||(2097155&e.flags)==0)throw new eo.ErrnoError(8);if(eo.isDir(e.node.mode))throw new eo.ErrnoError(31);if(!e.stream_ops.write)throw new eo.ErrnoError(28);e.seekable&&1024&e.flags&&eo.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new eo.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);if(r<0||t<=0)throw new eo.ErrnoError(28);if((2097155&e.flags)==0)throw new eo.ErrnoError(8);if(!eo.isFile(e.node.mode)&&!eo.isDir(e.node.mode))throw new eo.ErrnoError(43);if(!e.stream_ops.allocate)throw new eo.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o)=>{if((2&n)!=0&&(2&o)==0&&(2097155&e.flags)!=2||(2097155&e.flags)==1)throw new eo.ErrnoError(2);if(!e.stream_ops.mmap)throw new eo.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:(e,r,t,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new eo.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:(e,r={})=>{if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw Error('Invalid encoding type "'+r.encoding+'"');var t,n=eo.open(e,r.flags),o=eo.stat(e).size,a=new Uint8Array(o);return eo.read(n,a,0,o,0),"utf8"===r.encoding?t=x(a,0):"binary"===r.encoding&&(t=a),eo.close(n),t},writeFile:(e,r,t={})=>{t.flags=t.flags||577;var n=eo.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(T(r)+1),a=C(r,o,0,o.length);eo.write(n,o,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))eo.write(n,r,0,r.byteLength,void 0,t.canOwn);else throw Error("Unsupported data type");eo.close(n)},cwd:()=>eo.currentPath,chdir:e=>{var r=eo.lookupPath(e,{follow:!0});if(null===r.node)throw new eo.ErrnoError(44);if(!eo.isDir(r.node.mode))throw new eo.ErrnoError(54);var t=eo.nodePermissions(r.node,"x");if(t)throw new eo.ErrnoError(t);eo.currentPath=r.path},createDefaultDirectories:()=>{eo.mkdir("/tmp"),eo.mkdir("/home"),eo.mkdir("/home/web_user")},createDefaultDevices:()=>{eo.mkdir("/dev"),eo.registerDevice(eo.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),eo.mkdev("/dev/null",eo.makedev(1,3)),et.register(eo.makedev(5,0),et.default_tty_ops),et.register(eo.makedev(6,0),et.default_tty1_ops),eo.mkdev("/dev/tty",eo.makedev(5,0)),eo.mkdev("/dev/tty1",eo.makedev(6,0));var e=function(){if("object"!=typeof crypto||"function"!=typeof crypto.getRandomValues)return()=>V("randomDevice");var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}();eo.createDevice("/dev","random",e),eo.createDevice("/dev","urandom",e),eo.mkdir("/dev/shm"),eo.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{eo.mkdir("/proc");var e=eo.mkdir("/proc/self");eo.mkdir("/proc/self/fd"),eo.mount({mount:()=>{var r=eo.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=eo.getStream(+r);if(!t)throw new eo.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>t.path}};return n.parent=n,n}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{r.stdin?eo.createDevice("/dev","stdin",r.stdin):eo.symlink("/dev/tty","/dev/stdin"),r.stdout?eo.createDevice("/dev","stdout",null,r.stdout):eo.symlink("/dev/tty","/dev/stdout"),r.stderr?eo.createDevice("/dev","stderr",null,r.stderr):eo.symlink("/dev/tty1","/dev/stderr"),eo.open("/dev/stdin",0),eo.open("/dev/stdout",1),eo.open("/dev/stderr",1)},ensureErrnoError:()=>{eo.ErrnoError||(eo.ErrnoError=function(e,r){this.name="ErrnoError",this.node=r,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},eo.ErrnoError.prototype=Error(),eo.ErrnoError.prototype.constructor=eo.ErrnoError,[44].forEach(e=>{eo.genericErrors[e]=new eo.ErrnoError(e),eo.genericErrors[e].stack=""}))},staticInit:()=>{eo.ensureErrnoError(),eo.nameTable=Array(4096),eo.mount(en,{},"/"),eo.createDefaultDirectories(),eo.createDefaultDevices(),eo.createSpecialDirectories(),eo.filesystems={MEMFS:en}},init:(e,t,n)=>{eo.init.initialized=!0,eo.ensureErrnoError(),r.stdin=e||r.stdin,r.stdout=t||r.stdout,r.stderr=n||r.stderr,eo.createStandardStreams()},quit:()=>{eo.init.initialized=!1,ek(0);for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=eo.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{var t=eo.lookupPath(e,{follow:!r});e=t.path}catch(e){}var n={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var t=eo.lookupPath(e,{parent:!0});n.parentExists=!0,n.parentPath=t.path,n.parentObject=t.node,n.name=Q.basename(e),t=eo.lookupPath(e,{follow:!r}),n.exists=!0,n.path=t.path,n.object=t.node,n.name=t.node.name,n.isRoot="/"===t.path}catch(e){n.error=e.errno}return n},createPath:(e,r,t,n)=>{e="string"==typeof e?e:eo.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=Q.join2(e,a);try{eo.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=Q.join2("string"==typeof e?e:eo.getPath(e),r),i=eo.getMode(n,o);return eo.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:eo.getPath(e),i=r?Q.join2(e,r):e);var s=eo.getMode(n,o),u=eo.create(i,s);if(t){if("string"==typeof t){for(var l=Array(t.length),c=0,d=t.length;c{var o=Q.join2("string"==typeof e?e:eo.getPath(e),r),a=eo.getMode(!!t,!!n);eo.createDevice.major||(eo.createDevice.major=64);var i=eo.makedev(eo.createDevice.major++,0);return eo.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i,s=0,u=0;u{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(a)try{e.contents=er(a(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new eo.ErrnoError(29)}else throw Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1)&&!(e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e,r=new XMLHttpRequest;if(r.open("HEAD",t,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw Error("Couldn't load "+t+". Status: "+r.status);var n=Number(r.getResponseHeader("Content-length")),o=(e=r.getResponseHeader("Accept-Ranges"))&&"bytes"===e,a=(e=r.getResponseHeader("Content-Encoding"))&&"gzip"===e,i=1048576;o||(i=n);var s=(e,r)=>{if(e>r)throw Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):er(o.responseText||"",!0)},u=this;u.setDataGetter(e=>{var r=e*i,t=(e+1)*i-1;if(t=Math.min(t,n-1),void 0===u.chunks[e]&&(u.chunks[e]=s(r,t)),void 0===u.chunks[e])throw Error("doXHR failed!");return u.chunks[e]}),(a||!n)&&(i=n=1,i=n=this.getter(0).length,D("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){var i;throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"}var i={isDevice:!1,url:t},s=eo.createFile(e,r,i,n,o);i.contents?s.contents=i.contents:i.url&&(s.contents=null,s.url=i.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};function l(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var s=0;s{var r=s.stream_ops[e];u[e]=function(){return eo.forceLoadFile(s),r.apply(null,arguments)}}),u.read=(e,r,t,n,o)=>(eo.forceLoadFile(s),l(e,r,t,n,o)),u.mmap=(e,r,t,n,o)=>{eo.forceLoadFile(s);var a=void V();if(!a)throw new eo.ErrnoError(48);return l(e,d,a,r,t),{ptr:a,allocated:!0}},s.stream_ops=u,s},createPreloadedFile:(e,r,t,n,o,a,s,u,l,c)=>{var d,f,m=r?ee.resolve(Q.join2(e,r)):e,h="cp "+m;function p(t){function i(t){c&&c(),u||eo.createDataFile(e,r,t,n,o,l),a&&a(),G(h)}Browser.handledByPreloadPlugin(t,m,i,()=>{s&&s(),G(h)})||i(t)}Y(h),"string"==typeof t?(d=e=>p(e),f="al "+t,i(t,e=>{var r;r='Loading data file "'+t+'" failed (no arrayBuffer).',e||V(r),d(new Uint8Array(e)),f&&G(f)},e=>{if(s)s();else throw'Loading data file "'+t+'" failed.'}),f&&Y(f)):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r=()=>{},t=()=>{})=>{var n=eo.indexedDB();try{var o=n.open(eo.DB_NAME(),eo.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{D("creating db"),o.result.createObjectStore(eo.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([eo.DB_STORE_NAME],"readwrite"),a=n.objectStore(eo.DB_STORE_NAME),i=0,s=0,u=e.length;function l(){0==s?r():t()}e.forEach(e=>{var r=a.put(eo.analyzePath(e).object.contents,e);r.onsuccess=()=>{++i+s==u&&l()},r.onerror=()=>{i+ ++s==u&&l()}}),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r=()=>{},t=()=>{})=>{var n=eo.indexedDB();try{var o=n.open(eo.DB_NAME(),eo.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var a=n.transaction([eo.DB_STORE_NAME],"readonly")}catch(e){t(e);return}var i=a.objectStore(eo.DB_STORE_NAME),s=0,u=0,l=e.length;function c(){0==u?r():t()}e.forEach(e=>{var r=i.get(e);r.onsuccess=()=>{eo.analyzePath(e).exists&&eo.unlink(e),eo.createDataFile(Q.dirname(e),Q.basename(e),r.result,!0,!0,!0),++s+u==l&&c()},r.onerror=()=>{s+ ++u==l&&c()}}),a.onerror=t},o.onerror=t}},ea={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(Q.isAbs(r))return r;if(-100===e)n=eo.cwd();else{var n;n=ea.getStreamFromFD(e).path}if(0==r.length){if(!t)throw new eo.ErrnoError(44);return n}return Q.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&Q.normalize(r)!==Q.normalize(eo.getPath(e.node)))return -54;throw e}h[t>>2]=n.dev,h[t+8>>2]=n.ino,h[t+12>>2]=n.mode,p[t+16>>2]=n.nlink,h[t+20>>2]=n.uid,h[t+24>>2]=n.gid,h[t+28>>2]=n.rdev,g=[n.size>>>0,+Math.abs(w=n.size)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+40>>2]=g[0],h[t+44>>2]=g[1],h[t+48>>2]=4096,h[t+52>>2]=n.blocks;var o=n.atime.getTime(),a=n.mtime.getTime(),i=n.ctime.getTime();return g=[Math.floor(o/1e3)>>>0,+Math.abs(w=Math.floor(o/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+56>>2]=g[0],h[t+60>>2]=g[1],p[t+64>>2]=o%1e3*1e3,g=[Math.floor(a/1e3)>>>0,+Math.abs(w=Math.floor(a/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+72>>2]=g[0],h[t+76>>2]=g[1],p[t+80>>2]=a%1e3*1e3,g=[Math.floor(i/1e3)>>>0,+Math.abs(w=Math.floor(i/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+88>>2]=g[0],h[t+92>>2]=g[1],p[t+96>>2]=i%1e3*1e3,g=[n.ino>>>0,+Math.abs(w=n.ino)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+104>>2]=g[0],h[t+108>>2]=g[1],0},doMsync:function(e,r,t,n,o){if(!eo.isFile(r.node.mode))throw new eo.ErrnoError(43);if(2&n)return 0;var a=f.slice(e,e+t);eo.msync(r,a,o,t,n)},varargs:void 0,get:function(){return ea.varargs+=4,h[ea.varargs-4>>2]},getStr:function(e){return R(e)},getStreamFromFD:function(e){var r=eo.getStream(e);if(!r)throw new eo.ErrnoError(8);return r}};function ei(e){return p[e>>2]+4294967296*h[e+4>>2]}function es(e){return e%4==0&&(e%100!=0||e%400==0)}var eu=[0,31,60,91,121,152,182,213,244,274,305,335],el=[0,31,59,90,120,151,181,212,243,273,304,334];function ec(e){var r=T(e)+1,t=eE(r);return t&&C(e,d,t,r),t}var ed={};function ef(){if(!ef.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:b||"./this.program"};for(var r in ed)void 0===ed[r]?delete e[r]:e[r]=ed[r];var t=[];for(var r in e)t.push(r+"="+e[r]);ef.strings=t}return ef.strings}function em(e,t){c=e,M||U>0||(eF(),Z(j),eo.quit(),et.shutdown(),L=!0),c=e,M||U>0||(r.onExit&&r.onExit(e),P=!0),k(e,new J(e))}var eh=[31,29,31,30,31,30,31,31,30,31,30,31],ep=[31,28,31,30,31,30,31,31,30,31,30,31];function ev(e){if(e instanceof J||"unwind"==e)return c;k(1,e)}function ew(e){try{return e()}catch(e){V(e)}}var eg={instrumentWasmImports:function(e){var r=["invoke_*","emscripten_sleep","emscripten_wget","emscripten_wget_data","emscripten_idb_load","emscripten_idb_store","emscripten_idb_delete","emscripten_idb_exists","emscripten_idb_load_blob","emscripten_idb_store_blob","SDL_Delay","emscripten_scan_registers","emscripten_lazy_load_code","emscripten_fiber_swap","__load_secondary_module","fd_sync","__wasi_fd_sync","_emval_await","_dlopen_js","__asyncjs__*"];for(var t in e)!function(t){var n=e[t];n.sig,"function"==typeof n&&(r.indexOf(t)>=0||t.startsWith("__asyncjs__"))}(t)},instrumentWasmExports:function(e){var r={};for(var t in e)!function(t){var n=e[t];"function"==typeof n?r[t]=function(){eg.exportCallStack.push(t);try{return n.apply(null,arguments)}finally{P||(eg.exportCallStack.pop()===t||V(void 0),eg.maybeStopUnwind())}}:r[t]=n}(t);return r},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:8192,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(e){var r=eg.callStackNameToId[e];return void 0===r&&(r=eg.callStackId++,eg.callStackNameToId[e]=r,eg.callStackIdToName[r]=e),r},maybeStopUnwind:function(){eg.currData&&eg.state===eg.State.Unwinding&&0===eg.exportCallStack.length&&(eg.state=eg.State.Normal,U+=1,ew(e3),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:function(){return new Promise((e,r)=>{eg.asyncPromiseHandlers={resolve:e,reject:r}})},allocateData:function(){var e=eE(12+eg.StackSize);return eg.setDataHeader(e,e+12,eg.StackSize),eg.setDataRewindFunc(e),e},setDataHeader:function(e,r,t){h[e>>2]=r,h[e+4>>2]=r+t},setDataRewindFunc:function(e){var r=eg.exportCallStack[0],t=eg.getCallStackId(r);h[e+8>>2]=t},getDataRewindFunc:function(e){var t=h[e+8>>2],n=eg.callStackIdToName[t];return r.asm[n]},doRewind:function(e){var r=eg.getDataRewindFunc(e);return U-=1,r()},handleSleep:function(e){if(!P){if(eg.state===eg.State.Normal){var r=!1,t=!1;e((e=0)=>{if(!P&&(eg.handleSleepReturnValue=e,r=!0,t)){eg.state=eg.State.Rewinding,ew(()=>e9(eg.currData)),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var n,o=!1;try{n=eg.doRewind(eg.currData)}catch(e){n=e,o=!0}var a=!1;if(!eg.currData){var i=eg.asyncPromiseHandlers;i&&(eg.asyncPromiseHandlers=null,(o?i.reject:i.resolve)(n),a=!0)}if(o&&!a)throw n}}),t=!0,r||(eg.state=eg.State.Unwinding,eg.currData=eg.allocateData(),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause(),ew(()=>e6(eg.currData)))}else eg.state===eg.State.Rewinding?(eg.state=eg.State.Normal,ew(e8),eb(eg.currData),eg.currData=null,eg.sleepCallbacks.forEach(e=>(function(e){if(!L&&!P)try{e(),function(){if(!(M||U>0))try{em(c)}catch(e){ev(e)}}()}catch(e){ev(e)}})(e))):V("invalid state: "+eg.state);return eg.handleSleepReturnValue}},handleAsync:function(e){return eg.handleSleep(r=>{e().then(r)})}},e_=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=eo.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n};Object.defineProperties(e_.prototype,{read:{get:function(){return(365&this.mode)==365},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return(146&this.mode)==146},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return eo.isDir(this.mode)}},isDevice:{get:function(){return eo.isChrdev(this.mode)}}}),eo.FSNode=e_,eo.staticInit();var ey={O:function(e,t){return eg.handleAsync(async()=>{r.emglken_stdin_buffers.length||await new Promise(e=>{r.emglken_stdin_ready=e});let n=r.emglken_stdin_buffers.shift(),o=Math.min(n.length,t);return o==n.length?f.set(n,e):(f.set(n.subarray(0,o),e),r.emglken_stdin_buffers.unshift(n.subarray(o))),o})},ga:function(e){try{var r=ea.getStreamFromFD(e);return eo.createStream(r,0).fd}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},fa:function(e,r,t,n){try{if(r=ea.getStr(r),r=ea.calculateAt(e,r),-8&t)return -28;var o=eo.lookupPath(r,{follow:!0}).node;if(!o)return -44;var a="";if(4&t&&(a+="r"),2&t&&(a+="w"),1&t&&(a+="x"),a&&eo.nodePermissions(o,a))return -2;return 0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},G:function(e,r,t){ea.varargs=t;try{var n=ea.getStreamFromFD(e);switch(r){case 0:var o=ea.get();if(o<0)return -28;return eo.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=ea.get();return n.flags|=o,0;case 5:var o=ea.get();return m[o+0>>1]=2,0;case 16:case 8:default:return -28;case 9:return h[eD()>>2]=28,-1}}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},ea:function(e,r){try{if(0===r)return -28;var t=eo.cwd(),n=T(t)+1;if(r>>0,(w=u,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[r+o>>2]=g[0],h[r+o+4>>2]=g[1],g=[(i+1)*280>>>0,(w=(i+1)*280,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[r+o+8>>2]=g[0],h[r+o+12>>2]=g[1],m[r+o+16>>1]=280,d[r+o+18>>0]=l,s=r+o+19,C(c,f,s,256),o+=280,i+=1}return eo.llseek(n,280*i,0),o}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},ca:function(e,r,t){ea.varargs=t;try{var n=ea.getStreamFromFD(e);switch(r){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:if(!n.tty)return -59;return 0;case 21519:if(!n.tty)return -59;var o=ea.get();return h[o>>2]=0,0;case 21520:if(!n.tty)return -59;return -28;case 21531:var o=ea.get();return eo.ioctl(n,r,o);default:return -28}}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},ba:function(e,r){try{return e=ea.getStr(e),ea.doStat(eo.lstat,e,r)}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},aa:function(e,r,t){try{return r=ea.getStr(r),r=ea.calculateAt(e,r),r=Q.normalize(r),"/"===r[r.length-1]&&(r=r.substr(0,r.length-1)),eo.mkdir(r,t,0),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},$:function(e,r,t,n){try{r=ea.getStr(r);var o=256&n,a=4096&n;return n&=-6401,r=ea.calculateAt(e,r,a),ea.doStat(o?eo.lstat:eo.stat,r,t)}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},F:function(e,r,t,n){ea.varargs=n;try{r=ea.getStr(r),r=ea.calculateAt(e,r);var o=n?ea.get():0;return eo.open(r,t,o).fd}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},_:function(e,r,t,n){try{if(r=ea.getStr(r),r=ea.calculateAt(e,r),n<=0)return -28;var o=eo.readlink(r),a=Math.min(n,T(o)),i=d[t+a];return C(o,f,t,n+1),d[t+a]=i,a}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},Z:function(e,r,t,n){try{return r=ea.getStr(r),n=ea.getStr(n),r=ea.calculateAt(e,r),n=ea.calculateAt(t,n),eo.rename(r,n),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},E:function(e){try{return e=ea.getStr(e),eo.rmdir(e),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},Y:function(e,r){try{return e=ea.getStr(e),ea.doStat(eo.stat,e,r)}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},X:function(e,r,t){try{return r=ea.getStr(r),r=ea.calculateAt(e,r),0===t?eo.unlink(r):512===t?eo.rmdir(r):V("Invalid flags passed to unlinkat"),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},T:function(){return!0},S:function(){throw 1/0},R:function(e,r){var t=new Date(1e3*ei(e));h[r>>2]=t.getUTCSeconds(),h[r+4>>2]=t.getUTCMinutes(),h[r+8>>2]=t.getUTCHours(),h[r+12>>2]=t.getUTCDate(),h[r+16>>2]=t.getUTCMonth(),h[r+20>>2]=t.getUTCFullYear()-1900,h[r+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-n)/864e5|0;h[r+28>>2]=o},Q:function(e,r){var t=new Date(1e3*ei(e));h[r>>2]=t.getSeconds(),h[r+4>>2]=t.getMinutes(),h[r+8>>2]=t.getHours(),h[r+12>>2]=t.getDate(),h[r+16>>2]=t.getMonth(),h[r+20>>2]=t.getFullYear()-1900,h[r+24>>2]=t.getDay();var n=0|(es(t.getFullYear())?eu:el)[t.getMonth()]+t.getDate()-1;h[r+28>>2]=n,h[r+36>>2]=-(60*t.getTimezoneOffset());var o=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=0|(a!=i&&t.getTimezoneOffset()==Math.min(i,a));h[r+32>>2]=s},P:function(e,r,t){var n=new Date().getFullYear(),o=new Date(n,0,1),a=new Date(n,6,1),i=o.getTimezoneOffset(),s=a.getTimezoneOffset();function u(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}p[e>>2]=60*Math.max(i,s),h[r>>2]=Number(i!=s);var l=u(o),c=u(a),d=ec(l),f=ec(c);s>2]=d,p[t+4>>2]=f):(p[t>>2]=f,p[t+4>>2]=d)},C:function(){V("")},B:function(){return Date.now()},A:()=>performance.now(),N:function(e,r,t){f.copyWithin(e,r,r+t)},M:function(e){var r=f.length;if((e>>>=0)>2147483648)return!1;let t=(e,r)=>e+(r-e%r)%r;for(var n=1;n<=4;n*=2){var o=r*(1+.2/n);if(o=Math.min(o,e+100663296),function(e){var r=l.buffer;try{return l.grow(e-r.byteLength+65535>>>16),N(),1}catch(e){}}(Math.min(2147483648,t(Math.max(e,o),65536))))return!0}return!1},W:function(e,r){var t=0;return ef().forEach(function(n,o){var a=r+t;p[e+4*o>>2]=a,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);d[r>>0]=0}(n,a),t+=n.length+1}),0},V:function(e,r){var t=ef();p[e>>2]=t.length;var n=0;return t.forEach(function(e){n+=e.length+1}),p[r>>2]=n,0},y:em,w:function(e){try{var r=ea.getStreamFromFD(e);return eo.close(r),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},U:function(e,r,t,n){try{var o=ea.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=eo.read(e,d,i,s,n);if(u<0)return -1;if(o+=u,u>2]=a,0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},I:function(e,r,t,n,o){try{var a=t+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*t:NaN;if(isNaN(a))return 61;var i=ea.getStreamFromFD(e);return eo.llseek(i,a,n),g=[i.position>>>0,(w=i.position,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[o>>2]=g[0],h[o+4>>2]=g[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},D:function(e,r,t,n){try{var o=ea.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=eo.write(e,d,i,s,n);if(u<0)return -1;o+=u,void 0!==n&&(n+=u)}return o}(o,r,t);return p[n>>2]=a,0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},L:function(e){var r=eP();try{return e1(e)}catch(e){if(eA(r),e!==e+0)throw e;eM(1,0)}},b:function(e,r){var t=eP();try{return eC(e,r)}catch(e){if(eA(t),e!==e+0)throw e;eM(1,0)}},f:function(e,r,t){var n=eP();try{return eN(e,r,t)}catch(e){if(eA(n),e!==e+0)throw e;eM(1,0)}},e:function(e,r,t,n){var o=eP();try{return eH(e,r,t,n)}catch(e){if(eA(o),e!==e+0)throw e;eM(1,0)}},c:function(e,r,t,n,o){var a=eP();try{return eR(e,r,t,n,o)}catch(e){if(eA(a),e!==e+0)throw e;eM(1,0)}},j:function(e,r,t,n,o,a){var i=eP();try{return eI(e,r,t,n,o,a)}catch(e){if(eA(i),e!==e+0)throw e;eM(1,0)}},l:function(e,r,t,n,o,a,i){var s=eP();try{return eY(e,r,t,n,o,a,i)}catch(e){if(eA(s),e!==e+0)throw e;eM(1,0)}},m:function(e,r,t,n,o,a,i,s){var u=eP();try{return eX(e,r,t,n,o,a,i,s)}catch(e){if(eA(u),e!==e+0)throw e;eM(1,0)}},s:function(e,r,t,n,o,a,i,s,u){var l=eP();try{return eU(e,r,t,n,o,a,i,s,u)}catch(e){if(eA(l),e!==e+0)throw e;eM(1,0)}},t:function(e,r,t,n,o,a,i,s,u,l){var c=eP();try{return eV(e,r,t,n,o,a,i,s,u,l)}catch(e){if(eA(c),e!==e+0)throw e;eM(1,0)}},p:function(e,r,t,n,o,a,i,s,u,l,c){var d=eP();try{return eK(e,r,t,n,o,a,i,s,u,l,c)}catch(e){if(eA(d),e!==e+0)throw e;eM(1,0)}},x:function(e,r,t,n,o,a,i,s,u,l,c,d){var f=eP();try{return e2(e,r,t,n,o,a,i,s,u,l,c,d)}catch(e){if(eA(f),e!==e+0)throw e;eM(1,0)}},q:function(e,r,t,n,o,a,i,s,u,l,c,d,f,m){var h=eP();try{return e$(e,r,t,n,o,a,i,s,u,l,c,d,f,m)}catch(e){if(eA(h),e!==e+0)throw e;eM(1,0)}},z:function(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p){var v=eP();try{return e4(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p)}catch(e){if(eA(v),e!==e+0)throw e;eM(1,0)}},v:function(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p,v,w){var g=eP();try{return eZ(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p,v,w)}catch(e){if(eA(g),e!==e+0)throw e;eM(1,0)}},i:function(e){var r=eP();try{eJ(e)}catch(e){if(eA(r),e!==e+0)throw e;eM(1,0)}},h:function(e,r){var t=eP();try{eT(e,r)}catch(e){if(eA(t),e!==e+0)throw e;eM(1,0)}},d:function(e,r,t){var n=eP();try{eO(e,r,t)}catch(e){if(eA(n),e!==e+0)throw e;eM(1,0)}},a:function(e,r,t,n){var o=eP();try{ez(e,r,t,n)}catch(e){if(eA(o),e!==e+0)throw e;eM(1,0)}},g:function(e,r,t,n,o){var a=eP();try{eq(e,r,t,n,o)}catch(e){if(eA(a),e!==e+0)throw e;eM(1,0)}},o:function(e,r,t,n,o,a){var i=eP();try{ej(e,r,t,n,o,a)}catch(e){if(eA(i),e!==e+0)throw e;eM(1,0)}},n:function(e,r,t,n,o,a,i){var s=eP();try{eL(e,r,t,n,o,a,i)}catch(e){if(eA(s),e!==e+0)throw e;eM(1,0)}},K:function(e,r,t,n,o,a,i,s){var u=eP();try{eQ(e,r,t,n,o,a,i,s)}catch(e){if(eA(u),e!==e+0)throw e;eM(1,0)}},r:function(e,r,t,n,o,a,i,s,u){var l=eP();try{eB(e,r,t,n,o,a,i,s,u)}catch(e){if(eA(l),e!==e+0)throw e;eM(1,0)}},k:function(e,r,t,n,o,a,i,s,u,l){var c=eP();try{eW(e,r,t,n,o,a,i,s,u,l)}catch(e){if(eA(c),e!==e+0)throw e;eM(1,0)}},u:function(e,r,t,n,o,a,i,s,u,l,c,d){var f=eP();try{eG(e,r,t,n,o,a,i,s,u,l,c,d)}catch(e){if(eA(f),e!==e+0)throw e;eM(1,0)}},J:function(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p){var v=eP();try{e0(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p)}catch(e){if(eA(v),e!==e+0)throw e;eM(1,0)}},H:function(e,r,t,n){var o=h[n+40>>2],a={tm_sec:h[n>>2],tm_min:h[n+4>>2],tm_hour:h[n+8>>2],tm_mday:h[n+12>>2],tm_mon:h[n+16>>2],tm_year:h[n+20>>2],tm_wday:h[n+24>>2],tm_yday:h[n+28>>2],tm_isdst:h[n+32>>2],tm_gmtoff:h[n+36>>2],tm_zone:o?R(o):""},i=R(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)i=i.replace(RegExp(u,"g"),s[u]);var l=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"];function f(e,r,t){for(var n="number"==typeof e?e.toString():e||"";n.length0?1:0}return 0===(t=n(e.getFullYear()-r.getFullYear()))&&0===(t=n(e.getMonth()-r.getMonth()))&&(t=n(e.getDate()-r.getDate())),t}function v(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function w(e){var r=function(e,r){for(var t=new Date(e.getTime());r>0;){var n=es(t.getFullYear()),o=t.getMonth(),a=(n?eh:ep)[o];if(r>a-t.getDate())r-=a-t.getDate()+1,t.setDate(1),o<11?t.setMonth(o+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else{t.setDate(t.getDate()+r);break}}return t}(new Date(e.tm_year+1900,0,1),e.tm_yday),t=new Date(r.getFullYear(),0,4),n=new Date(r.getFullYear()+1,0,4),o=v(t),a=v(n);return 0>=p(o,r)?0>=p(a,r)?r.getFullYear()+1:r.getFullYear():r.getFullYear()-1}var g={"%a":function(e){return l[e.tm_wday].substring(0,3)},"%A":function(e){return l[e.tm_wday]},"%b":function(e){return c[e.tm_mon].substring(0,3)},"%B":function(e){return c[e.tm_mon]},"%C":function(e){return m((e.tm_year+1900)/100|0,2)},"%d":function(e){return m(e.tm_mday,2)},"%e":function(e){return f(e.tm_mday,2," ")},"%g":function(e){return w(e).toString().substring(2)},"%G":function(e){return w(e)},"%H":function(e){return m(e.tm_hour,2)},"%I":function(e){var r=e.tm_hour;return 0==r?r=12:r>12&&(r-=12),m(r,2)},"%j":function(e){return m(e.tm_mday+function(e,r){for(var t=0,n=0;n<=r;t+=e[n++]);return t}(es(e.tm_year+1900)?eh:ep,e.tm_mon-1),3)},"%m":function(e){return m(e.tm_mon+1,2)},"%M":function(e){return m(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return m(e.tm_sec,2)},"%t":function(){return" "},"%u":function(e){return e.tm_wday||7},"%U":function(e){return m(Math.floor((e.tm_yday+7-e.tm_wday)/7),2)},"%V":function(e){var r=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&r++,r){if(53==r){var t=(e.tm_wday+371-e.tm_yday)%7;4==t||3==t&&es(e.tm_year)||(r=1)}}else{r=52;var n=(e.tm_wday+7-e.tm_yday-1)%7;(4==n||5==n&&es(e.tm_year%400-1))&&r++}return m(r,2)},"%w":function(e){return e.tm_wday},"%W":function(e){return m(Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var r=e.tm_gmtoff;return(r>=0?"+":"-")+String("0000"+(r=(r=Math.abs(r)/60)/60*100+r%60)).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in i=i.replace(/%%/g,"\x00\x00"),g)i.includes(u)&&(i=i.replace(RegExp(u,"g"),g[u](a)));var _=er(i=i.replace(/\0\0/g,"%"),!1);return _.length>r?0:(d.set(_,e),_.length-1)}};!function(){var e,t,n,a={a:ey};function i(e,t){var n,o=e.exports;return o=eg.instrumentWasmExports(o),r.asm=o,l=r.asm.ha,N(),r.asm.qa,n=r.asm.ia,B.unshift(n),G("wasm-instantiate"),o}if(Y("wasm-instantiate"),r.instantiateWasm)try{return r.instantiateWasm(a,i)}catch(e){F("Module.instantiateWasm callback failed with error: "+e),o(e)}(e=u,t=v,n=function(e){i(e.instance)},e||"function"!=typeof WebAssembly.instantiateStreaming||X(t)||"function"!=typeof fetch?$(t,a,n):fetch(t,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,a).then(n,function(e){return F("wasm streaming compile failed: "+e),F("falling back to ArrayBuffer instantiation"),$(t,a,n)})})).catch(o)}();var eE=function(){return(eE=r.asm.ja).apply(null,arguments)},eb=function(){return(eb=r.asm.ka).apply(null,arguments)},ek=r._fflush=function(){return(ek=r._fflush=r.asm.la).apply(null,arguments)},eS=r._main=function(){return(eS=r._main=r.asm.ma).apply(null,arguments)},eD=(r._gidispatch_get_game_id=function(){return(r._gidispatch_get_game_id=r.asm.na).apply(null,arguments)},function(){return(eD=r.asm.oa).apply(null,arguments)}),eF=function(){return(eF=r.asm.pa).apply(null,arguments)},eM=function(){return(eM=r.asm.ra).apply(null,arguments)},eP=function(){return(eP=r.asm.sa).apply(null,arguments)},eA=function(){return(eA=r.asm.ta).apply(null,arguments)},ex=function(){return(ex=r.asm.ua).apply(null,arguments)},eR=r.dynCall_iiiii=function(){return(eR=r.dynCall_iiiii=r.asm.va).apply(null,arguments)},eC=r.dynCall_ii=function(){return(eC=r.dynCall_ii=r.asm.wa).apply(null,arguments)},eT=r.dynCall_vi=function(){return(eT=r.dynCall_vi=r.asm.xa).apply(null,arguments)},eN=r.dynCall_iii=function(){return(eN=r.dynCall_iii=r.asm.ya).apply(null,arguments)},ez=r.dynCall_viii=function(){return(ez=r.dynCall_viii=r.asm.za).apply(null,arguments)},eB=r.dynCall_viiiiiiii=function(){return(eB=r.dynCall_viiiiiiii=r.asm.Aa).apply(null,arguments)},eO=r.dynCall_vii=function(){return(eO=r.dynCall_vii=r.asm.Ba).apply(null,arguments)},ej=r.dynCall_viiiii=function(){return(ej=r.dynCall_viiiii=r.asm.Ca).apply(null,arguments)},eI=r.dynCall_iiiiii=function(){return(eI=r.dynCall_iiiiii=r.asm.Da).apply(null,arguments)},eL=r.dynCall_viiiiii=function(){return(eL=r.dynCall_viiiiii=r.asm.Ea).apply(null,arguments)},eU=r.dynCall_iiiiiiiii=function(){return(eU=r.dynCall_iiiiiiiii=r.asm.Fa).apply(null,arguments)},eH=r.dynCall_iiii=function(){return(eH=r.dynCall_iiii=r.asm.Ga).apply(null,arguments)},eW=r.dynCall_viiiiiiiii=function(){return(eW=r.dynCall_viiiiiiiii=r.asm.Ha).apply(null,arguments)},eq=r.dynCall_viiii=function(){return(eq=r.dynCall_viiii=r.asm.Ia).apply(null,arguments)},eY=r.dynCall_iiiiiii=function(){return(eY=r.dynCall_iiiiiii=r.asm.Ja).apply(null,arguments)},eG=r.dynCall_viiiiiiiiiii=function(){return(eG=r.dynCall_viiiiiiiiiii=r.asm.Ka).apply(null,arguments)},eV=r.dynCall_iiiiiiiiii=function(){return(eV=r.dynCall_iiiiiiiiii=r.asm.La).apply(null,arguments)},eX=r.dynCall_iiiiiiii=function(){return(eX=r.dynCall_iiiiiiii=r.asm.Ma).apply(null,arguments)},eK=r.dynCall_iiiiiiiiiii=function(){return(eK=r.dynCall_iiiiiiiiiii=r.asm.Na).apply(null,arguments)},e$=r.dynCall_iiiiiiiiiiiiii=function(){return(e$=r.dynCall_iiiiiiiiiiiiii=r.asm.Oa).apply(null,arguments)},eJ=r.dynCall_v=function(){return(eJ=r.dynCall_v=r.asm.Pa).apply(null,arguments)},eZ=r.dynCall_iiiiiiiiiiiiiiiiii=function(){return(eZ=r.dynCall_iiiiiiiiiiiiiiiiii=r.asm.Qa).apply(null,arguments)},eQ=r.dynCall_viiiiiii=function(){return(eQ=r.dynCall_viiiiiii=r.asm.Ra).apply(null,arguments)},e0=r.dynCall_viiiiiiiiiiiiiii=function(){return(e0=r.dynCall_viiiiiiiiiiiiiii=r.asm.Sa).apply(null,arguments)},e1=r.dynCall_i=function(){return(e1=r.dynCall_i=r.asm.Ta).apply(null,arguments)},e2=r.dynCall_iiiiiiiiiiii=function(){return(e2=r.dynCall_iiiiiiiiiiii=r.asm.Ua).apply(null,arguments)},e4=r.dynCall_iiiiiiiiiiiiiiii=function(){return(e4=r.dynCall_iiiiiiiiiiiiiiii=r.asm.Va).apply(null,arguments)},e6=function(){return(e6=r.asm.Wa).apply(null,arguments)},e3=function(){return(e3=r.asm.Xa).apply(null,arguments)},e9=function(){return(e9=r.asm.Ya).apply(null,arguments)},e8=function(){return(e8=r.asm.Za).apply(null,arguments)};function e5(e=E){!(H>0)&&(!function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;){var e;e=r.preRun.shift(),z.unshift(e)}Z(z)}(),H>0||(r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),t()},1)):t()));function t(){!_&&(_=!0,r.calledRun=!0,P||(r.noFSInit||eo.init.initialized||eo.init(),eo.ignorePermissions=!1,et.init(),Z(B),Z(O),n(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),e7&&function(e=[]){var r=eS;e.unshift(b);var t=e.length,n=ex((t+1)*4),o=n>>2;e.forEach(e=>{var r,t;h[o++]=(t=ex(r=T(e)+1),C(e,d,t,r),t)}),h[o]=0;try{var a=r(t,n);em(a,!0)}catch(e){return ev(e)}}(e),function(){if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;){var e;e=r.postRun.shift(),I.unshift(e)}Z(I)}()))}}if(r.___start_em_js=356528,r.___stop_em_js=359213,r.AsciiToString=function(e){for(var r="";;){var t=f[e++>>0];if(!t)return r;r+=String.fromCharCode(t)}},r.FS=eo,q=function e(){_||e5(),_||(q=e)},r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();var e7=!0;return r.noInitialRun&&(e7=!1),e5(),r.ready}})(),rk={};rk=new URL(k("6MsPj").resolve("32xWV"),import.meta.url).toString();var rS=(()=>{var e="file:///node_modules/emglken/build/scare-core.js";return function(r={}){var t,n,o,a,i,s,u,l,c,d,f,m,h,p,v,w,g,_,r=void 0!==r?r:{};r.ready=new Promise(function(e,r){n=e,o=r});var y=Object.assign({},r),E=[],b="./this.program",k=(e,r)=>{throw r},S="";"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),e&&(S=e),S=0!==S.indexOf("blob:")?S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):"",a=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},i=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{if(200==n.status||0==n.status&&n.response){r(n.response);return}t()},n.onerror=t,n.send(null)};var D=r.print||console.log.bind(console),F=r.printErr||console.warn.bind(console);Object.assign(r,y),y=null,r.arguments&&(E=r.arguments),r.thisProgram&&(b=r.thisProgram),r.quit&&(k=r.quit),r.wasmBinary&&(u=r.wasmBinary);var M=r.noExitRuntime||!1;"object"!=typeof WebAssembly&&G("no native wasm support detected");var P=!1,A=new TextDecoder("utf8");function x(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;return A.decode(e.buffer?e.subarray(r,o):new Uint8Array(e.slice(r,o)))}function R(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i)),s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function C(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r}function T(){var e=l.buffer;r.HEAP8=d=new Int8Array(e),r.HEAP16=m=new Int16Array(e),r.HEAP32=h=new Int32Array(e),r.HEAPU8=f=new Uint8Array(e),r.HEAPU16=new Uint16Array(e),r.HEAPU32=p=new Uint32Array(e),r.HEAPF32=new Float32Array(e),r.HEAPF64=new Float64Array(e)}var N=[],z=[],B=[],O=[],j=[],I=!1,L=0,U=0,H=null,W=null;function q(e){U++,r.monitorRunDependencies&&r.monitorRunDependencies(U)}function Y(e){if(U--,r.monitorRunDependencies&&r.monitorRunDependencies(U),0==U&&(null!==H&&(clearInterval(H),H=null),W)){var t=W;W=null,t()}}function G(e){r.onAbort&&r.onAbort(e),F(e="Aborted("+e+")"),P=!0,c=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw o(t),t}function V(e){return e.startsWith("data:application/octet-stream;base64,")}function X(e){try{if(e==v&&u)return new Uint8Array(u);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}catch(e){G(e)}}function K(e,r,t){return(u||"function"!=typeof fetch?Promise.resolve().then(function(){return X(e)}):fetch(e,{credentials:"same-origin"}).then(function(r){if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(function(){return X(e)})).then(function(e){return WebAssembly.instantiate(e,r)}).then(function(e){return e}).then(t,function(e){F("failed to asynchronously prepare wasm: "+e),G(e)})}function $(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function J(e){for(;e.length>0;)e.shift()(r)}r.locateFile?V(v="scare-core.wasm")||(t=v,v=r.locateFile?r.locateFile(t,S):S+t):v=new URL(rk).href;var Z={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=Z.isAbs(e),t="/"===e.substr(-1);return(e=Z.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=Z.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=Z.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return -1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments);return Z.normalize(e.join("/"))},join2:(e,r)=>Z.normalize(e+"/"+r)},Q={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:en.cwd();if("string"!=typeof n)throw TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=Z.isAbs(n)}return e=Z.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"),(r?"/":"")+e||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=Q.resolve(e).substr(1),r=Q.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t:C(e)+1),o=R(e,n,0,n.length);return r&&(n.length=o),n}var er={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){er.ttys[e]={input:[],output:[],ops:r},en.registerDevice(e,er.stream_ops)},stream_ops:{open:function(e){var r=er.ttys[e.node.rdev];if(!r)throw new en.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new en.ErrnoError(60);for(var a,i=0,s=0;s0&&(D(x(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(F(x(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(F(x(e.output,0)),e.output=[])}}},et={ops_table:null,mount:function(e){return et.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(en.isBlkdev(t)||en.isFIFO(t))throw new en.ErrnoError(63);et.ops_table||(et.ops_table={dir:{node:{getattr:et.node_ops.getattr,setattr:et.node_ops.setattr,lookup:et.node_ops.lookup,mknod:et.node_ops.mknod,rename:et.node_ops.rename,unlink:et.node_ops.unlink,rmdir:et.node_ops.rmdir,readdir:et.node_ops.readdir,symlink:et.node_ops.symlink},stream:{llseek:et.stream_ops.llseek}},file:{node:{getattr:et.node_ops.getattr,setattr:et.node_ops.setattr},stream:{llseek:et.stream_ops.llseek,read:et.stream_ops.read,write:et.stream_ops.write,allocate:et.stream_ops.allocate,mmap:et.stream_ops.mmap,msync:et.stream_ops.msync}},link:{node:{getattr:et.node_ops.getattr,setattr:et.node_ops.setattr,readlink:et.node_ops.readlink},stream:{}},chrdev:{node:{getattr:et.node_ops.getattr,setattr:et.node_ops.setattr},stream:en.chrdev_stream_ops}});var o=en.createNode(e,r,t,n);return en.isDir(o.mode)?(o.node_ops=et.ops_table.dir.node,o.stream_ops=et.ops_table.dir.stream,o.contents={}):en.isFile(o.mode)?(o.node_ops=et.ops_table.file.node,o.stream_ops=et.ops_table.file.stream,o.usedBytes=0,o.contents=null):en.isLink(o.mode)?(o.node_ops=et.ops_table.link.node,o.stream_ops=et.ops_table.link.stream):en.isChrdev(o.mode)&&(o.node_ops=et.ops_table.chrdev.node,o.stream_ops=et.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r){if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}}},node_ops:{getattr:function(e){var r={};return r.dev=en.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,en.isDir(e.mode)?r.size=4096:en.isFile(e.mode)?r.size=e.usedBytes:en.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&et.resizeFileStorage(e,r.size)},lookup:function(e,r){throw en.genericErrors[44]},mknod:function(e,r,t,n){return et.createNode(e,r,t,n)},rename:function(e,r,t){if(en.isDir(e.mode)){var n;try{n=en.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new en.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=en.lookupNode(e,r);for(var n in t.contents)throw new en.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=et.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!en.isLink(e.mode))throw new en.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||t+r{if(!(e=Q.resolve(e)))return{path:"",node:null};if((r=Object.assign({follow_mount:!0,recurse_count:0},r)).recurse_count>8)throw new en.ErrnoError(32);for(var t=e.split("/").filter(e=>!!e),n=en.root,o="/",a=0;a40)throw new en.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var r;;){if(en.isRoot(e)){var t=e.mount.mountpoint;if(!r)return t;return"/"!==t[t.length-1]?t+"/"+r:t+r}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%en.nameTable.length},hashAddNode:e=>{var r=en.hashName(e.parent.id,e.name);e.name_next=en.nameTable[r],en.nameTable[r]=e},hashRemoveNode:e=>{var r=en.hashName(e.parent.id,e.name);if(en.nameTable[r]===e)en.nameTable[r]=e.name_next;else for(var t=en.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=en.mayLookup(e);if(t)throw new en.ErrnoError(t,e);for(var n=en.hashName(e.id,r),o=en.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return en.lookup(e,r)},createNode:(e,r,t,n)=>{var o=new en.FSNode(e,r,t,n);return en.hashAddNode(o),o},destroyNode:e=>{en.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>(61440&e)==32768,isDir:e=>(61440&e)==16384,isLink:e=>(61440&e)==40960,isChrdev:e=>(61440&e)==8192,isBlkdev:e=>(61440&e)==24576,isFIFO:e=>(61440&e)==4096,isSocket:e=>(49152&e)==49152,flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=en.flagModes[e];if(void 0===r)throw Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>en.ignorePermissions?0:r.includes("r")&&!(292&e.mode)||r.includes("w")&&!(146&e.mode)||r.includes("x")&&!(73&e.mode)?2:0,mayLookup:e=>en.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,r)=>{try{return en.lookupNode(e,r),20}catch(e){}return en.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{try{n=en.lookupNode(e,r)}catch(e){return e.errno}var n,o=en.nodePermissions(e,"wx");if(o)return o;if(t){if(!en.isDir(n.mode))return 54;if(en.isRoot(n)||en.getPath(n)===en.cwd())return 10}else if(en.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?en.isLink(e.mode)?32:en.isDir(e.mode)&&("r"!==en.flagsToPermissionString(r)||512&r)?31:en.nodePermissions(e,en.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,r=en.MAX_OPEN_FDS)=>{for(var t=e;t<=r;t++)if(!en.streams[t])return t;throw new en.ErrnoError(33)},getStream:e=>en.streams[e],createStream:(e,r,t)=>{en.FSStream||(en.FSStream=function(){this.shared={}},en.FSStream.prototype={},Object.defineProperties(en.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return(2097155&this.flags)!=1}},isWrite:{get:function(){return(2097155&this.flags)!=0}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new en.FSStream,e);var n=en.nextfd(r,t);return e.fd=n,en.streams[n]=e,e},closeStream:e=>{en.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=en.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new en.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{en.devices[e]={stream_ops:r}},getDevice:e=>en.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),en.syncFSRequests++,en.syncFSRequests>1&&F("warning: "+en.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=en.getMounts(en.root.mount),n=0;function o(e){return en.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach(r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)})},mount:(e,r,t)=>{var n,o="/"===t,a=!t;if(o&&en.root)throw new en.ErrnoError(10);if(!o&&!a){var i=en.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,en.isMountpoint(n))throw new en.ErrnoError(10);if(!en.isDir(n.mode))throw new en.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?en.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:e=>{var r=en.lookupPath(e,{follow_mount:!1});if(!en.isMountpoint(r.node))throw new en.ErrnoError(28);var t=r.node,n=t.mounted,o=en.getMounts(n);Object.keys(en.nameTable).forEach(e=>{for(var r=en.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&en.destroyNode(r),r=t}}),t.mounted=null;var a=t.mount.mounts.indexOf(n);t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=en.lookupPath(e,{parent:!0}).node,o=Z.basename(e);if(!o||"."===o||".."===o)throw new en.ErrnoError(28);var a=en.mayCreate(n,o);if(a)throw new en.ErrnoError(a);if(!n.node_ops.mknod)throw new en.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=(void 0!==r?r:438)&4095|32768,en.mknod(e,r,0)),mkdir:(e,r)=>(r=(void 0!==r?r:511)&1023|16384,en.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,en.mknod(e,r,t)),symlink:(e,r)=>{if(!Q.resolve(e))throw new en.ErrnoError(44);var t=en.lookupPath(r,{parent:!0}).node;if(!t)throw new en.ErrnoError(44);var n=Z.basename(r),o=en.mayCreate(t,n);if(o)throw new en.ErrnoError(o);if(!t.node_ops.symlink)throw new en.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o,a=Z.dirname(e),i=Z.dirname(r),s=Z.basename(e),u=Z.basename(r);if(t=en.lookupPath(e,{parent:!0}).node,n=en.lookupPath(r,{parent:!0}).node,!t||!n)throw new en.ErrnoError(44);if(t.mount!==n.mount)throw new en.ErrnoError(75);var l=en.lookupNode(t,s),c=Q.relative(e,i);if("."!==c.charAt(0))throw new en.ErrnoError(28);if("."!==(c=Q.relative(r,a)).charAt(0))throw new en.ErrnoError(55);try{o=en.lookupNode(n,u)}catch(e){}if(l!==o){var d=en.isDir(l.mode),f=en.mayDelete(t,s,d);if(f||(f=o?en.mayDelete(n,u,d):en.mayCreate(n,u)))throw new en.ErrnoError(f);if(!t.node_ops.rename)throw new en.ErrnoError(63);if(en.isMountpoint(l)||o&&en.isMountpoint(o))throw new en.ErrnoError(10);if(n!==t&&(f=en.nodePermissions(t,"w")))throw new en.ErrnoError(f);en.hashRemoveNode(l);try{t.node_ops.rename(l,n,u)}catch(e){throw e}finally{en.hashAddNode(l)}}},rmdir:e=>{var r=en.lookupPath(e,{parent:!0}).node,t=Z.basename(e),n=en.lookupNode(r,t),o=en.mayDelete(r,t,!0);if(o)throw new en.ErrnoError(o);if(!r.node_ops.rmdir)throw new en.ErrnoError(63);if(en.isMountpoint(n))throw new en.ErrnoError(10);r.node_ops.rmdir(r,t),en.destroyNode(n)},readdir:e=>{var r=en.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new en.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=en.lookupPath(e,{parent:!0}).node;if(!r)throw new en.ErrnoError(44);var t=Z.basename(e),n=en.lookupNode(r,t),o=en.mayDelete(r,t,!1);if(o)throw new en.ErrnoError(o);if(!r.node_ops.unlink)throw new en.ErrnoError(63);if(en.isMountpoint(n))throw new en.ErrnoError(10);r.node_ops.unlink(r,t),en.destroyNode(n)},readlink:e=>{var r=en.lookupPath(e).node;if(!r)throw new en.ErrnoError(44);if(!r.node_ops.readlink)throw new en.ErrnoError(28);return Q.resolve(en.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=en.lookupPath(e,{follow:!r}).node;if(!t)throw new en.ErrnoError(44);if(!t.node_ops.getattr)throw new en.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>en.stat(e,!0),chmod:(e,r,t)=>{var n;if(!(n="string"==typeof e?en.lookupPath(e,{follow:!t}).node:e).node_ops.setattr)throw new en.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{en.chmod(e,r,!0)},fchmod:(e,r)=>{var t=en.getStream(e);if(!t)throw new en.ErrnoError(8);en.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;if(!(o="string"==typeof e?en.lookupPath(e,{follow:!n}).node:e).node_ops.setattr)throw new en.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{en.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=en.getStream(e);if(!n)throw new en.ErrnoError(8);en.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new en.ErrnoError(28);if("string"==typeof e){var t;t=en.lookupPath(e,{follow:!0}).node}else t=e;if(!t.node_ops.setattr)throw new en.ErrnoError(63);if(en.isDir(t.mode))throw new en.ErrnoError(31);if(!en.isFile(t.mode))throw new en.ErrnoError(28);var n=en.nodePermissions(t,"w");if(n)throw new en.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=en.getStream(e);if(!t)throw new en.ErrnoError(8);if((2097155&t.flags)==0)throw new en.ErrnoError(28);en.truncate(t.node,r)},utime:(e,r,t)=>{var n=en.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(e,t,n)=>{if(""===e)throw new en.ErrnoError(44);if(t="string"==typeof t?en.modeStringToFlags(t):t,n=void 0===n?438:n,n=64&t?4095&n|32768:0,"object"==typeof e)o=e;else{e=Z.normalize(e);try{var o;o=en.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var a=!1;if(64&t){if(o){if(128&t)throw new en.ErrnoError(20)}else o=en.mknod(e,n,0),a=!0}if(!o)throw new en.ErrnoError(44);if(en.isChrdev(o.mode)&&(t&=-513),65536&t&&!en.isDir(o.mode))throw new en.ErrnoError(54);if(!a){var i=en.mayOpen(o,t);if(i)throw new en.ErrnoError(i)}512&t&&!a&&en.truncate(o,0),t&=-131713;var s=en.createStream({node:o,path:en.getPath(o),flags:t,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),!r.logReadFiles||1&t||(en.readFiles||(en.readFiles={}),e in en.readFiles||(en.readFiles[e]=1)),s},close:e=>{if(en.isClosed(e))throw new en.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{en.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(en.isClosed(e))throw new en.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new en.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new en.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new en.ErrnoError(28);if(en.isClosed(e)||(2097155&e.flags)==1)throw new en.ErrnoError(8);if(en.isDir(e.node.mode))throw new en.ErrnoError(31);if(!e.stream_ops.read)throw new en.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new en.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new en.ErrnoError(28);if(en.isClosed(e)||(2097155&e.flags)==0)throw new en.ErrnoError(8);if(en.isDir(e.node.mode))throw new en.ErrnoError(31);if(!e.stream_ops.write)throw new en.ErrnoError(28);e.seekable&&1024&e.flags&&en.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new en.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(en.isClosed(e))throw new en.ErrnoError(8);if(r<0||t<=0)throw new en.ErrnoError(28);if((2097155&e.flags)==0)throw new en.ErrnoError(8);if(!en.isFile(e.node.mode)&&!en.isDir(e.node.mode))throw new en.ErrnoError(43);if(!e.stream_ops.allocate)throw new en.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o)=>{if((2&n)!=0&&(2&o)==0&&(2097155&e.flags)!=2||(2097155&e.flags)==1)throw new en.ErrnoError(2);if(!e.stream_ops.mmap)throw new en.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:(e,r,t,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new en.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:(e,r={})=>{if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw Error('Invalid encoding type "'+r.encoding+'"');var t,n=en.open(e,r.flags),o=en.stat(e).size,a=new Uint8Array(o);return en.read(n,a,0,o,0),"utf8"===r.encoding?t=x(a,0):"binary"===r.encoding&&(t=a),en.close(n),t},writeFile:(e,r,t={})=>{t.flags=t.flags||577;var n=en.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(C(r)+1),a=R(r,o,0,o.length);en.write(n,o,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))en.write(n,r,0,r.byteLength,void 0,t.canOwn);else throw Error("Unsupported data type");en.close(n)},cwd:()=>en.currentPath,chdir:e=>{var r=en.lookupPath(e,{follow:!0});if(null===r.node)throw new en.ErrnoError(44);if(!en.isDir(r.node.mode))throw new en.ErrnoError(54);var t=en.nodePermissions(r.node,"x");if(t)throw new en.ErrnoError(t);en.currentPath=r.path},createDefaultDirectories:()=>{en.mkdir("/tmp"),en.mkdir("/home"),en.mkdir("/home/web_user")},createDefaultDevices:()=>{en.mkdir("/dev"),en.registerDevice(en.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),en.mkdev("/dev/null",en.makedev(1,3)),er.register(en.makedev(5,0),er.default_tty_ops),er.register(en.makedev(6,0),er.default_tty1_ops),en.mkdev("/dev/tty",en.makedev(5,0)),en.mkdev("/dev/tty1",en.makedev(6,0));var e=function(){if("object"!=typeof crypto||"function"!=typeof crypto.getRandomValues)return()=>G("randomDevice");var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}();en.createDevice("/dev","random",e),en.createDevice("/dev","urandom",e),en.mkdir("/dev/shm"),en.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{en.mkdir("/proc");var e=en.mkdir("/proc/self");en.mkdir("/proc/self/fd"),en.mount({mount:()=>{var r=en.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=en.getStream(+r);if(!t)throw new en.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>t.path}};return n.parent=n,n}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{r.stdin?en.createDevice("/dev","stdin",r.stdin):en.symlink("/dev/tty","/dev/stdin"),r.stdout?en.createDevice("/dev","stdout",null,r.stdout):en.symlink("/dev/tty","/dev/stdout"),r.stderr?en.createDevice("/dev","stderr",null,r.stderr):en.symlink("/dev/tty1","/dev/stderr"),en.open("/dev/stdin",0),en.open("/dev/stdout",1),en.open("/dev/stderr",1)},ensureErrnoError:()=>{en.ErrnoError||(en.ErrnoError=function(e,r){this.name="ErrnoError",this.node=r,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},en.ErrnoError.prototype=Error(),en.ErrnoError.prototype.constructor=en.ErrnoError,[44].forEach(e=>{en.genericErrors[e]=new en.ErrnoError(e),en.genericErrors[e].stack=""}))},staticInit:()=>{en.ensureErrnoError(),en.nameTable=Array(4096),en.mount(et,{},"/"),en.createDefaultDirectories(),en.createDefaultDevices(),en.createSpecialDirectories(),en.filesystems={MEMFS:et}},init:(e,t,n)=>{en.init.initialized=!0,en.ensureErrnoError(),r.stdin=e||r.stdin,r.stdout=t||r.stdout,r.stderr=n||r.stderr,en.createStandardStreams()},quit:()=>{en.init.initialized=!1,ev(0);for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=en.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{var t=en.lookupPath(e,{follow:!r});e=t.path}catch(e){}var n={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var t=en.lookupPath(e,{parent:!0});n.parentExists=!0,n.parentPath=t.path,n.parentObject=t.node,n.name=Z.basename(e),t=en.lookupPath(e,{follow:!r}),n.exists=!0,n.path=t.path,n.object=t.node,n.name=t.node.name,n.isRoot="/"===t.path}catch(e){n.error=e.errno}return n},createPath:(e,r,t,n)=>{e="string"==typeof e?e:en.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=Z.join2(e,a);try{en.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=Z.join2("string"==typeof e?e:en.getPath(e),r),i=en.getMode(n,o);return en.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:en.getPath(e),i=r?Z.join2(e,r):e);var s=en.getMode(n,o),u=en.create(i,s);if(t){if("string"==typeof t){for(var l=Array(t.length),c=0,d=t.length;c{var o=Z.join2("string"==typeof e?e:en.getPath(e),r),a=en.getMode(!!t,!!n);en.createDevice.major||(en.createDevice.major=64);var i=en.makedev(en.createDevice.major++,0);return en.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i,s=0,u=0;u{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(a)try{e.contents=ee(a(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new en.ErrnoError(29)}else throw Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1)&&!(e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e,r=new XMLHttpRequest;if(r.open("HEAD",t,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw Error("Couldn't load "+t+". Status: "+r.status);var n=Number(r.getResponseHeader("Content-length")),o=(e=r.getResponseHeader("Accept-Ranges"))&&"bytes"===e,a=(e=r.getResponseHeader("Content-Encoding"))&&"gzip"===e,i=1048576;o||(i=n);var s=(e,r)=>{if(e>r)throw Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):ee(o.responseText||"",!0)},u=this;u.setDataGetter(e=>{var r=e*i,t=(e+1)*i-1;if(t=Math.min(t,n-1),void 0===u.chunks[e]&&(u.chunks[e]=s(r,t)),void 0===u.chunks[e])throw Error("doXHR failed!");return u.chunks[e]}),(a||!n)&&(i=n=1,i=n=this.getter(0).length,D("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){var i;throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"}var i={isDevice:!1,url:t},s=en.createFile(e,r,i,n,o);i.contents?s.contents=i.contents:i.url&&(s.contents=null,s.url=i.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};function l(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var s=0;s{var r=s.stream_ops[e];u[e]=function(){return en.forceLoadFile(s),r.apply(null,arguments)}}),u.read=(e,r,t,n,o)=>(en.forceLoadFile(s),l(e,r,t,n,o)),u.mmap=(e,r,t,n,o)=>{en.forceLoadFile(s);var a=void G();if(!a)throw new en.ErrnoError(48);return l(e,d,a,r,t),{ptr:a,allocated:!0}},s.stream_ops=u,s},createPreloadedFile:(e,r,t,n,o,a,s,u,l,c)=>{var d,f,m=r?Q.resolve(Z.join2(e,r)):e,h="cp "+m;function p(t){function i(t){c&&c(),u||en.createDataFile(e,r,t,n,o,l),a&&a(),Y(h)}Browser.handledByPreloadPlugin(t,m,i,()=>{s&&s(),Y(h)})||i(t)}q(h),"string"==typeof t?(d=e=>p(e),f="al "+t,i(t,e=>{var r;r='Loading data file "'+t+'" failed (no arrayBuffer).',e||G(r),d(new Uint8Array(e)),f&&Y(f)},e=>{if(s)s();else throw'Loading data file "'+t+'" failed.'}),f&&q(f)):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r=()=>{},t=()=>{})=>{var n=en.indexedDB();try{var o=n.open(en.DB_NAME(),en.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{D("creating db"),o.result.createObjectStore(en.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([en.DB_STORE_NAME],"readwrite"),a=n.objectStore(en.DB_STORE_NAME),i=0,s=0,u=e.length;function l(){0==s?r():t()}e.forEach(e=>{var r=a.put(en.analyzePath(e).object.contents,e);r.onsuccess=()=>{++i+s==u&&l()},r.onerror=()=>{i+ ++s==u&&l()}}),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r=()=>{},t=()=>{})=>{var n=en.indexedDB();try{var o=n.open(en.DB_NAME(),en.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var a=n.transaction([en.DB_STORE_NAME],"readonly")}catch(e){t(e);return}var i=a.objectStore(en.DB_STORE_NAME),s=0,u=0,l=e.length;function c(){0==u?r():t()}e.forEach(e=>{var r=i.get(e);r.onsuccess=()=>{en.analyzePath(e).exists&&en.unlink(e),en.createDataFile(Z.dirname(e),Z.basename(e),r.result,!0,!0,!0),++s+u==l&&c()},r.onerror=()=>{s+ ++u==l&&c()}}),a.onerror=t},o.onerror=t}},eo={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(Z.isAbs(r))return r;if(-100===e)n=en.cwd();else{var n;n=eo.getStreamFromFD(e).path}if(0==r.length){if(!t)throw new en.ErrnoError(44);return n}return Z.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&Z.normalize(r)!==Z.normalize(en.getPath(e.node)))return -54;throw e}h[t>>2]=n.dev,h[t+8>>2]=n.ino,h[t+12>>2]=n.mode,p[t+16>>2]=n.nlink,h[t+20>>2]=n.uid,h[t+24>>2]=n.gid,h[t+28>>2]=n.rdev,g=[n.size>>>0,+Math.abs(w=n.size)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+40>>2]=g[0],h[t+44>>2]=g[1],h[t+48>>2]=4096,h[t+52>>2]=n.blocks;var o=n.atime.getTime(),a=n.mtime.getTime(),i=n.ctime.getTime();return g=[Math.floor(o/1e3)>>>0,+Math.abs(w=Math.floor(o/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+56>>2]=g[0],h[t+60>>2]=g[1],p[t+64>>2]=o%1e3*1e3,g=[Math.floor(a/1e3)>>>0,+Math.abs(w=Math.floor(a/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+72>>2]=g[0],h[t+76>>2]=g[1],p[t+80>>2]=a%1e3*1e3,g=[Math.floor(i/1e3)>>>0,+Math.abs(w=Math.floor(i/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+88>>2]=g[0],h[t+92>>2]=g[1],p[t+96>>2]=i%1e3*1e3,g=[n.ino>>>0,+Math.abs(w=n.ino)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+104>>2]=g[0],h[t+108>>2]=g[1],0},doMsync:function(e,r,t,n,o){if(!en.isFile(r.node.mode))throw new en.ErrnoError(43);if(2&n)return 0;var a=f.slice(e,e+t);en.msync(r,a,o,t,n)},varargs:void 0,get:function(){return eo.varargs+=4,h[eo.varargs-4>>2]},getStr:function(e){return function(e,r){if(!e)return"";for(var t=e+void 0,n=e;!(n>=t)&&f[n];)++n;return A.decode(f.subarray(e,n))}(e)},getStreamFromFD:function(e){var r=en.getStream(e);if(!r)throw new en.ErrnoError(8);return r}},ea={};function ei(){if(!ei.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:b||"./this.program"};for(var r in ea)void 0===ea[r]?delete e[r]:e[r]=ea[r];var t=[];for(var r in e)t.push(r+"="+e[r]);ei.strings=t}return ei.strings}function es(e,t){c=e,M||L>0||(eg(),J(O),en.quit(),er.shutdown(),I=!0),c=e,M||L>0||(r.onExit&&r.onExit(e),P=!0),k(e,new $(e))}function eu(e){if(e instanceof $||"unwind"==e)return c;k(1,e)}function el(e){try{return e()}catch(e){G(e)}}var ec={instrumentWasmImports:function(e){var r=["invoke_*","emscripten_sleep","emscripten_wget","emscripten_wget_data","emscripten_idb_load","emscripten_idb_store","emscripten_idb_delete","emscripten_idb_exists","emscripten_idb_load_blob","emscripten_idb_store_blob","SDL_Delay","emscripten_scan_registers","emscripten_lazy_load_code","emscripten_fiber_swap","__load_secondary_module","fd_sync","__wasi_fd_sync","_emval_await","_dlopen_js","__asyncjs__*"];for(var t in e)!function(t){var n=e[t];n.sig,"function"==typeof n&&(r.indexOf(t)>=0||t.startsWith("__asyncjs__"))}(t)},instrumentWasmExports:function(e){var r={};for(var t in e)!function(t){var n=e[t];"function"==typeof n?r[t]=function(){ec.exportCallStack.push(t);try{return n.apply(null,arguments)}finally{P||(ec.exportCallStack.pop()===t||G(void 0),ec.maybeStopUnwind())}}:r[t]=n}(t);return r},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:8192,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(e){var r=ec.callStackNameToId[e];return void 0===r&&(r=ec.callStackId++,ec.callStackNameToId[e]=r,ec.callStackIdToName[r]=e),r},maybeStopUnwind:function(){ec.currData&&ec.state===ec.State.Unwinding&&0===ec.exportCallStack.length&&(ec.state=ec.State.Normal,L+=1,el(eN),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:function(){return new Promise((e,r)=>{ec.asyncPromiseHandlers={resolve:e,reject:r}})},allocateData:function(){var e=eh(12+ec.StackSize);return ec.setDataHeader(e,e+12,ec.StackSize),ec.setDataRewindFunc(e),e},setDataHeader:function(e,r,t){h[e>>2]=r,h[e+4>>2]=r+t},setDataRewindFunc:function(e){var r=ec.exportCallStack[0],t=ec.getCallStackId(r);h[e+8>>2]=t},getDataRewindFunc:function(e){var t=h[e+8>>2],n=ec.callStackIdToName[t];return r.asm[n]},doRewind:function(e){var r=ec.getDataRewindFunc(e);return L-=1,r()},handleSleep:function(e){if(!P){if(ec.state===ec.State.Normal){var r=!1,t=!1;e((e=0)=>{if(!P&&(ec.handleSleepReturnValue=e,r=!0,t)){ec.state=ec.State.Rewinding,el(()=>ez(ec.currData)),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var n,o=!1;try{n=ec.doRewind(ec.currData)}catch(e){n=e,o=!0}var a=!1;if(!ec.currData){var i=ec.asyncPromiseHandlers;i&&(ec.asyncPromiseHandlers=null,(o?i.reject:i.resolve)(n),a=!0)}if(o&&!a)throw n}}),t=!0,r||(ec.state=ec.State.Unwinding,ec.currData=ec.allocateData(),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause(),el(()=>eT(ec.currData)))}else ec.state===ec.State.Rewinding?(ec.state=ec.State.Normal,el(eB),em(ec.currData),ec.currData=null,ec.sleepCallbacks.forEach(e=>(function(e){if(!I&&!P)try{e(),function(){if(!(M||L>0))try{es(c)}catch(e){eu(e)}}()}catch(e){eu(e)}})(e))):G("invalid state: "+ec.state);return ec.handleSleepReturnValue}},handleAsync:function(e){return ec.handleSleep(r=>{e().then(r)})}},ed=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=en.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n};Object.defineProperties(ed.prototype,{read:{get:function(){return(365&this.mode)==365},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return(146&this.mode)==146},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return en.isDir(this.mode)}},isDevice:{get:function(){return en.isChrdev(this.mode)}}}),en.FSNode=ed,en.staticInit();var ef={s:function(e,t){return ec.handleAsync(async()=>{r.emglken_stdin_buffers.length||await new Promise(e=>{r.emglken_stdin_ready=e});let n=r.emglken_stdin_buffers.shift(),o=Math.min(n.length,t);return o==n.length?f.set(n,e):(f.set(n.subarray(0,o),e),r.emglken_stdin_buffers.unshift(n.subarray(o))),o})},D:function(e,r,t,n){try{if(r=eo.getStr(r),r=eo.calculateAt(e,r),-8&t)return -28;var o=en.lookupPath(r,{follow:!0}).node;if(!o)return -44;var a="";if(4&t&&(a+="r"),2&t&&(a+="w"),1&t&&(a+="x"),a&&en.nodePermissions(o,a))return -2;return 0}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return-e.errno}},n:function(e,r,t){eo.varargs=t;try{var n=eo.getStreamFromFD(e);switch(r){case 0:var o=eo.get();if(o<0)return -28;return en.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=eo.get();return n.flags|=o,0;case 5:var o=eo.get();return m[o+0>>1]=2,0;case 16:case 8:default:return -28;case 9:return h[ew()>>2]=28,-1}}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return-e.errno}},C:function(e,r){try{if(0===r)return -28;var t=en.cwd(),n=C(t)+1;if(r>2]=0,0;case 21520:if(!n.tty)return -59;return -28;case 21531:var o=eo.get();return en.ioctl(n,r,o);default:return -28}}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return-e.errno}},A:function(e,r,t,n){eo.varargs=n;try{r=eo.getStr(r),r=eo.calculateAt(e,r);var o=n?eo.get():0;return en.open(r,t,o).fd}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return-e.errno}},z:function(e,r){try{return e=eo.getStr(e),eo.doStat(en.stat,e,r)}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return-e.errno}},v:function(){return!0},u:function(){throw 1/0},t:function(){G("")},k:function(){return Date.now()},r:function(e,r,t){f.copyWithin(e,r,r+t)},q:function(e){var r=f.length;if((e>>>=0)>2147483648)return!1;let t=(e,r)=>e+(r-e%r)%r;for(var n=1;n<=4;n*=2){var o=r*(1+.2/n);if(o=Math.min(o,e+100663296),function(e){var r=l.buffer;try{return l.grow(e-r.byteLength+65535>>>16),T(),1}catch(e){}}(Math.min(2147483648,t(Math.max(e,o),65536))))return!0}return!1},y:function(e,r){var t=0;return ei().forEach(function(n,o){var a=r+t;p[e+4*o>>2]=a,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);d[r>>0]=0}(n,a),t+=n.length+1}),0},x:function(e,r){var t=ei();p[e>>2]=t.length;var n=0;return t.forEach(function(e){n+=e.length+1}),p[r>>2]=n,0},i:es,m:function(e){try{var r=eo.getStreamFromFD(e);return en.close(r),0}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return e.errno}},w:function(e,r,t,n){try{var o=eo.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=en.read(e,d,i,s,n);if(u<0)return -1;if(o+=u,u>2]=a,0}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return e.errno}},p:function(e,r,t,n,o){try{var a=t+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*t:NaN;if(isNaN(a))return 61;var i=eo.getStreamFromFD(e);return en.llseek(i,a,n),g=[i.position>>>0,(w=i.position,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[o>>2]=g[0],h[o+4>>2]=g[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return e.errno}},l:function(e,r,t,n){try{var o=eo.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=en.write(e,d,i,s,n);if(u<0)return -1;o+=u,void 0!==n&&(n+=u)}return o}(o,r,t);return p[n>>2]=a,0}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return e.errno}},c:function(e){var r=ey();try{return eM(e)}catch(e){if(eE(r),e!==e+0)throw e;e_(1,0)}},g:function(e,r){var t=ey();try{return eD(e,r)}catch(e){if(eE(t),e!==e+0)throw e;e_(1,0)}},f:function(e,r,t,n){var o=ey();try{return eS(e,r,t,n)}catch(e){if(eE(o),e!==e+0)throw e;e_(1,0)}},d:function(e,r,t,n,o){var a=ey();try{return eA(e,r,t,n,o)}catch(e){if(eE(a),e!==e+0)throw e;e_(1,0)}},o:function(e,r){var t=ey();try{return eC(e,r)}catch(e){if(eE(t),e!==e+0)throw e;e_(1,0)}},j:function(e){var r=ey();try{eP(e)}catch(e){if(eE(r),e!==e+0)throw e;e_(1,0)}},b:function(e,r){var t=ey();try{ek(e,r)}catch(e){if(eE(t),e!==e+0)throw e;e_(1,0)}},a:function(e,r,t){var n=ey();try{eF(e,r,t)}catch(e){if(eE(n),e!==e+0)throw e;e_(1,0)}},h:function(e,r,t,n){var o=ey();try{ex(e,r,t,n)}catch(e){if(eE(o),e!==e+0)throw e;e_(1,0)}},e:function(e,r,t,n,o){var a=ey();try{eR(e,r,t,n,o)}catch(e){if(eE(a),e!==e+0)throw e;e_(1,0)}}};!function(){var e,t,n,a={a:ef};function i(e,t){var n,o=e.exports;return o=ec.instrumentWasmExports(o),r.asm=o,l=r.asm.E,T(),r.asm.N,n=r.asm.F,z.unshift(n),Y("wasm-instantiate"),o}if(q("wasm-instantiate"),r.instantiateWasm)try{return r.instantiateWasm(a,i)}catch(e){F("Module.instantiateWasm callback failed with error: "+e),o(e)}(e=u,t=v,n=function(e){i(e.instance)},e||"function"!=typeof WebAssembly.instantiateStreaming||V(t)||"function"!=typeof fetch?K(t,a,n):fetch(t,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,a).then(n,function(e){return F("wasm streaming compile failed: "+e),F("falling back to ArrayBuffer instantiation"),K(t,a,n)})})).catch(o)}();var em=function(){return(em=r.asm.G).apply(null,arguments)},eh=function(){return(eh=r.asm.H).apply(null,arguments)},ep=r._main=function(){return(ep=r._main=r.asm.I).apply(null,arguments)},ev=(r._gidispatch_get_game_id=function(){return(r._gidispatch_get_game_id=r.asm.J).apply(null,arguments)},r._fflush=function(){return(ev=r._fflush=r.asm.K).apply(null,arguments)}),ew=function(){return(ew=r.asm.L).apply(null,arguments)},eg=function(){return(eg=r.asm.M).apply(null,arguments)},e_=function(){return(e_=r.asm.O).apply(null,arguments)},ey=function(){return(ey=r.asm.P).apply(null,arguments)},eE=function(){return(eE=r.asm.Q).apply(null,arguments)},eb=function(){return(eb=r.asm.R).apply(null,arguments)},ek=r.dynCall_vi=function(){return(ek=r.dynCall_vi=r.asm.S).apply(null,arguments)},eS=r.dynCall_iiii=function(){return(eS=r.dynCall_iiii=r.asm.T).apply(null,arguments)},eD=r.dynCall_ii=function(){return(eD=r.dynCall_ii=r.asm.U).apply(null,arguments)},eF=r.dynCall_vii=function(){return(eF=r.dynCall_vii=r.asm.V).apply(null,arguments)},eM=r.dynCall_i=function(){return(eM=r.dynCall_i=r.asm.W).apply(null,arguments)},eP=r.dynCall_v=function(){return(eP=r.dynCall_v=r.asm.X).apply(null,arguments)},eA=r.dynCall_iiiii=function(){return(eA=r.dynCall_iiiii=r.asm.Y).apply(null,arguments)},ex=r.dynCall_viii=function(){return(ex=r.dynCall_viii=r.asm.Z).apply(null,arguments)},eR=r.dynCall_viiii=function(){return(eR=r.dynCall_viiii=r.asm._).apply(null,arguments)},eC=r.dynCall_ji=function(){return(eC=r.dynCall_ji=r.asm.$).apply(null,arguments)},eT=function(){return(eT=r.asm.aa).apply(null,arguments)},eN=function(){return(eN=r.asm.ba).apply(null,arguments)},ez=function(){return(ez=r.asm.ca).apply(null,arguments)},eB=function(){return(eB=r.asm.da).apply(null,arguments)};function eO(e=E){!(U>0)&&(!function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;){var e;e=r.preRun.shift(),N.unshift(e)}J(N)}(),U>0||(r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),t()},1)):t()));function t(){!_&&(_=!0,r.calledRun=!0,P||(r.noFSInit||en.init.initialized||en.init(),en.ignorePermissions=!1,er.init(),J(z),J(B),n(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),ej&&function(e=[]){var r=ep;e.unshift(b);var t=e.length,n=eb((t+1)*4),o=n>>2;e.forEach(e=>{var r,t;h[o++]=(t=eb(r=C(e)+1),R(e,d,t,r),t)}),h[o]=0;try{var a=r(t,n);es(a,!0)}catch(e){return eu(e)}}(e),function(){if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;){var e;e=r.postRun.shift(),j.unshift(e)}J(j)}()))}}if(r.___start_em_js=107504,r.___stop_em_js=110189,r.AsciiToString=function(e){for(var r="";;){var t=f[e++>>0];if(!t)return r;r+=String.fromCharCode(t)}},r.FS=en,W=function e(){_||eO(),_||(W=e)},r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();var ej=!0;return r.noInitialRun&&(ej=!1),eO(),r.ready}})();const rD=[{id:"bocfel",extensions:/z([3458]|blorb)$/,engine:class extends rh{default_options(){return{vmcore:rv}}}},{id:"git",extensions:/(gblorb|ulx)$/,engine:class extends rh{default_options(){return{vmcore:rg}}}},{id:"hugo",extensions:/hex$/,engine:class extends rh{default_options(){return{vmcore:ry}}}},{id:"scare",extensions:/taf$/,engine:class extends rh{default_options(){return{vmcore:rS}}}},{id:"tads",extensions:/(gam|t3)$/,engine:class extends rh{default_options(){return{vmcore:rb}}}}],rF=e=>{let r=rD.find(r=>r.extensions.test(e));if(r)return{...r,wasmBinaryName:`emglken/${r.id}-core.wasm`};throw Error("Unsupported file type")};var rM=class{constructor(e,r){this.streaming=!1,this.handlers=e,this.loggers=r}file_ref_exists({usage:e}){return"save"===e}file_remove_ref(){return!0}file_construct_ref(e,r){return{filename:e,usage:r||""}}file_read(e,r){return this.handlers.onFileRead(e,r)}file_write(e,r,t){0!==r.length&&this.handlers.onFileWrite(e,r,t)}open(e,r,t,n){this.handlers.onFileNameRequest(e,r,t,n)}log(e){this.loggers.log(e)}warning(e){this.loggers.warn(e)}error(e){this.loggers.error(e)}},rP=class{constructor({width:e,height:r}){this.width=e,this.height=r,this.current_metrics=null,this.disabled=!1,this.generation=0,this.interface=null,this.version="0.5.1"}measure_window(){return{width:this.width,height:this.height,buffercharheight:1,buffercharwidth:1,buffermarginx:0,buffermarginy:0,graphicsmarginx:0,graphicsmarginy:0,gridcharheight:1,gridcharwidth:1,gridmarginx:0,gridmarginy:0,inspacingx:0,inspacingy:0,outspacingx:0,outspacingy:0}}getinterface(){return this.interface}init(e){e||this.error("No game interface object has been provided."),e.accept||this.error("The game interface object must have an accept() function."),this.interface=e,this.current_metrics=this.measure_window(),this.send_response("init",null,this.current_metrics)}update(e){if("error"===e.type&&this.error(e.message),"pass"!==e.type){if("update"!==e.type&&"exit"!==e.type){this.log(`Ignoring unknown message type: ${e.type}`);return}if(e.gen===this.generation){this.log(`Ignoring repeated generation number: ${e.gen}`);return}if(e.genthis.send_response("specialresponse",null,"fileref_prompt",e)):this.error("Request for unknown special input type: "+e.type)}update_content(e){this.handlers.onUpdateContent(e)}exit(){this.handlers.onExit(),super.exit()}cancel_inputs(e){this.handlers.onUpdateInputs(e)}disable(e){this.handlers.onDisable(e)}update_windows(e){this.handlers.onUpdateWindows(e)}log(e){this.loggers.log(e)}warning(e){this.loggers.warn(e)}error(e){this.loggers.error(e)}};const rx=()=>void 0,rR=["onInit","onUpdateWindows","onUpdateInputs","onUpdateContent","onDisable","onFileNameRequest","onFileRead","onFileWrite","onExit"].reduce((e,r)=>(e[r]=rx,e),{}),rC={log:console.log,warning:console.warn,error:console.error},rT={width:80,height:25};var rN=(e,{loggers:r,size:t}={})=>{let n=Object.assign({},rR,e),o=Object.assign({},rC,r),a=Object.assign({},rT,t),i=new rM(n,o),s=new rA(n,o,a),u=s.sendFn.bind(s);return{Dialog:i,GlkOte:s,send:u}},rz={};function rB({style:e,text:r}){let t=eo("span",{className:[rz.message,rz[e]].join(" "),children:r});return({grid:r?.length>0?eo("div",{children:r}):eo("br",{}),input:eo("span",{className:[rz.message,rz.input].join(" "),children:["> ",r]}),subheader:eo("strong",{className:[rz.message,rz.subheader].join(" "),children:r}),emphasized:eo("em",{className:[rz.message,rz.emphasized].join(" "),children:r}),scrollTarget:eo("div",{className:[rz.scrollTarget,e].join(" ")}),endOfLine:eo("br",{})})[e]||t}e(rz,"emphasized",function(){return i},function(e){return i=e}),e(rz,"input",function(){return s},function(e){return s=e}),e(rz,"message",function(){return u},function(e){return u=e}),e(rz,"scrollTarget",function(){return l},function(e){return l=e}),e(rz,"subheader",function(){return c},function(e){return c=e}),i="hBGgUq_emphasized",s="hBGgUq_input",u="hBGgUq_message",l="hBGgUq_scrollTarget",c="hBGgUq_subheader",d="PwGQsW_buffer",f="PwGQsW_gridBuffer";const rO={style:"endOfLine"},rj={style:"scrollTarget"},rI=e=>e.height<5,rL=e=>e.length<1?e:">"===e.slice(-1)[0].text?e.slice(0,e.length-1):e,rU=(e,r)=>{let t=e.find(({id:e})=>e===r.id);if(!t)return{clear:!1,incoming:[rj]};let{text:n}=t,o=n.map(({content:e})=>e?[...rL(e),rO]:[rO]).reduce((e,r)=>e.concat(r),[rj]);return{incoming:o,clear:!!rI(r)||t.clear}};function rH({inbox:e,currentWindow:r}){let[t,n]=eg([]),o=eE(null);return e_(()=>{let{incoming:t,clear:a}=rU(e,r);n(e=>a?t:e.concat(t)),setTimeout(()=>{let e=o.current.querySelectorAll(`.${rj.style}`),r=e[e.length-1];r?r.scrollIntoView():o.current.scrollTo({top:o.current.scrollHeight,behavior:"smooth"})},0)},[r,e]),eo("section",{tabindex:"0",ref:o,className:[d,rI(r)?f:"PwGQsW_textBuffer"].join(" "),children:t.map(rB)})}function rW({inbox:e,currentWindow:r}){let[t,n]=eg([]),[o,a]=eg([]);return e_(()=>{let o=e.find(({id:e})=>e===r.id),i=o?.lines??[],s=Array(r.gridheight).fill(null).map((e,r)=>r).map(e=>{let r=(e,r)=>e.find(({line:e})=>e===r);return r(i,e)||r(t,e)});((e,r)=>{let t=JSON.stringify;return t(e)!==t(r)})(s,t)&&n(s);let u=s.map(e=>e.content).flat().map(e=>({...e,text:e.text.trim()})),l=u.map(({text:e})=>e.length).every(e=>0===e),c=({style:e})=>["alert","normal"].includes(e)?"grid":e||"grid",d=u.map(e=>({style:c(e),text:e.text.replace(" "," / ")}));a(l?[]:d)},[e,r,t]),eo("section",{className:[d,f].join(" "),children:o.map(rB)})}function rq({onClick:e}){return eo("button",{"aria-label":"Menu",className:"gUkI1a_menuButton",onClick:e,children:eo("svg",{class:"gUkI1a_menuIcon",viewBox:"0 0 28 32",xmlns:"http://www.w3.org/2000/svg",children:[eo("rect",{x:"12",y:"4",width:"4",height:"4"}),eo("rect",{x:"12",y:"14",width:"4",height:"4"}),eo("rect",{x:"12",y:"24",width:"4",height:"4"})]})})}const rY={KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_END:35,KEY_HOME:36,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40},rG={[rY.KEY_BACKSPACE]:"delete",[rY.KEY_TAB]:"tab",[rY.KEY_RETURN]:"return",[rY.KEY_ESC]:"escape",[rY.KEY_PAGEUP]:"pageup",[rY.KEY_PAGEDOWN]:"pagedown",[rY.KEY_END]:"end",[rY.KEY_HOME]:"home",[rY.KEY_LEFT]:"left",[rY.KEY_UP]:"up",[rY.KEY_RIGHT]:"right",[rY.KEY_DOWN]:"down"},rV=e=>{let r=[e.altKey,e.ctrlKey,e.metaKey,e.shiftKey];return r.some(e=>!0===e)};function rX({inputType:e,windows:r,currentWindowId:t,sendMessage:n,onFullscreenRequest:o,setMenuOpen:a}){let[i,s]=eg(null),[u,l]=eg(""),[c,d]=eg(""),f=eE(null);e_(()=>{let e=()=>{f.current&&f.current.focus()};return l(""),e(),document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[e]),e_(()=>{s(r.find(({id:e})=>e===t))},[t,r]);let m=r=>{n(r,e,i),d(r),l("")},h=e=>{if(rV(e))return;e.preventDefault();let r=rG[e.keyCode]||e.key;m(r)},p=e=>setTimeout(()=>{m(e.target.value.slice(-1).toUpperCase()),l("")});return eo("section",{className:"LdLucW_inputControls",children:[eo("input",{...{char:{maxlength:"1",placeholder:"Press any key here",onKeyDown:e=>(229===e.keyCode?p:h)(e)},line:{placeholder:" > ",onKeyDown:({keyCode:e})=>{e===rY.KEY_UP&&(l(c),setTimeout(()=>{let e=c.length;f.current.setSelectionRange(e,e)},0)),e===rY.KEY_DOWN&&l("")},onKeyPress:({keyCode:e,target:{value:r}})=>{e===rY.KEY_RETURN&&m(r)}},finished:{placeholder:"The program has finished",disabled:!0}}[e],className:"LdLucW_inputBox",ref:f,value:u,autofocus:!0,autocomplete:"off",spellCheck:"false",autocapitalize:"off",autocorrect:"off",onDblClick:o,onInput:({target:{value:e}})=>l(e),type:"search"}),eo(rq,{onClick:()=>a(!0)})]})}m="zi213q_status";const rK=e=>eo("div",{className:[m].join(" "),children:[eo("h1",{children:"Error"}),e.map(e=>eo("p",{children:e},e)),eo("hr",{}),eo(eQ,{href:"/",children:"Home"}),"|",eo("a",{target:"_blank",rel:"noopener noreferrer",href:"https://github.com/He4eT/elseifplayer/issues",children:"Report bug"})]}),r$=e=>eo("div",{className:[m,"zi213q_loading"].join(" "),children:e.map(e=>eo("div",{children:e},e))});var rJ=({stage:e,details:r})=>({fail:rK,loading:r$})[e](r);const rZ={},rQ={};["ҠҿԀԟڀڿݠޟ߀ߟကဟႠႿᄀᅟᆀᆟᇠሿበቿዠዿጠጿᎠᏟᐠᙟᚠᛟកសᠠᡟᣀᣟᦀᦟ᧠᧿ᨠᨿᯀᯟᰀᰟᴀᴟ⇠⇿⋀⋟⍀⏟␀␟─❟➀➿⠀⥿⦠⦿⨠⩟⪀⪿⫠⭟ⰀⰟⲀⳟⴀⴟⵀⵟ⺠⻟㇀㇟㐀䶟䷀龿ꀀꑿ꒠꒿ꔀꗿꙀꙟꚠꛟ꜀ꝟꞀꞟꡀꡟ","ƀƟɀʟ"].forEach((e,r)=>{let t=[];e.match(/../gu).forEach(e=>{let r=e.codePointAt(0),n=e.codePointAt(1);for(let e=r;e<=n;e++)t.push(String.fromCodePoint(e))});let n=15-8*r;rZ[n]=t,t.forEach((e,r)=>{rQ[e]=[n,r]})});const r0=e=>{let r=e.length,t="",n=0,o=0;for(let a=0;a=0;e--){let a=r>>e&1;n=(n<<1)+a,15==++o&&(t+=rZ[o][n],n=0,o=0)}}if(0!==o){for(;!(o in rZ);)n=(n<<1)+1,o++;t+=rZ[o][n]}return t},r1=e=>{let r=e.length,t=new Uint8Array(Math.floor(15*r/8)),n=0,o=0,a=0;for(let i=0;i=0;e--){let r=l>>e&1;o=(o<<1)+r,8==++a&&(t[n]=o,n++,o=0,a=0)}}if(o!==(1<({onInit:()=>{e({stage:"ready"})},onUpdateWindows:e=>{r(e)},onUpdateInputs:e=>{if(0===e.length)return null;let{type:r,id:o}=e[0];t(o),n(r)},onUpdateContent:e=>{o(e)},onDisable:()=>{n(null)},onFileNameRequest:(e,r,t,n)=>{n({usage:r,filename:prompt("Enter the filename")})},onFileRead:({filename:e})=>{let r=localStorage.getItem(`fake-fs/${e}`);return r1(r)},onFileWrite:({filename:e},r)=>{localStorage.setItem(`fake-fs/${e}`,r0(r))},onExit:()=>{n("finished")}}),r4=e=>r=>{"ExitStatus"===r.reason.name||"Program terminated with exit(0)"===r.reason.message?e():console.error("Unhandled rejection (promise: ",r.promise,", reason: ",r.reason,")."),r.preventDefault()},r6={stage:"loading",details:["Preparing"]},r3=({engine:e,wasmBinary:r,storyfile:t,handlers:n})=>{let{Dialog:o,GlkOte:a,send:i}=rN(n),s=new e;return s.init(t,{Dialog:o,GlkOte:a,Glk:{},wasmBinary:r,arguments:["storyfile"]}),s.start(),{send:i,instance:s}};function r9({vmParts:{storyfile:e,engine:r,wasmBinary:t},onFullscreenRequest:n,setMenuOpen:o,singleWindow:a}){let[i,s]=eg(r6),[u,l]=eg([]),[c,d]=eg(null),[f,m]=eg(null),[h,p]=eg([]),[v,w]=eg(null),[g,_]=eg(null);return e_(()=>{let n=r2({setStatus:s,setWindows:l,setCurrentWindowId:d,setInputType:m,setInbox:p});w(r3({engine:r,wasmBinary:t,storyfile:e,handlers:n}));let o=r4(n.onExit);return window.addEventListener("unhandledrejection",o),()=>{w(null),window.removeEventListener("unhandledrejection",o)}},[e,r,t]),e_(()=>(_(()=>v?v.send:null),()=>_(null)),[v]),"ready"!==i.stage?eo(rJ,{...i}):eo("section",{className:"PwGQsW_elseifplayer",children:[eo("section",{className:"PwGQsW_output",children:u.sort((e,r)=>e.top-r.top).filter(a?({id:e})=>e===c:()=>!0).map(e=>{let r={inbox:h,currentWindow:e};return({buffer:eo(rH,{...r}),grid:eo(rW,{...r})})[e.type]})}),eo(rX,{inputType:f,windows:u,currentWindowId:c,sendMessage:g,onFullscreenRequest:n,setMenuOpen:o})]})}const r8={stage:"loading",details:["Loading"]},r5=({url:e,setStatus:r,setParts:t})=>{let n=(e,t)=>n=>(r({stage:e,details:[t]}),n),o=e=>fetch(e).then(e=>e.arrayBuffer());return Promise.resolve(e).then(n("loading","Downloading file")).then(e=>e.startsWith("blob:")?e.replace(/#(.*)$/g,""):e).then(fetch).then(e=>{if(e.ok)return e;throw Error(e.statusText)}).then(n("loading","Processing file")).then(e=>e.arrayBuffer()).then(e=>new Uint8Array(e)).then(n("loading","Downloading engine")).then(r=>{let t=rF(e);return[r,t.engine,t.wasmBinaryName]}).then(([e,r,t])=>Promise.all([e,r,o(t)])).then(([e,r,n])=>t({storyfile:e,engine:r,wasmBinary:n})).then(n("loading","Running")).catch(t=>{console.error(t),r({stage:"fail",details:[t.message,e]})})};function r7({url:e,singleWindow:r,onFullscreenRequest:t,setMenuOpen:n}){let[o,a]=eg(r8),[i,s]=eg(null);return e_(()=>(a(r8),s(null),r5({url:e,setStatus:a,setParts:s}),()=>s(null)),[e]),i?eo(r9,{vmParts:i,onFullscreenRequest:t,setMenuOpen:n,singleWindow:r}):eo(rJ,{...o})}function te({themeEngine:e,onFullscreenRequest:r,menuOpen:t,setMenuOpen:n}){let o=eE(null);return e_(()=>{let e=o.current.open;t&&!e&&o.current.showModal(),!t&&e&&o.current.close()},[t]),e_(()=>{let e=o.current,r=()=>{n(!1)};return e.addEventListener("close",r),()=>e.removeEventListener("close",r)},[o,n]),eo("dialog",{ref:o,className:"J9zJZG_menu",children:eo("section",{children:[eo("div",{children:eo("button",{tabIndex:0,onClick:()=>o.current.close(),children:"Close this menu"})}),eo("div",{className:"J9zJZG_appearance",children:[eo("button",{onClick:()=>{o.current.close(),r()},children:"Full screen"}),eo("button",{onClick:()=>e.setRandomTheme(),children:"Set a random theme"}),eo("label",{children:["Current theme:",eo(ro,{themeEngine:e})]})]}),eo("div",{className:"J9zJZG_navigation",children:eo(eQ,{href:"/",tabIndex:0,children:"ElseIfPlayer"})})]})})}const tr=e=>decodeURIComponent(e);function tt({theme:e,themeEngine:r,encodedUrl:t,singleWindow:n}){e_(()=>{r.setTheme(e)},[e,r]);let[o,a]=eg(tr(t));e_(()=>{a(tr(t))},[t]);let[i,s]=eg(!1),u=()=>{document.documentElement.requestFullscreen()};return eo("main",{children:[eo(te,{themeEngine:r,onFullscreenRequest:u,menuOpen:i,setMenuOpen:s}),eo(r7,{url:o,onFullscreenRequest:u,setMenuOpen:s,singleWindow:n})]})}function tn(){return eo("main",{children:eo(rJ,{stage:"fail",details:["404","Page Not Found"]})})}var to={};e(to,"app",function(){return h},function(e){return h=e}),e(to,"focus",function(){return p},function(e){return p=e}),e(to,"games",function(){return v},function(e){return v=e}),e(to,"home",function(){return w},function(e){return w=e}),e(to,"play",function(){return g},function(e){return g=e}),e(to,"themes",function(){return _},function(e){return _=e}),h="X8uEDW_app",p="X8uEDW_focus",v="X8uEDW_games",w="X8uEDW_home",g="X8uEDW_play",_="X8uEDW_themes",function(e,r,t){var n,o,a;D.__&&D.__(e,r),o=(n="function"==typeof t)?null:t&&t.__k||r.__k,a=[],Z(r,e=(!n&&t||r).__k=I(U,null,[e]),o||T,T,void 0!==r.ownerSVGElement,!n&&t?[t]:o?null:r.firstChild?S.call(r.childNodes):null,a,!n&&t?t:o?o.__e:r.firstChild,n),Q(a,e)}(eo(function(){let e=rr(),[r]=e3(),t=(e,r)=>function(t){return eo(tt,{themeEngine:e,singleWindow:r,...t})};return eo(eJ,{hook:e3,children:eo("div",{className:[to.app,to[e6(r)],e.currentTheme].join(" "),children:eo(e1,{children:[eo(eZ,{path:"/",children:eo(ra,{themeEngine:e})}),eo(eZ,{path:"/games/",children:eo(rl,{})}),eo(eZ,{path:"/themes/",children:eo(rd,{themeEngine:e})}),eo(eZ,{path:"/play/:encodedUrl",children:t(e,!1)}),eo(eZ,{path:"/play/:encodedUrl/:theme",children:t(e,!1)}),eo(eZ,{path:"/focus/:encodedUrl",children:t(e,!0)}),eo(eZ,{path:"/focus/:encodedUrl/:theme",children:t(e,!0)}),eo(eZ,{children:eo(tn,{})})]})})})},{}),document.getElementById("root")); +//# sourceMappingURL=index.4a5edb74.js.map diff --git a/docs/index.4a5edb74.js.map b/docs/index.4a5edb74.js.map new file mode 100644 index 0000000..d4d5713 --- /dev/null +++ b/docs/index.4a5edb74.js.map @@ -0,0 +1 @@ +{"mappings":"A,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,IoCCA,EACA,EACA,EACA,EACA,E4BLA,EACA,EACA,EACA,EACA,ECJA,EAEA,EOCA,EMHA,EACA,EACA,EACA,EACA,EACA,E,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,GzEuBa+I,IAAAA,ECjBPsQ,ECRF2pC,EA6FSI,EC4ETC,EAWAC,EAEEC,EA0BAC,ECjNKn/C,ECFEo/C,EAAY,CAAlB,EACMC,EAAY,EAAA,CACZC,EACZ,oELDY9/C,EAAUD,MAAMC,OA0BhBkF,CAjBN,SAAS6W,EAAOY,CAAAA,CAAKxb,CAAAA,EAE3B,IAAK,IAAIX,KAAKW,EAAOwb,CAAAA,CAAInc,EAAAA,CAAKW,CAAAA,CAAMX,EAAAA,CACpC,OAA6Bmc,CAC7B,CAAA,SAQeojC,EAAWpoC,CAAAA,EAC1B,IAAItX,EAAasX,EAAKtX,UAAtB,AACIA,CAAAA,GAAYA,EAAWC,WAAAA,CAAYqX,EACvC,CEbM,SAAS9P,EAAc3G,CAAAA,CAAMC,CAAAA,CAAOJ,CAAAA,EAC1C,IACCK,EACAC,EACAb,EAHG8+C,EAAkB,CAAA,EAItB,IAAK9+C,KAAKW,EACA,OAALX,EAAYY,EAAMD,CAAAA,CAAMX,EAAAA,CACd,OAALA,EAAYa,EAAMF,CAAAA,CAAMX,EAAAA,CAC5B8+C,CAAAA,CAAgB9+C,EAAAA,CAAKW,CAAAA,CAAMX,EAAAA,CAUjC,GAPIK,UAAUC,MAAAA,CAAS,GACtBw+C,CAAAA,EAAgBv+C,QAAAA,CACfF,UAAUC,MAAAA,CAAS,EAAIoE,EAAMrG,IAAAA,CAAKgC,UAAW,GAAKE,CAAAA,EAKjC,YAAA,OAARG,GAA2C,MAArBA,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OAAO,gBAAA,CAAiB,aAAc,GAC/B,IAAM,OAAO,mBAAA,CAAoB,aAAc,EACxD,EAAG,CAAC,EAAiB,EAAmB,EAExC,IAAM,GF0SoBA,EE1SG,AAAC,IAC5B,OAAO,QAAA,CAAS,IAAA,CAAO,EAAG,OAAA,CAAQ,KAAM,GAC1C,EFySDw4C,GAAc,EACPiC,GAAQ,WAAA,OAAMz6C,CAAN,EE1SX,EAAE,GAEL,MAAO,CAAC,EAAiB,EAAS,AACpC,EEzCa,GAAS,CACpB,QACA,MACA,OAEA,kBACA,iBAEA,MACA,SACA,QACA,QACA,OAGA,QACA,kBACA,QACA,SACA,SACA,SACA,OACA,SACA,QACA,QACA,SACA,QACA,eACA,iBACA,kBACA,YACA,UACA,SACA,UACA,OACA,UACA,SACA,aACA,eACA,aACA,iBACA,QACA,SACA,aACA,aACA,kBACA,YACA,UACA,OACA,eACA,MACA,QACA,OACA,MACA,SACA,OACA,UACA,WACA,WACA,YACA,YACA,WACA,UACA,OACA,YACA,YACA,QACA,eACA,aACA,eACA,cACA,WACA,QACA,aACA,eACA,gBACA,aACA,QACA,QACA,QACA,UACA,QACA,eACA,gBACA,SACA,YACA,WACA,QACA,QACA,WACA,UACA,aACA,OACA,OACA,aACA,QACA,gBACA,WACA,SACA,UACA,YACA,aACA,UACA,QACA,eACA,WACA,YACA,OACA,OACA,eACA,qBACA,aACA,UACA,YACA,WACA,aACA,cACA,QACA,WACA,SACA,eACA,OACA,aACA,QACA,WACA,QACA,SACA,UACA,YACA,QACA,gBACA,SACA,gBACA,UACA,gBACA,QACA,YACA,aACA,cACA,cACA,eACA,QACA,YACA,YACA,iBACA,iBACA,OACA,eACA,SACA,cACA,aACA,mBACA,SACA,QACA,WACA,OACA,gBACA,UACA,UACA,aACA,UACA,YACA,SACA,OACA,WACA,QACA,eACA,WACA,WACA,SACA,cACA,YACA,cACA,MACA,SACA,aACA,QACA,aACD,CD7KK,GAAe,qBACf,GAAgB,AAAA,EAAM,CAAC,EAAE,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","sources":["","src/index.js","node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","node_modules/preact/jsx-runtime/src/index.js","node_modules/preact/dist/preact.module.js","node_modules/preact/src/util.js","node_modules/preact/src/options.js","node_modules/preact/src/create-element.js","node_modules/preact/src/component.js","node_modules/preact/src/create-context.js","node_modules/preact/src/constants.js","node_modules/preact/src/diff/children.js","node_modules/preact/src/diff/props.js","node_modules/preact/src/diff/index.js","node_modules/preact/src/render.js","node_modules/preact/src/clone-element.js","node_modules/preact/src/diff/catch-error.js","src/App.jsx","node_modules/wouter-preact/index.js","node_modules/wouter-preact/use-location.js","node_modules/wouter-preact/react-deps.js","node_modules/preact/hooks/dist/hooks.module.js","node_modules/preact/hooks/src/index.js","node_modules/wouter-preact/matcher.js","src/routing.js","src/themes/themes.js","src/themes/themeList.js","src/views/HomeView/HomeView.jsx","src/components/FileSelector/LocalFileSelector.jsx","src/components/FileSelector/TargetURLSelector.jsx","src/components/ThemeSelector/ThemeSelector.jsx","src/views/GamesView/GamesView.jsx","src/components/GameEntry/GameEntry.jsx","src/views/GamesView/top2019.js","src/views/GamesView/GamesView.module.scss","src/views/ThemesView/ThemesView.jsx","src/views/ThemesView/ThemesView.module.scss","src/views/PlayerView/PlayerView.jsx","src/components/Player/UrlPlayer.jsx","src/components/Player/common/engines.js","node_modules/emglken/src/bocfel.js","node_modules/emglken/src/vm.js","node_modules/emglken/src/emglkenfs.js","node_modules/emglken/build/bocfel-core.js","node_modules/@parcel/runtime-js/lib/runtime-021bc21ce2c42bf6.js","node_modules/emglken/src/git.js","node_modules/emglken/build/git-core.js","node_modules/@parcel/runtime-js/lib/runtime-b29adeb2d99f1fac.js","node_modules/emglken/src/hugo.js","node_modules/emglken/build/hugo-core.js","node_modules/@parcel/runtime-js/lib/runtime-70b35b77ed46ec9a.js","node_modules/emglken/src/tads.js","node_modules/emglken/build/tads-core.js","node_modules/@parcel/runtime-js/lib/runtime-331ab7b997319b9c.js","node_modules/emglken/src/scare.js","node_modules/emglken/build/scare-core.js","node_modules/@parcel/runtime-js/lib/runtime-8b66e95473ad36b3.js","src/components/Player/Player.jsx","node_modules/cheap-glkote/src/index.js","node_modules/cheap-glkote/src/fakeDialog.js","node_modules/cheap-glkote/src/cheapGlkOte.js","node_modules/cheap-glkote/src/glkOte/glkote-term.js","src/components/Player/OutputBox/TextBuffer/TextBuffer.jsx","src/components/Player/OutputBox/TextMessage/TextMessage.jsx","src/components/Player/OutputBox/TextMessage/TextMessage.module.scss","src/components/Player/Player.module.scss","src/components/Player/OutputBox/GridBuffer/GridBuffer.jsx","src/components/Player/InputBox/InputBox.jsx","src/components/Player/InputBox/MenuButton/MenuButton.jsx","src/components/Player/InputBox/MenuButton/MenuButton.module.scss","src/components/Player/InputBox/InputBox.module.scss","src/components/Player/Status/Status.jsx","src/components/Player/Status/Status.module.scss","src/components/Player/common/playerHandlers.js","node_modules/base32768/src/index.js","src/components/Player/MenuOverlay/MenuOverlay.jsx","src/components/Player/MenuOverlay/MenuOverlay.module.scss","src/views/NotFoundView/NotFoundView.jsx","src/style/App.module.scss"],"sourcesContent":["function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $parcel$global =\ntypeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire847f\"];\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire847f\"] = parcelRequire;\n}\nvar $adfd32792a864deb$var$n, $adfd32792a864deb$export$41c562ebe57d11e2, $adfd32792a864deb$var$u, $adfd32792a864deb$export$a8257692ac88316c, $adfd32792a864deb$var$t, $adfd32792a864deb$var$o, $adfd32792a864deb$var$r, $adfd32792a864deb$var$f, $adfd32792a864deb$var$e, $adfd32792a864deb$var$c = {}, $adfd32792a864deb$var$s = [], $adfd32792a864deb$var$a = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i, $adfd32792a864deb$var$v = Array.isArray;\nfunction $adfd32792a864deb$var$h(n, l) {\n for(var u in l)n[u] = l[u];\n return n;\n}\nfunction $adfd32792a864deb$var$p(n) {\n var l = n.parentNode;\n l && l.removeChild(n);\n}\nfunction $adfd32792a864deb$export$c8a8987d4410bf2d(l, u, i) {\n var t, o, r, f = {};\n for(r in u)\"key\" == r ? t = u[r] : \"ref\" == r ? o = u[r] : f[r] = u[r];\n if (arguments.length > 2 && (f.children = arguments.length > 3 ? $adfd32792a864deb$var$n.call(arguments, 2) : i), \"function\" == typeof l && null != l.defaultProps) for(r in l.defaultProps)void 0 === f[r] && (f[r] = l.defaultProps[r]);\n return $adfd32792a864deb$var$d(l, f, t, o, null);\n}\nfunction $adfd32792a864deb$var$d(n, i, t, o, r) {\n var f = {\n type: n,\n props: i,\n key: t,\n ref: o,\n __k: null,\n __: null,\n __b: 0,\n __e: null,\n __d: void 0,\n __c: null,\n __h: null,\n constructor: void 0,\n __v: null == r ? ++$adfd32792a864deb$var$u : r\n };\n return null == r && null != $adfd32792a864deb$export$41c562ebe57d11e2.vnode && $adfd32792a864deb$export$41c562ebe57d11e2.vnode(f), f;\n}\nfunction $adfd32792a864deb$export$7d1e3a5e95ceca43() {\n return {\n current: null\n };\n}\nfunction $adfd32792a864deb$export$ffb0004e005737fa(n) {\n return n.children;\n}\nfunction $adfd32792a864deb$export$16fa2f45be04daa8(n, l) {\n this.props = n, this.context = l;\n}\nfunction $adfd32792a864deb$var$g(n, l) {\n if (null == l) return n.__ ? $adfd32792a864deb$var$g(n.__, n.__.__k.indexOf(n) + 1) : null;\n for(var u; l < n.__k.length; l++)if (null != (u = n.__k[l]) && null != u.__e) return u.__e;\n return \"function\" == typeof n.type ? $adfd32792a864deb$var$g(n) : null;\n}\nfunction $adfd32792a864deb$var$m(n) {\n var l, u;\n if (null != (n = n.__) && null != n.__c) {\n for(n.__e = n.__c.base = null, l = 0; l < n.__k.length; l++)if (null != (u = n.__k[l]) && null != u.__e) {\n n.__e = n.__c.base = u.__e;\n break;\n }\n return $adfd32792a864deb$var$m(n);\n }\n}\nfunction $adfd32792a864deb$var$w(n) {\n (!n.__d && (n.__d = !0) && $adfd32792a864deb$var$t.push(n) && !$adfd32792a864deb$var$x.__r++ || $adfd32792a864deb$var$o !== $adfd32792a864deb$export$41c562ebe57d11e2.debounceRendering) && (($adfd32792a864deb$var$o = $adfd32792a864deb$export$41c562ebe57d11e2.debounceRendering) || $adfd32792a864deb$var$r)($adfd32792a864deb$var$x);\n}\nfunction $adfd32792a864deb$var$x() {\n var n, l, u, i, o, r, e, c;\n for($adfd32792a864deb$var$t.sort($adfd32792a864deb$var$f); n = $adfd32792a864deb$var$t.shift();)n.__d && (l = $adfd32792a864deb$var$t.length, i = void 0, o = void 0, e = (r = (u = n).__v).__e, (c = u.__P) && (i = [], (o = $adfd32792a864deb$var$h({}, r)).__v = r.__v + 1, $adfd32792a864deb$var$L(c, r, o, u.__n, void 0 !== c.ownerSVGElement, null != r.__h ? [\n e\n ] : null, i, null == e ? $adfd32792a864deb$var$g(r) : e, r.__h), $adfd32792a864deb$var$M(i, r), r.__e != e && $adfd32792a864deb$var$m(r)), $adfd32792a864deb$var$t.length > l && $adfd32792a864deb$var$t.sort($adfd32792a864deb$var$f));\n $adfd32792a864deb$var$x.__r = 0;\n}\nfunction $adfd32792a864deb$var$P(n, l, u, i, t, o, r, f, e, a) {\n var h, p, y, _, b, m, w, x = i && i.__k || $adfd32792a864deb$var$s, P = x.length;\n for(u.__k = [], h = 0; h < l.length; h++)if (null != (_ = u.__k[h] = null == (_ = l[h]) || \"boolean\" == typeof _ || \"function\" == typeof _ ? null : \"string\" == typeof _ || \"number\" == typeof _ || \"bigint\" == typeof _ ? $adfd32792a864deb$var$d(null, _, null, null, _) : $adfd32792a864deb$var$v(_) ? $adfd32792a864deb$var$d($adfd32792a864deb$export$ffb0004e005737fa, {\n children: _\n }, null, null, null) : _.__b > 0 ? $adfd32792a864deb$var$d(_.type, _.props, _.key, _.ref ? _.ref : null, _.__v) : _)) {\n if (_.__ = u, _.__b = u.__b + 1, null === (y = x[h]) || y && _.key == y.key && _.type === y.type) x[h] = void 0;\n else for(p = 0; p < P; p++){\n if ((y = x[p]) && _.key == y.key && _.type === y.type) {\n x[p] = void 0;\n break;\n }\n y = null;\n }\n $adfd32792a864deb$var$L(n, _, y = y || $adfd32792a864deb$var$c, t, o, r, f, e, a), b = _.__e, (p = _.ref) && y.ref != p && (w || (w = []), y.ref && w.push(y.ref, null, _), w.push(p, _.__c || b, _)), null != b ? (null == m && (m = b), \"function\" == typeof _.type && _.__k === y.__k ? _.__d = e = $adfd32792a864deb$var$C(_, e, n) : e = $adfd32792a864deb$var$$(n, _, y, x, b, e), \"function\" == typeof u.type && (u.__d = e)) : e && y.__e == e && e.parentNode != n && (e = $adfd32792a864deb$var$g(y));\n }\n for(u.__e = m, h = P; h--;)null != x[h] && (\"function\" == typeof u.type && null != x[h].__e && x[h].__e == u.__d && (u.__d = $adfd32792a864deb$var$A(i).nextSibling), $adfd32792a864deb$var$q(x[h], x[h]));\n if (w) for(h = 0; h < w.length; h++)$adfd32792a864deb$var$O(w[h], w[++h], w[++h]);\n}\nfunction $adfd32792a864deb$var$C(n, l, u) {\n for(var i, t = n.__k, o = 0; t && o < t.length; o++)(i = t[o]) && (i.__ = n, l = \"function\" == typeof i.type ? $adfd32792a864deb$var$C(i, l, u) : $adfd32792a864deb$var$$(u, i, i, t, i.__e, l));\n return l;\n}\nfunction $adfd32792a864deb$export$47e4c5b300681277(n, l) {\n return l = l || [], null == n || \"boolean\" == typeof n || ($adfd32792a864deb$var$v(n) ? n.some(function(n) {\n $adfd32792a864deb$export$47e4c5b300681277(n, l);\n }) : l.push(n)), l;\n}\nfunction $adfd32792a864deb$var$$(n, l, u, i, t, o) {\n var r, f, e;\n if (void 0 !== l.__d) r = l.__d, l.__d = void 0;\n else if (null == u || t != o || null == t.parentNode) n: if (null == o || o.parentNode !== n) n.appendChild(t), r = null;\n else {\n for(f = o, e = 0; (f = f.nextSibling) && e < i.length; e += 1)if (f == t) break n;\n n.insertBefore(t, o), r = o;\n }\n return void 0 !== r ? r : t.nextSibling;\n}\nfunction $adfd32792a864deb$var$A(n) {\n var l, u, i;\n if (null == n.type || \"string\" == typeof n.type) return n.__e;\n if (n.__k) {\n for(l = n.__k.length - 1; l >= 0; l--)if ((u = n.__k[l]) && (i = $adfd32792a864deb$var$A(u))) return i;\n }\n return null;\n}\nfunction $adfd32792a864deb$var$H(n, l, u, i, t) {\n var o;\n for(o in u)\"children\" === o || \"key\" === o || o in l || $adfd32792a864deb$var$T(n, o, null, u[o], i);\n for(o in l)t && \"function\" != typeof l[o] || \"children\" === o || \"key\" === o || \"value\" === o || \"checked\" === o || u[o] === l[o] || $adfd32792a864deb$var$T(n, o, l[o], u[o], i);\n}\nfunction $adfd32792a864deb$var$I(n, l, u) {\n \"-\" === l[0] ? n.setProperty(l, null == u ? \"\" : u) : n[l] = null == u ? \"\" : \"number\" != typeof u || $adfd32792a864deb$var$a.test(l) ? u : u + \"px\";\n}\nfunction $adfd32792a864deb$var$T(n, l, u, i, t) {\n var o;\n n: if (\"style\" === l) {\n if (\"string\" == typeof u) n.style.cssText = u;\n else {\n if (\"string\" == typeof i && (n.style.cssText = i = \"\"), i) for(l in i)u && l in u || $adfd32792a864deb$var$I(n.style, l, \"\");\n if (u) for(l in u)i && u[l] === i[l] || $adfd32792a864deb$var$I(n.style, l, u[l]);\n }\n } else if (\"o\" === l[0] && \"n\" === l[1]) o = l !== (l = l.replace(/Capture$/, \"\")), l = l.toLowerCase() in n ? l.toLowerCase().slice(2) : l.slice(2), n.l || (n.l = {}), n.l[l + o] = u, u ? i || n.addEventListener(l, o ? $adfd32792a864deb$var$z : $adfd32792a864deb$var$j, o) : n.removeEventListener(l, o ? $adfd32792a864deb$var$z : $adfd32792a864deb$var$j, o);\n else if (\"dangerouslySetInnerHTML\" !== l) {\n if (t) l = l.replace(/xlink(H|:h)/, \"h\").replace(/sName$/, \"s\");\n else if (\"width\" !== l && \"height\" !== l && \"href\" !== l && \"list\" !== l && \"form\" !== l && \"tabIndex\" !== l && \"download\" !== l && \"rowSpan\" !== l && \"colSpan\" !== l && l in n) try {\n n[l] = null == u ? \"\" : u;\n break n;\n } catch (n) {}\n \"function\" == typeof u || (null == u || !1 === u && \"-\" !== l[4] ? n.removeAttribute(l) : n.setAttribute(l, u));\n }\n}\nfunction $adfd32792a864deb$var$j(n) {\n return this.l[n.type + !1]($adfd32792a864deb$export$41c562ebe57d11e2.event ? $adfd32792a864deb$export$41c562ebe57d11e2.event(n) : n);\n}\nfunction $adfd32792a864deb$var$z(n) {\n return this.l[n.type + !0]($adfd32792a864deb$export$41c562ebe57d11e2.event ? $adfd32792a864deb$export$41c562ebe57d11e2.event(n) : n);\n}\nfunction $adfd32792a864deb$var$L(n, u, i, t, o, r, f, e, c) {\n var s, a, p, y, d, _, g, m, w, x, C, S, $, A, H, I = u.type;\n if (void 0 !== u.constructor) return null;\n null != i.__h && (c = i.__h, e = u.__e = i.__e, u.__h = null, r = [\n e\n ]), (s = $adfd32792a864deb$export$41c562ebe57d11e2.__b) && s(u);\n try {\n n: if (\"function\" == typeof I) {\n if (m = u.props, w = (s = I.contextType) && t[s.__c], x = s ? w ? w.props.value : s.__ : t, i.__c ? g = (a = u.__c = i.__c).__ = a.__E : (\"prototype\" in I && I.prototype.render ? u.__c = a = new I(m, x) : (u.__c = a = new $adfd32792a864deb$export$16fa2f45be04daa8(m, x), a.constructor = I, a.render = $adfd32792a864deb$var$B), w && w.sub(a), a.props = m, a.state || (a.state = {}), a.context = x, a.__n = t, p = a.__d = !0, a.__h = [], a._sb = []), null == a.__s && (a.__s = a.state), null != I.getDerivedStateFromProps && (a.__s == a.state && (a.__s = $adfd32792a864deb$var$h({}, a.__s)), $adfd32792a864deb$var$h(a.__s, I.getDerivedStateFromProps(m, a.__s))), y = a.props, d = a.state, a.__v = u, p) null == I.getDerivedStateFromProps && null != a.componentWillMount && a.componentWillMount(), null != a.componentDidMount && a.__h.push(a.componentDidMount);\n else {\n if (null == I.getDerivedStateFromProps && m !== y && null != a.componentWillReceiveProps && a.componentWillReceiveProps(m, x), !a.__e && null != a.shouldComponentUpdate && !1 === a.shouldComponentUpdate(m, a.__s, x) || u.__v === i.__v) {\n for(u.__v !== i.__v && (a.props = m, a.state = a.__s, a.__d = !1), a.__e = !1, u.__e = i.__e, u.__k = i.__k, u.__k.forEach(function(n) {\n n && (n.__ = u);\n }), C = 0; C < a._sb.length; C++)a.__h.push(a._sb[C]);\n a._sb = [], a.__h.length && f.push(a);\n break n;\n }\n null != a.componentWillUpdate && a.componentWillUpdate(m, a.__s, x), null != a.componentDidUpdate && a.__h.push(function() {\n a.componentDidUpdate(y, d, _);\n });\n }\n if (a.context = x, a.props = m, a.__P = n, S = $adfd32792a864deb$export$41c562ebe57d11e2.__r, $ = 0, \"prototype\" in I && I.prototype.render) {\n for(a.state = a.__s, a.__d = !1, S && S(u), s = a.render(a.props, a.state, a.context), A = 0; A < a._sb.length; A++)a.__h.push(a._sb[A]);\n a._sb = [];\n } else do a.__d = !1, S && S(u), s = a.render(a.props, a.state, a.context), a.state = a.__s;\n while (a.__d && ++$ < 25);\n a.state = a.__s, null != a.getChildContext && (t = $adfd32792a864deb$var$h($adfd32792a864deb$var$h({}, t), a.getChildContext())), p || null == a.getSnapshotBeforeUpdate || (_ = a.getSnapshotBeforeUpdate(y, d)), $adfd32792a864deb$var$P(n, $adfd32792a864deb$var$v(H = null != s && s.type === $adfd32792a864deb$export$ffb0004e005737fa && null == s.key ? s.props.children : s) ? H : [\n H\n ], u, i, t, o, r, f, e, c), a.base = u.__e, u.__h = null, a.__h.length && f.push(a), g && (a.__E = a.__ = null), a.__e = !1;\n } else null == r && u.__v === i.__v ? (u.__k = i.__k, u.__e = i.__e) : u.__e = $adfd32792a864deb$var$N(i.__e, u, i, t, o, r, f, c);\n (s = $adfd32792a864deb$export$41c562ebe57d11e2.diffed) && s(u);\n } catch (n) {\n u.__v = null, (c || null != r) && (u.__e = e, u.__h = !!c, r[r.indexOf(e)] = null), $adfd32792a864deb$export$41c562ebe57d11e2.__e(n, u, i);\n }\n}\nfunction $adfd32792a864deb$var$M(n, u) {\n $adfd32792a864deb$export$41c562ebe57d11e2.__c && $adfd32792a864deb$export$41c562ebe57d11e2.__c(u, n), n.some(function(u) {\n try {\n n = u.__h, u.__h = [], n.some(function(n) {\n n.call(u);\n });\n } catch (n) {\n $adfd32792a864deb$export$41c562ebe57d11e2.__e(n, u.__v);\n }\n });\n}\nfunction $adfd32792a864deb$var$N(l, u, i, t, o, r, f, e) {\n var s, a, h, y = i.props, d = u.props, _ = u.type, k = 0;\n if (\"svg\" === _ && (o = !0), null != r) {\n for(; k < r.length; k++)if ((s = r[k]) && \"setAttribute\" in s == !!_ && (_ ? s.localName === _ : 3 === s.nodeType)) {\n l = s, r[k] = null;\n break;\n }\n }\n if (null == l) {\n if (null === _) return document.createTextNode(d);\n l = o ? document.createElementNS(\"http://www.w3.org/2000/svg\", _) : document.createElement(_, d.is && d), r = null, e = !1;\n }\n if (null === _) y === d || e && l.data === d || (l.data = d);\n else {\n if (r = r && $adfd32792a864deb$var$n.call(l.childNodes), a = (y = i.props || $adfd32792a864deb$var$c).dangerouslySetInnerHTML, h = d.dangerouslySetInnerHTML, !e) {\n if (null != r) for(y = {}, k = 0; k < l.attributes.length; k++)y[l.attributes[k].name] = l.attributes[k].value;\n (h || a) && (h && (a && h.__html == a.__html || h.__html === l.innerHTML) || (l.innerHTML = h && h.__html || \"\"));\n }\n if ($adfd32792a864deb$var$H(l, d, y, o, e), h) u.__k = [];\n else if ($adfd32792a864deb$var$P(l, $adfd32792a864deb$var$v(k = u.props.children) ? k : [\n k\n ], u, i, t, o && \"foreignObject\" !== _, r, f, r ? r[0] : i.__k && $adfd32792a864deb$var$g(i, 0), e), null != r) for(k = r.length; k--;)null != r[k] && $adfd32792a864deb$var$p(r[k]);\n e || (\"value\" in d && void 0 !== (k = d.value) && (k !== l.value || \"progress\" === _ && !k || \"option\" === _ && k !== y.value) && $adfd32792a864deb$var$T(l, \"value\", k, y.value, !1), \"checked\" in d && void 0 !== (k = d.checked) && k !== l.checked && $adfd32792a864deb$var$T(l, \"checked\", k, y.checked, !1));\n }\n return l;\n}\nfunction $adfd32792a864deb$var$O(n, u, i) {\n try {\n \"function\" == typeof n ? n(u) : n.current = u;\n } catch (n) {\n $adfd32792a864deb$export$41c562ebe57d11e2.__e(n, i);\n }\n}\nfunction $adfd32792a864deb$var$q(n, u, i) {\n var t, o;\n if ($adfd32792a864deb$export$41c562ebe57d11e2.unmount && $adfd32792a864deb$export$41c562ebe57d11e2.unmount(n), (t = n.ref) && (t.current && t.current !== n.__e || $adfd32792a864deb$var$O(t, null, u)), null != (t = n.__c)) {\n if (t.componentWillUnmount) try {\n t.componentWillUnmount();\n } catch (n) {\n $adfd32792a864deb$export$41c562ebe57d11e2.__e(n, u);\n }\n t.base = t.__P = null, n.__c = void 0;\n }\n if (t = n.__k) for(o = 0; o < t.length; o++)t[o] && $adfd32792a864deb$var$q(t[o], u, i || \"function\" != typeof n.type);\n i || null == n.__e || $adfd32792a864deb$var$p(n.__e), n.__ = n.__e = n.__d = void 0;\n}\nfunction $adfd32792a864deb$var$B(n, l, u) {\n return this.constructor(n, u);\n}\nfunction $adfd32792a864deb$export$b3890eb0ae9dca99(u, i, t) {\n var o, r, f;\n $adfd32792a864deb$export$41c562ebe57d11e2.__ && $adfd32792a864deb$export$41c562ebe57d11e2.__(u, i), r = (o = \"function\" == typeof t) ? null : t && t.__k || i.__k, f = [], $adfd32792a864deb$var$L(i, u = (!o && t || i).__k = $adfd32792a864deb$export$c8a8987d4410bf2d($adfd32792a864deb$export$ffb0004e005737fa, null, [\n u\n ]), r || $adfd32792a864deb$var$c, $adfd32792a864deb$var$c, void 0 !== i.ownerSVGElement, !o && t ? [\n t\n ] : r ? null : i.firstChild ? $adfd32792a864deb$var$n.call(i.childNodes) : null, f, !o && t ? t : r ? r.__e : i.firstChild, o), $adfd32792a864deb$var$M(f, u);\n}\nfunction $adfd32792a864deb$export$fa8d919ba61d84db(n, l) {\n $adfd32792a864deb$export$b3890eb0ae9dca99(n, l, $adfd32792a864deb$export$fa8d919ba61d84db);\n}\nfunction $adfd32792a864deb$export$e530037191fcd5d7(l, u, i) {\n var t, o, r, f, e = $adfd32792a864deb$var$h({}, l.props);\n for(r in l.type && l.type.defaultProps && (f = l.type.defaultProps), u)\"key\" == r ? t = u[r] : \"ref\" == r ? o = u[r] : e[r] = void 0 === u[r] && void 0 !== f ? f[r] : u[r];\n return arguments.length > 2 && (e.children = arguments.length > 3 ? $adfd32792a864deb$var$n.call(arguments, 2) : i), $adfd32792a864deb$var$d(l.type, e, t || l.key, o || l.ref, null);\n}\nfunction $adfd32792a864deb$export$fd42f52fd3ae1109(n, l) {\n var u = {\n __c: l = \"__cC\" + $adfd32792a864deb$var$e++,\n __: n,\n Consumer: function(n, l) {\n return n.children(l);\n },\n Provider: function(n) {\n var u, i;\n return this.getChildContext || (u = [], (i = {})[l] = this, this.getChildContext = function() {\n return i;\n }, this.shouldComponentUpdate = function(n) {\n this.props.value !== n.value && u.some(function(n) {\n n.__e = !0, $adfd32792a864deb$var$w(n);\n });\n }, this.sub = function(n) {\n u.push(n);\n var l = n.componentWillUnmount;\n n.componentWillUnmount = function() {\n u.splice(u.indexOf(n), 1), l && l.call(n);\n };\n }), n.children;\n }\n };\n return u.Provider.__ = u.Consumer.contextType = u;\n}\n$adfd32792a864deb$var$n = $adfd32792a864deb$var$s.slice, $adfd32792a864deb$export$41c562ebe57d11e2 = {\n __e: function(n, l, u, i) {\n for(var t, o, r; l = l.__;)if ((t = l.__c) && !t.__) try {\n if ((o = t.constructor) && null != o.getDerivedStateFromError && (t.setState(o.getDerivedStateFromError(n)), r = t.__d), null != t.componentDidCatch && (t.componentDidCatch(n, i || {}), r = t.__d), r) return t.__E = t;\n } catch (l) {\n n = l;\n }\n throw n;\n }\n}, $adfd32792a864deb$var$u = 0, $adfd32792a864deb$export$a8257692ac88316c = function(n) {\n return null != n && void 0 === n.constructor;\n}, $adfd32792a864deb$export$16fa2f45be04daa8.prototype.setState = function(n, l) {\n var u;\n u = null != this.__s && this.__s !== this.state ? this.__s : this.__s = $adfd32792a864deb$var$h({}, this.state), \"function\" == typeof n && (n = n($adfd32792a864deb$var$h({}, u), this.props)), n && $adfd32792a864deb$var$h(u, n), null != n && this.__v && (l && this._sb.push(l), $adfd32792a864deb$var$w(this));\n}, $adfd32792a864deb$export$16fa2f45be04daa8.prototype.forceUpdate = function(n) {\n this.__v && (this.__e = !0, n && this.__h.push(n), $adfd32792a864deb$var$w(this));\n}, $adfd32792a864deb$export$16fa2f45be04daa8.prototype.render = $adfd32792a864deb$export$ffb0004e005737fa, $adfd32792a864deb$var$t = [], $adfd32792a864deb$var$r = \"function\" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, $adfd32792a864deb$var$f = function(n, l) {\n return n.__v.__b - l.__v.__b;\n}, $adfd32792a864deb$var$x.__r = 0, $adfd32792a864deb$var$e = 0;\n\n\nvar $80ca9f09fe72d4b7$var$_ = 0;\nfunction $80ca9f09fe72d4b7$export$34b9dba7ce09269b(o, e, n, t, f, l) {\n var s, u, a = {};\n for(u in e)\"ref\" == u ? s = e[u] : a[u] = e[u];\n var i = {\n type: o,\n props: a,\n key: n,\n ref: s,\n __k: null,\n __: null,\n __b: 0,\n __e: null,\n __d: void 0,\n __c: null,\n __h: null,\n constructor: void 0,\n __v: --$80ca9f09fe72d4b7$var$_,\n __source: f,\n __self: l\n };\n if (\"function\" == typeof o && (s = o.defaultProps)) for(u in s)void 0 === a[u] && (a[u] = s[u]);\n return (0, $adfd32792a864deb$export$41c562ebe57d11e2).vnode && (0, $adfd32792a864deb$export$41c562ebe57d11e2).vnode(i), i;\n}\n\n\n\n\n\n\n\n\nvar $70db777e8f6135ab$var$t, $70db777e8f6135ab$var$r, $70db777e8f6135ab$var$u, $70db777e8f6135ab$var$i, $70db777e8f6135ab$var$o = 0, $70db777e8f6135ab$var$f = [], $70db777e8f6135ab$var$c = [], $70db777e8f6135ab$var$e = (0, $adfd32792a864deb$export$41c562ebe57d11e2).__b, $70db777e8f6135ab$var$a = (0, $adfd32792a864deb$export$41c562ebe57d11e2).__r, $70db777e8f6135ab$var$v = (0, $adfd32792a864deb$export$41c562ebe57d11e2).diffed, $70db777e8f6135ab$var$l = (0, $adfd32792a864deb$export$41c562ebe57d11e2).__c, $70db777e8f6135ab$var$m = (0, $adfd32792a864deb$export$41c562ebe57d11e2).unmount;\nfunction $70db777e8f6135ab$var$d(t, u) {\n (0, $adfd32792a864deb$export$41c562ebe57d11e2).__h && (0, $adfd32792a864deb$export$41c562ebe57d11e2).__h($70db777e8f6135ab$var$r, t, $70db777e8f6135ab$var$o || u), $70db777e8f6135ab$var$o = 0;\n var i = $70db777e8f6135ab$var$r.__H || ($70db777e8f6135ab$var$r.__H = {\n __: [],\n __h: []\n });\n return t >= i.__.length && i.__.push({\n __V: $70db777e8f6135ab$var$c\n }), i.__[t];\n}\nfunction $70db777e8f6135ab$export$60241385465d0a34(n) {\n return $70db777e8f6135ab$var$o = 1, $70db777e8f6135ab$export$13e3392192263954($70db777e8f6135ab$var$B, n);\n}\nfunction $70db777e8f6135ab$export$13e3392192263954(n, u, i) {\n var o = $70db777e8f6135ab$var$d($70db777e8f6135ab$var$t++, 2);\n if (o.t = n, !o.__c && (o.__ = [\n i ? i(u) : $70db777e8f6135ab$var$B(void 0, u),\n function(n) {\n var t = o.__N ? o.__N[0] : o.__[0], r = o.t(t, n);\n t !== r && (o.__N = [\n r,\n o.__[1]\n ], o.__c.setState({}));\n }\n ], o.__c = $70db777e8f6135ab$var$r, !$70db777e8f6135ab$var$r.u)) {\n var f = function(n, t, r) {\n if (!o.__c.__H) return !0;\n var u = o.__c.__H.__.filter(function(n) {\n return n.__c;\n });\n if (u.every(function(n) {\n return !n.__N;\n })) return !c || c.call(this, n, t, r);\n var i = !1;\n return u.forEach(function(n) {\n if (n.__N) {\n var t = n.__[0];\n n.__ = n.__N, n.__N = void 0, t !== n.__[0] && (i = !0);\n }\n }), !(!i && o.__c.props === n) && (!c || c.call(this, n, t, r));\n };\n $70db777e8f6135ab$var$r.u = !0;\n var c = $70db777e8f6135ab$var$r.shouldComponentUpdate, e = $70db777e8f6135ab$var$r.componentWillUpdate;\n $70db777e8f6135ab$var$r.componentWillUpdate = function(n, t, r) {\n if (this.__e) {\n var u = c;\n c = void 0, f(n, t, r), c = u;\n }\n e && e.call(this, n, t, r);\n }, $70db777e8f6135ab$var$r.shouldComponentUpdate = f;\n }\n return o.__N || o.__;\n}\nfunction $70db777e8f6135ab$export$6d9c69b0de29b591(u, i) {\n var o = $70db777e8f6135ab$var$d($70db777e8f6135ab$var$t++, 3);\n !(0, $adfd32792a864deb$export$41c562ebe57d11e2).__s && $70db777e8f6135ab$var$z(o.__H, i) && (o.__ = u, o.i = i, $70db777e8f6135ab$var$r.__H.__h.push(o));\n}\nfunction $70db777e8f6135ab$export$e5c5a5f917a5871c(u, i) {\n var o = $70db777e8f6135ab$var$d($70db777e8f6135ab$var$t++, 4);\n !(0, $adfd32792a864deb$export$41c562ebe57d11e2).__s && $70db777e8f6135ab$var$z(o.__H, i) && (o.__ = u, o.i = i, $70db777e8f6135ab$var$r.__h.push(o));\n}\nfunction $70db777e8f6135ab$export$b8f5890fc79d6aca(n) {\n return $70db777e8f6135ab$var$o = 5, $70db777e8f6135ab$export$1538c33de8887b59(function() {\n return {\n current: n\n };\n }, []);\n}\nfunction $70db777e8f6135ab$export$d5a552a76deda3c2(n, t, r) {\n $70db777e8f6135ab$var$o = 6, $70db777e8f6135ab$export$e5c5a5f917a5871c(function() {\n return \"function\" == typeof n ? (n(t()), function() {\n return n(null);\n }) : n ? (n.current = t(), function() {\n return n.current = null;\n }) : void 0;\n }, null == r ? r : r.concat(n));\n}\nfunction $70db777e8f6135ab$export$1538c33de8887b59(n, r) {\n var u = $70db777e8f6135ab$var$d($70db777e8f6135ab$var$t++, 7);\n return $70db777e8f6135ab$var$z(u.__H, r) ? (u.__V = n(), u.i = r, u.__h = n, u.__V) : u.__;\n}\nfunction $70db777e8f6135ab$export$35808ee640e87ca7(n, t) {\n return $70db777e8f6135ab$var$o = 8, $70db777e8f6135ab$export$1538c33de8887b59(function() {\n return n;\n }, t);\n}\nfunction $70db777e8f6135ab$export$fae74005e78b1a27(n) {\n var u = $70db777e8f6135ab$var$r.context[n.__c], i = $70db777e8f6135ab$var$d($70db777e8f6135ab$var$t++, 9);\n return i.c = n, u ? (null == i.__ && (i.__ = !0, u.sub($70db777e8f6135ab$var$r)), u.props.value) : n.__;\n}\nfunction $70db777e8f6135ab$export$dc8fbce3eb94dc1e(t, r) {\n (0, $adfd32792a864deb$export$41c562ebe57d11e2).useDebugValue && (0, $adfd32792a864deb$export$41c562ebe57d11e2).useDebugValue(r ? r(t) : t);\n}\nfunction $70db777e8f6135ab$export$c052f6604b7d51fe(n) {\n var u = $70db777e8f6135ab$var$d($70db777e8f6135ab$var$t++, 10), i = $70db777e8f6135ab$export$60241385465d0a34();\n return u.__ = n, $70db777e8f6135ab$var$r.componentDidCatch || ($70db777e8f6135ab$var$r.componentDidCatch = function(n, t) {\n u.__ && u.__(n, t), i[1](n);\n }), [\n i[0],\n function() {\n i[1](void 0);\n }\n ];\n}\nfunction $70db777e8f6135ab$export$f680877a34711e37() {\n var n = $70db777e8f6135ab$var$d($70db777e8f6135ab$var$t++, 11);\n if (!n.__) {\n for(var u = $70db777e8f6135ab$var$r.__v; null !== u && !u.__m && null !== u.__;)u = u.__;\n var i = u.__m || (u.__m = [\n 0,\n 0\n ]);\n n.__ = \"P\" + i[0] + \"-\" + i[1]++;\n }\n return n.__;\n}\nfunction $70db777e8f6135ab$var$b() {\n for(var t; t = $70db777e8f6135ab$var$f.shift();)if (t.__P && t.__H) try {\n t.__H.__h.forEach($70db777e8f6135ab$var$k), t.__H.__h.forEach($70db777e8f6135ab$var$w), t.__H.__h = [];\n } catch (r) {\n t.__H.__h = [], (0, $adfd32792a864deb$export$41c562ebe57d11e2).__e(r, t.__v);\n }\n}\n(0, $adfd32792a864deb$export$41c562ebe57d11e2).__b = function(n) {\n $70db777e8f6135ab$var$r = null, $70db777e8f6135ab$var$e && $70db777e8f6135ab$var$e(n);\n}, (0, $adfd32792a864deb$export$41c562ebe57d11e2).__r = function(n) {\n $70db777e8f6135ab$var$a && $70db777e8f6135ab$var$a(n), $70db777e8f6135ab$var$t = 0;\n var i = ($70db777e8f6135ab$var$r = n.__c).__H;\n i && ($70db777e8f6135ab$var$u === $70db777e8f6135ab$var$r ? (i.__h = [], $70db777e8f6135ab$var$r.__h = [], i.__.forEach(function(n) {\n n.__N && (n.__ = n.__N), n.__V = $70db777e8f6135ab$var$c, n.__N = n.i = void 0;\n })) : (i.__h.forEach($70db777e8f6135ab$var$k), i.__h.forEach($70db777e8f6135ab$var$w), i.__h = [], $70db777e8f6135ab$var$t = 0)), $70db777e8f6135ab$var$u = $70db777e8f6135ab$var$r;\n}, (0, $adfd32792a864deb$export$41c562ebe57d11e2).diffed = function(t) {\n $70db777e8f6135ab$var$v && $70db777e8f6135ab$var$v(t);\n var o = t.__c;\n o && o.__H && (o.__H.__h.length && (1 !== $70db777e8f6135ab$var$f.push(o) && $70db777e8f6135ab$var$i === (0, $adfd32792a864deb$export$41c562ebe57d11e2).requestAnimationFrame || (($70db777e8f6135ab$var$i = (0, $adfd32792a864deb$export$41c562ebe57d11e2).requestAnimationFrame) || $70db777e8f6135ab$var$j)($70db777e8f6135ab$var$b)), o.__H.__.forEach(function(n) {\n n.i && (n.__H = n.i), n.__V !== $70db777e8f6135ab$var$c && (n.__ = n.__V), n.i = void 0, n.__V = $70db777e8f6135ab$var$c;\n })), $70db777e8f6135ab$var$u = $70db777e8f6135ab$var$r = null;\n}, (0, $adfd32792a864deb$export$41c562ebe57d11e2).__c = function(t, r) {\n r.some(function(t) {\n try {\n t.__h.forEach($70db777e8f6135ab$var$k), t.__h = t.__h.filter(function(n) {\n return !n.__ || $70db777e8f6135ab$var$w(n);\n });\n } catch (u) {\n r.some(function(n) {\n n.__h && (n.__h = []);\n }), r = [], (0, $adfd32792a864deb$export$41c562ebe57d11e2).__e(u, t.__v);\n }\n }), $70db777e8f6135ab$var$l && $70db777e8f6135ab$var$l(t, r);\n}, (0, $adfd32792a864deb$export$41c562ebe57d11e2).unmount = function(t) {\n $70db777e8f6135ab$var$m && $70db777e8f6135ab$var$m(t);\n var r, u = t.__c;\n u && u.__H && (u.__H.__.forEach(function(n) {\n try {\n $70db777e8f6135ab$var$k(n);\n } catch (n) {\n r = n;\n }\n }), u.__H = void 0, r && (0, $adfd32792a864deb$export$41c562ebe57d11e2).__e(r, u.__v));\n};\nvar $70db777e8f6135ab$var$g = \"function\" == typeof requestAnimationFrame;\nfunction $70db777e8f6135ab$var$j(n) {\n var t, r = function() {\n clearTimeout(u), $70db777e8f6135ab$var$g && cancelAnimationFrame(t), setTimeout(n);\n }, u = setTimeout(r, 100);\n $70db777e8f6135ab$var$g && (t = requestAnimationFrame(r));\n}\nfunction $70db777e8f6135ab$var$k(n) {\n var t = $70db777e8f6135ab$var$r, u = n.__c;\n \"function\" == typeof u && (n.__c = void 0, u()), $70db777e8f6135ab$var$r = t;\n}\nfunction $70db777e8f6135ab$var$w(n) {\n var t = $70db777e8f6135ab$var$r;\n n.__c = n.__(), $70db777e8f6135ab$var$r = t;\n}\nfunction $70db777e8f6135ab$var$z(n, t) {\n return !n || n.length !== t.length || t.some(function(t, r) {\n return t !== n[r];\n });\n}\nfunction $70db777e8f6135ab$var$B(n, t) {\n return \"function\" == typeof t ? t(n) : t;\n}\n\n\n\n// Copied from:\n// https://github.com/facebook/react/blob/main/packages/shared/ExecutionEnvironment.js\nconst $b2dbedd88e2bb823$var$canUseDOM = !!(typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\");\n// TODO: switch to `export { useSyncExternalStore } from \"preact/compat\"` once we update Preact to >= 10.11.3\nfunction $b2dbedd88e2bb823$var$is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y;\n}\nfunction $b2dbedd88e2bb823$export$306c0aa65ff9ec16(subscribe, getSnapshot, getSSRSnapshot) {\n if (getSSRSnapshot && !$b2dbedd88e2bb823$var$canUseDOM) getSnapshot = getSSRSnapshot;\n const value = getSnapshot();\n const [{ _instance: _instance }, forceUpdate] = (0, $70db777e8f6135ab$export$60241385465d0a34)({\n _instance: {\n _value: value,\n _getSnapshot: getSnapshot\n }\n });\n (0, $70db777e8f6135ab$export$e5c5a5f917a5871c)(()=>{\n _instance._value = value;\n _instance._getSnapshot = getSnapshot;\n if (!$b2dbedd88e2bb823$var$is(_instance._value, getSnapshot())) forceUpdate({\n _instance: _instance\n });\n }, [\n subscribe,\n value,\n getSnapshot\n ]);\n (0, $70db777e8f6135ab$export$6d9c69b0de29b591)(()=>{\n if (!$b2dbedd88e2bb823$var$is(_instance._value, _instance._getSnapshot())) forceUpdate({\n _instance: _instance\n });\n return subscribe(()=>{\n if (!$b2dbedd88e2bb823$var$is(_instance._value, _instance._getSnapshot())) forceUpdate({\n _instance: _instance\n });\n });\n }, [\n subscribe\n ]);\n return value;\n}\nfunction $b2dbedd88e2bb823$export$257a8862b851cb5b(component) {\n return component;\n}\nconst $b2dbedd88e2bb823$export$90fc3a17d93f704c = (fn)=>{\n const ref = (0, $70db777e8f6135ab$export$b8f5890fc79d6aca)([\n fn,\n (...args)=>ref[0](...args)\n ]).current;\n (0, $70db777e8f6135ab$export$e5c5a5f917a5871c)(()=>{\n ref[0] = fn;\n });\n return ref[1];\n};\n\n\n/*\n * Transforms `path` into its relative `base` version\n * If base isn't part of the path provided returns absolute path e.g. `~/app`\n */ const $e7eac5accd0c8e48$var$relativePath = (base = \"\", path = location.pathname)=>!path.toLowerCase().indexOf(base.toLowerCase()) ? path.slice(base.length) || \"/\" : \"~\" + path;\nconst $e7eac5accd0c8e48$var$absolutePath = (to, base = \"\")=>to[0] === \"~\" ? to.slice(1) : base + to;\n/**\n * History API docs @see https://developer.mozilla.org/en-US/docs/Web/API/History\n */ const $e7eac5accd0c8e48$var$eventPopstate = \"popstate\";\nconst $e7eac5accd0c8e48$var$eventPushState = \"pushState\";\nconst $e7eac5accd0c8e48$var$eventReplaceState = \"replaceState\";\nconst $e7eac5accd0c8e48$var$eventHashchange = \"hashchange\";\nconst $e7eac5accd0c8e48$export$4bf9923669ad6c63 = [\n $e7eac5accd0c8e48$var$eventPopstate,\n $e7eac5accd0c8e48$var$eventPushState,\n $e7eac5accd0c8e48$var$eventReplaceState,\n $e7eac5accd0c8e48$var$eventHashchange\n];\nconst $e7eac5accd0c8e48$var$subscribeToLocationUpdates = (callback)=>{\n for (const event of $e7eac5accd0c8e48$export$4bf9923669ad6c63)addEventListener(event, callback);\n return ()=>{\n for (const event of $e7eac5accd0c8e48$export$4bf9923669ad6c63)removeEventListener(event, callback);\n };\n};\nconst $e7eac5accd0c8e48$export$3a1ff78c39f8a86 = (fn, ssrFn)=>(0, $b2dbedd88e2bb823$export$306c0aa65ff9ec16)($e7eac5accd0c8e48$var$subscribeToLocationUpdates, fn, ssrFn);\nconst $e7eac5accd0c8e48$var$currentSearch = ()=>location.search;\nconst $e7eac5accd0c8e48$export$bd221a7c56b93941 = ()=>$e7eac5accd0c8e48$export$3a1ff78c39f8a86($e7eac5accd0c8e48$var$currentSearch);\nconst $e7eac5accd0c8e48$var$currentPathname = ()=>location.pathname;\nconst $e7eac5accd0c8e48$export$2a28ef6a9fe822a4 = ({ ssrPath: ssrPath } = {})=>$e7eac5accd0c8e48$export$3a1ff78c39f8a86($e7eac5accd0c8e48$var$currentPathname, ssrPath ? ()=>ssrPath : $e7eac5accd0c8e48$var$currentPathname);\nconst $e7eac5accd0c8e48$export$ff7962acd6052c28 = (to, { replace: replace = false } = {})=>history[replace ? $e7eac5accd0c8e48$var$eventReplaceState : $e7eac5accd0c8e48$var$eventPushState](null, \"\", to);\n// the 2nd argument of the `useLocation` return value is a function\n// that allows to perform a navigation.\n//\n// the function reference should stay the same between re-renders, so that\n// it can be passed down as an element prop without any performance concerns.\n// (This is achieved via `useEvent`.)\nconst $e7eac5accd0c8e48$var$useLocation = (opts = {})=>[\n $e7eac5accd0c8e48$var$relativePath(opts.base, $e7eac5accd0c8e48$export$2a28ef6a9fe822a4(opts)),\n (0, $b2dbedd88e2bb823$export$90fc3a17d93f704c)((to, navOpts)=>$e7eac5accd0c8e48$export$ff7962acd6052c28($e7eac5accd0c8e48$var$absolutePath(to, opts.base), navOpts))\n ];\nvar $e7eac5accd0c8e48$export$2e2bcd8739ae039 = $e7eac5accd0c8e48$var$useLocation;\n// While History API does have `popstate` event, the only\n// proper way to listen to changes via `push/replaceState`\n// is to monkey-patch these methods.\n//\n// See https://stackoverflow.com/a/4585031\nif (typeof history !== \"undefined\") for (const type of [\n $e7eac5accd0c8e48$var$eventPushState,\n $e7eac5accd0c8e48$var$eventReplaceState\n]){\n const original = history[type];\n // TODO: we should be using unstable_batchedUpdates to avoid multiple re-renders,\n // however that will require an additional peer dependency on react-dom.\n // See: https://github.com/reactwg/react-18/discussions/86#discussioncomment-1567149\n history[type] = function() {\n const result = original.apply(this, arguments);\n const event = new Event(type);\n event.arguments = arguments;\n dispatchEvent(event);\n return result;\n };\n}\n\n\n// creates a matcher function\nfunction $fa39f85a2f4c40bd$export$2e2bcd8739ae039(makeRegexpFn = $fa39f85a2f4c40bd$var$pathToRegexp) {\n let cache = {};\n // obtains a cached regexp version of the pattern\n const getRegexp = (pattern)=>cache[pattern] || (cache[pattern] = makeRegexpFn(pattern));\n return (pattern, path)=>{\n const { regexp: regexp, keys: keys } = getRegexp(pattern || \"\");\n const out = regexp.exec(path);\n if (!out) return [\n false,\n null\n ];\n // formats an object with matched params\n const params = keys.reduce((params, key, i)=>{\n params[key.name] = out[i + 1];\n return params;\n }, {});\n return [\n true,\n params\n ];\n };\n}\n// escapes a regexp string (borrowed from path-to-regexp sources)\n// https://github.com/pillarjs/path-to-regexp/blob/v3.0.0/index.js#L202\nconst $fa39f85a2f4c40bd$var$escapeRx = (str)=>str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n// returns a segment representation in RegExp based on flags\n// adapted and simplified version from path-to-regexp sources\nconst $fa39f85a2f4c40bd$var$rxForSegment = (repeat, optional, prefix)=>{\n let capture = repeat ? \"((?:[^\\\\/]+?)(?:\\\\/(?:[^\\\\/]+?))*)\" : \"([^\\\\/]+?)\";\n if (optional && prefix) capture = \"(?:\\\\/\" + capture + \")\";\n return capture + (optional ? \"?\" : \"\");\n};\nconst $fa39f85a2f4c40bd$var$pathToRegexp = (pattern)=>{\n const groupRx = /:([A-Za-z0-9_]+)([?+*]?)/g;\n let match = null, lastIndex = 0, keys = [], result = \"\";\n while((match = groupRx.exec(pattern)) !== null){\n const [_, segment, mod] = match;\n // :foo [1] ( )\n // :foo? [0 - 1] ( o)\n // :foo+ [1 - ∞] (r )\n // :foo* [0 - ∞] (ro)\n const repeat = mod === \"+\" || mod === \"*\";\n const optional = mod === \"?\" || mod === \"*\";\n const prefix = optional && pattern[match.index - 1] === \"/\" ? 1 : 0;\n const prev = pattern.substring(lastIndex, match.index - prefix);\n keys.push({\n name: segment\n });\n lastIndex = groupRx.lastIndex;\n result += $fa39f85a2f4c40bd$var$escapeRx(prev) + $fa39f85a2f4c40bd$var$rxForSegment(repeat, optional, prefix);\n }\n result += $fa39f85a2f4c40bd$var$escapeRx(pattern.substring(lastIndex));\n return {\n keys: keys,\n regexp: new RegExp(\"^\" + result + \"(?:\\\\/)?$\", \"i\")\n };\n};\n\n\n\n/*\n * Router and router context. Router is a lightweight object that represents the current\n * routing options: how location is managed, base path etc.\n *\n * There is a default router present for most of the use cases, however it can be overridden\n * via the component.\n */ const $43f4290c2e1c8c6c$var$defaultRouter = {\n hook: (0, $e7eac5accd0c8e48$export$2e2bcd8739ae039),\n matcher: (0, $fa39f85a2f4c40bd$export$2e2bcd8739ae039)(),\n base: \"\"\n};\nconst $43f4290c2e1c8c6c$var$RouterCtx = (0, $adfd32792a864deb$export$fd42f52fd3ae1109)($43f4290c2e1c8c6c$var$defaultRouter);\nconst $43f4290c2e1c8c6c$export$9a302a45f65d0572 = ()=>(0, $70db777e8f6135ab$export$fae74005e78b1a27)($43f4290c2e1c8c6c$var$RouterCtx);\n/*\n * Part 1, Hooks API: useRoute and useLocation\n */ // Internal version of useLocation to avoid redundant useRouter calls\nconst $43f4290c2e1c8c6c$var$useLocationFromRouter = (router)=>router.hook(router);\nconst $43f4290c2e1c8c6c$export$45d76561a5302f2b = ()=>$43f4290c2e1c8c6c$var$useLocationFromRouter($43f4290c2e1c8c6c$export$9a302a45f65d0572());\nconst $43f4290c2e1c8c6c$export$3f79f0b98112cf57 = (pattern)=>{\n const router = $43f4290c2e1c8c6c$export$9a302a45f65d0572();\n const [path] = $43f4290c2e1c8c6c$var$useLocationFromRouter(router);\n return router.matcher(pattern, path);\n};\nconst $43f4290c2e1c8c6c$export$55185c17a0fcbe46 = ({ hook: hook, matcher: matcher, ssrPath: ssrPath, base: base = \"\", parent: parent, children: children })=>{\n // updates the current router with the props passed down to the component\n const updateRouter = (router, proto = parent || $43f4290c2e1c8c6c$var$defaultRouter)=>{\n router.hook = hook || proto.hook;\n router.matcher = matcher || proto.matcher;\n router.ssrPath = ssrPath || proto.ssrPath;\n router.ownBase = base;\n // store reference to parent router\n router.parent = parent;\n return router;\n };\n // we use `useState` here, but it only catches the first render and never changes.\n // https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily\n const [value] = (0, $70db777e8f6135ab$export$60241385465d0a34)(()=>updateRouter({\n // We must store base as a property accessor because effects\n // somewhat counter-intuitively run in child components *first*!\n // This means that by the time a parent's base is updated in the\n // parent effect, the child effect has already run, and saw\n // the parent's *previous* base during its own execution.\n get base () {\n return (value.parent || $43f4290c2e1c8c6c$var$defaultRouter).base + value.ownBase;\n }\n })); // create the object once...\n (0, $70db777e8f6135ab$export$e5c5a5f917a5871c)(()=>{\n updateRouter(value);\n }); // ...then update it on each render\n return (0, $adfd32792a864deb$export$c8a8987d4410bf2d)($43f4290c2e1c8c6c$var$RouterCtx.Provider, {\n value: value,\n children: children\n });\n};\nconst $43f4290c2e1c8c6c$export$e7b0ac011bb776c6 = ({ path: path, match: match, component: component, children: children })=>{\n const useRouteMatch = $43f4290c2e1c8c6c$export$3f79f0b98112cf57(path);\n // `props.match` is present - Route is controlled by the Switch\n const [matches, params] = match || useRouteMatch;\n if (!matches) return null;\n // React-Router style `component` prop\n if (component) return (0, $adfd32792a864deb$export$c8a8987d4410bf2d)(component, {\n params: params\n });\n // support render prop or plain children\n return typeof children === \"function\" ? children(params) : children;\n};\nconst $43f4290c2e1c8c6c$export$a6c7ac8248d6e38a = (0, $b2dbedd88e2bb823$export$257a8862b851cb5b)((props, ref)=>{\n const router = $43f4290c2e1c8c6c$export$9a302a45f65d0572();\n const [, navigate] = $43f4290c2e1c8c6c$var$useLocationFromRouter(router);\n const { to: to, href: href = to, children: children, onClick: onClick } = props;\n const handleClick = (0, $b2dbedd88e2bb823$export$90fc3a17d93f704c)((event)=>{\n // ignores the navigation when clicked using right mouse button or\n // by holding a special modifier key: ctrl, command, win, alt, shift\n if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey || event.button !== 0) return;\n onClick && onClick(event);\n if (!event.defaultPrevented) {\n event.preventDefault();\n navigate(to || href, props);\n }\n });\n // wraps children in `a` if needed\n const extraProps = {\n // handle nested routers and absolute paths\n href: href[0] === \"~\" ? href.slice(1) : router.base + href,\n onClick: handleClick,\n to: null,\n ref: ref\n };\n const jsx = (0, $adfd32792a864deb$export$a8257692ac88316c)(children) ? children : (0, $adfd32792a864deb$export$c8a8987d4410bf2d)(\"a\", props);\n return (0, $adfd32792a864deb$export$e530037191fcd5d7)(jsx, extraProps);\n});\nconst $43f4290c2e1c8c6c$var$flattenChildren = (children)=>{\n return Array.isArray(children) ? [].concat(...children.map((c)=>c && c.type === (0, $adfd32792a864deb$export$ffb0004e005737fa) ? $43f4290c2e1c8c6c$var$flattenChildren(c.props.children) : $43f4290c2e1c8c6c$var$flattenChildren(c))) : [\n children\n ];\n};\nconst $43f4290c2e1c8c6c$export$b5d5cf8927ab7262 = ({ children: children, location: location })=>{\n const router = $43f4290c2e1c8c6c$export$9a302a45f65d0572();\n const matcher = router.matcher;\n const [originalLocation] = $43f4290c2e1c8c6c$var$useLocationFromRouter(router);\n for (const element of $43f4290c2e1c8c6c$var$flattenChildren(children)){\n let match = 0;\n if ((0, $adfd32792a864deb$export$a8257692ac88316c)(element) && // we don't require an element to be of type Route,\n // but we do require it to contain a truthy `path` prop.\n // this allows to use different components that wrap Route\n // inside of a switch, for example .\n (match = element.props.path ? matcher(element.props.path, location || originalLocation) : [\n true,\n {}\n ])[0]) return (0, $adfd32792a864deb$export$e530037191fcd5d7)(element, {\n match: match\n });\n }\n return null;\n};\nconst $43f4290c2e1c8c6c$export$2d8d895a0a0f636e = (props)=>{\n const { to: to, href: href = to } = props;\n const [, navigate] = $43f4290c2e1c8c6c$export$45d76561a5302f2b();\n const redirect = (0, $b2dbedd88e2bb823$export$90fc3a17d93f704c)(()=>navigate(to || href, props));\n // redirect is guaranteed to be stable since it is returned from useEvent\n (0, $70db777e8f6135ab$export$e5c5a5f917a5871c)(()=>{\n redirect();\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n return null;\n};\nvar $43f4290c2e1c8c6c$export$2e2bcd8739ae039 = $43f4290c2e1c8c6c$export$3f79f0b98112cf57;\n\n\n\nconst $a43cd3da5e11dd79$var$windowLocation = ()=>window.location.hash.replace(\"#\", \"\") || \"/\";\nconst $a43cd3da5e11dd79$export$8eb08f90c24d5079 = ({ url: url })=>`/#/play/${encodeURIComponent(url)}`;\nconst $a43cd3da5e11dd79$export$4fac2eeccfa4a8ca = (location)=>{\n if (location === \"/\") return \"home\";\n const currentView = location.split(\"/\").filter(Boolean)[0];\n return currentView || \"\";\n};\nconst $a43cd3da5e11dd79$export$b37f3f4c9f6562f7 = ()=>{\n const [currentLocation, setCurrentLocation] = (0, $70db777e8f6135ab$export$60241385465d0a34)($a43cd3da5e11dd79$var$windowLocation());\n (0, $70db777e8f6135ab$export$6d9c69b0de29b591)(()=>{\n const onHashChange = ()=>{\n let newLocation = $a43cd3da5e11dd79$var$windowLocation();\n if (newLocation !== currentLocation) {\n setCurrentLocation(newLocation);\n window.scrollTo(0, 0);\n }\n };\n onHashChange();\n window.addEventListener(\"hashchange\", onHashChange);\n return ()=>window.removeEventListener(\"hashchange\", onHashChange);\n }, [\n currentLocation,\n setCurrentLocation\n ]);\n const navigate = (0, $70db777e8f6135ab$export$35808ee640e87ca7)((to)=>{\n window.location.hash = to.replace(\"#/\", \"\");\n }, []);\n return [\n currentLocation,\n navigate\n ];\n};\n\n\n\nconst $87d3613fdd90d9f3$export$d9a33280f07116d9 = [\n \"light\",\n \"dim\",\n \"dark\",\n /* Solarized */ \"solarized-light\",\n \"solarized-dark\",\n /* Original */ \"emo\",\n \"redrum\",\n \"toxin\",\n \"valve\",\n \"wasp\",\n /* Monkeytype */ /* @see https://github.com/monkeytypegame/monkeytype/blob/master/frontend/static/themes/_list.json */ \"a8008\",\n \"a80s_after_dark\",\n \"a9009\",\n \"aether\",\n \"alduin\",\n \"alpine\",\n \"arch\",\n \"aurora\",\n \"beach\",\n \"bento\",\n \"bingsu\",\n \"bliss\",\n \"blue_dolphin\",\n \"blueberry_dark\",\n \"blueberry_light\",\n \"botanical\",\n \"bouquet\",\n \"breeze\",\n \"bushido\",\n \"cafe\",\n \"camping\",\n \"carbon\",\n \"catppuccin\",\n \"chaos_theory\",\n \"cheesecake\",\n \"cherry_blossom\",\n \"comfy\",\n \"copper\",\n \"creamsicle\",\n \"cyberspace\",\n \"dark_magic_girl\",\n \"dark_note\",\n \"darling\",\n \"deku\",\n \"desert_oasis\",\n \"dev\",\n \"diner\",\n \"dino\",\n \"dmg\",\n \"dollar\",\n \"dots\",\n \"dracula\",\n \"drowning\",\n \"dualshot\",\n \"earthsong\",\n \"everblush\",\n \"evil_eye\",\n \"ez_mode\",\n \"fire\",\n \"fledgling\",\n \"fleuriste\",\n \"froyo\",\n \"frozen_llama\",\n \"fruit_chew\",\n \"fundamentals\",\n \"future_funk\",\n \"godspeed\",\n \"graen\",\n \"grand_prix\",\n \"gruvbox_dark\",\n \"gruvbox_light\",\n \"hammerhead\",\n \"hanok\",\n \"hedge\",\n \"honey\",\n \"horizon\",\n \"husqy\",\n \"iceberg_dark\",\n \"iceberg_light\",\n \"ishtar\",\n \"iv_clover\",\n \"iv_spade\",\n \"joker\",\n \"laser\",\n \"lavender\",\n \"leather\",\n \"lil_dragon\",\n \"lime\",\n \"luna\",\n \"magic_girl\",\n \"mashu\",\n \"matcha_moccha\",\n \"material\",\n \"matrix\",\n \"menthol\",\n \"metaverse\",\n \"metropolis\",\n \"mexican\",\n \"miami\",\n \"miami_nights\",\n \"midnight\",\n \"milkshake\",\n \"mint\",\n \"mizu\",\n \"modern_dolch\",\n \"modern_dolch_light\",\n \"modern_ink\",\n \"monokai\",\n \"moonlight\",\n \"mountain\",\n \"mr_sleeves\",\n \"ms_cupcakes\",\n \"muted\",\n \"nautilus\",\n \"nebula\",\n \"night_runner\",\n \"nord\",\n \"nord_light\",\n \"norse\",\n \"oblivion\",\n \"olive\",\n \"olivia\",\n \"onedark\",\n \"our_theme\",\n \"paper\",\n \"passion_fruit\",\n \"pastel\",\n \"peach_blossom\",\n \"peaches\",\n \"pink_lemonade\",\n \"pulse\",\n \"purpurite\",\n \"red_dragon\",\n \"red_samurai\",\n \"repose_dark\",\n \"repose_light\",\n \"retro\",\n \"retrocast\",\n \"rose_pine\",\n \"rose_pine_dawn\",\n \"rose_pine_moon\",\n \"rudy\",\n \"ryujinscales\",\n \"serika\",\n \"serika_dark\",\n \"sewing_tin\",\n \"sewing_tin_light\",\n \"shadow\",\n \"shoko\",\n \"slambook\",\n \"snes\",\n \"soaring_skies\",\n \"sonokai\",\n \"stealth\",\n \"strawberry\",\n \"striker\",\n \"superuser\",\n \"sweden\",\n \"taro\",\n \"terminal\",\n \"terra\",\n \"terror_below\",\n \"tiramisu\",\n \"trackday\",\n \"trance\",\n \"tron_orange\",\n \"vaporwave\",\n \"viridescent\",\n \"voc\",\n \"vscode\",\n \"watermelon\",\n \"wavez\",\n \"witch_girl\"\n];\n\n\n\nconst $31f868e32fe83e3e$var$LS_THEME_KEY = \"elseifplayer/theme\";\nconst $31f868e32fe83e3e$var$DEFAULT_THEME = (0, $87d3613fdd90d9f3$export$d9a33280f07116d9)[0];\nconst $31f868e32fe83e3e$var$getSavedTheme = ()=>{\n const savedTheme = localStorage.getItem($31f868e32fe83e3e$var$LS_THEME_KEY);\n return savedTheme || $31f868e32fe83e3e$var$DEFAULT_THEME;\n};\nconst $31f868e32fe83e3e$var$assertTheme = (theme)=>(0, $87d3613fdd90d9f3$export$d9a33280f07116d9).includes(theme) ? theme : $31f868e32fe83e3e$var$getSavedTheme();\nconst $31f868e32fe83e3e$export$818080cba8053148 = (initialTheme = $31f868e32fe83e3e$var$getSavedTheme())=>{\n const [currentTheme, setCurrentTheme] = (0, $70db777e8f6135ab$export$60241385465d0a34)(initialTheme);\n const setTheme = (theme)=>{\n const newTheme = $31f868e32fe83e3e$var$assertTheme(theme);\n setCurrentTheme(newTheme);\n localStorage.setItem($31f868e32fe83e3e$var$LS_THEME_KEY, newTheme);\n };\n const setRandomTheme = ()=>{\n const randomTheme = (0, $87d3613fdd90d9f3$export$d9a33280f07116d9)[Math.floor(Math.random() * (0, $87d3613fdd90d9f3$export$d9a33280f07116d9).length)];\n setTheme(randomTheme);\n };\n return {\n currentTheme: currentTheme,\n setTheme: setTheme,\n setRandomTheme: setRandomTheme,\n themes: $87d3613fdd90d9f3$export$d9a33280f07116d9\n };\n};\n\n\n\n\n\n\nfunction $8e9729df037268c2$export$2e2bcd8739ae039({ theme: theme, setLocation: setLocation, buildLink: buildLink }) {\n const fileInputHandler = ({ target: target })=>{\n const file = target.files[0];\n const url = `${URL.createObjectURL(file)}#${file.name}`;\n setLocation(buildLink({\n url: url,\n theme: theme\n }));\n };\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"input\", {\n type: \"file\",\n onChange: fileInputHandler\n });\n}\n\n\n\nfunction $1d45441ec446f904$export$2e2bcd8739ae039({ theme: theme, setLocation: setLocation, buildLink: buildLink }) {\n const urlRE = /^(http|https):\\/\\/[^ \"]+$/;\n const onKeyPress = ({ keyCode: keyCode, target: target })=>{\n if (keyCode !== 13) return;\n const url = encodeURI(target.value);\n if (urlRE.test(url)) setLocation(buildLink({\n url: url,\n theme: theme\n }));\n };\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"input\", {\n type: \"text\",\n placeholder: \"https://...\",\n onKeyPress: onKeyPress\n });\n}\n\n\n\nfunction $17b050a6c4860540$export$2e2bcd8739ae039({ themeEngine: themeEngine }) {\n const options = themeEngine.themes.map((theme)=>/*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"option\", {\n value: theme,\n children: theme\n }, theme));\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"select\", {\n value: themeEngine.currentTheme,\n onChange: ({ target: target })=>themeEngine.setTheme(target.value),\n children: options\n });\n}\n\n\nfunction $bf3b722837e02a56$export$2e2bcd8739ae039({ themeEngine: themeEngine }) {\n const setLocation = (0, $a43cd3da5e11dd79$export$b37f3f4c9f6562f7)()[1];\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"main\", {\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"h1\", {\n children: \"ElseIFPlayer\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"p\", {\n children: [\n \"Interactive Fiction interpreter that runs right in your browser.\",\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"br\", {}),\n \"Source code can be found in this \",\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://github.com/He4eT/elseifplayer\",\n children: \"repository\"\n }),\n \".\"\n ]\n })\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"hr\", {}),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Interface Theme\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $17b050a6c4860540$export$2e2bcd8739ae039), {\n themeEngine: themeEngine\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"p\", {\n children: [\n \"Preview and choose from available themes on the \",\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$a6c7ac8248d6e38a), {\n href: \"/#/themes/\",\n children: \"themes page\"\n }),\n \".\"\n ]\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"p\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"small\", {\n children: \"Double-click the input field during the game to enter full-screen mode.\"\n })\n })\n ]\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"hr\", {}),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Play a Game from the List\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"p\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$a6c7ac8248d6e38a), {\n href: \"/#/games/\",\n children: \"IFDB games\"\n })\n })\n ]\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"hr\", {}),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Play the Game from a File\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"p\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"details\", {\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"summary\", {\n children: \"Supported formats\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"p\", {\n children: \"Text-only games are supported:\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"ul\", {\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"li\", {\n children: \"ADRIFT 4 (.taf)\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"li\", {\n children: \"Glulx (.gblorb, .ulx)\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"li\", {\n children: \"Hugo (.hex)\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"li\", {\n children: \"TADS 2/3 (.gam, .t3)\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"li\", {\n children: \"Z-code (.z3, .z4, .z5, .z8, .blorb)\"\n })\n ]\n })\n ]\n })\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"p\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"label\", {\n children: [\n \"Local file: \",\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"br\", {}),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $8e9729df037268c2$export$2e2bcd8739ae039), {\n setLocation: setLocation,\n buildLink: (0, $a43cd3da5e11dd79$export$8eb08f90c24d5079),\n theme: themeEngine.currentTheme\n })\n ]\n })\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"p\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"label\", {\n children: [\n \"Direct link: \",\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"br\", {}),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $1d45441ec446f904$export$2e2bcd8739ae039), {\n setLocation: setLocation,\n buildLink: (0, $a43cd3da5e11dd79$export$8eb08f90c24d5079),\n theme: themeEngine.currentTheme\n })\n ]\n })\n })\n ]\n })\n ]\n });\n}\n\n\n\n\n\n\n\nfunction $26d7563a3571c071$export$2e2bcd8739ae039({ name: name, ifdb: ifdb, url: url }) {\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"h4\", {\n children: name\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: ifdb,\n children: \"IFDB page\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"span\", {\n children: \" | \"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$a6c7ac8248d6e38a), {\n href: (0, $a43cd3da5e11dd79$export$8eb08f90c24d5079)({\n url: url\n }),\n children: \"Play\"\n })\n ]\n });\n}\n\n\nvar $1d41e2692da71243$export$2e2bcd8739ae039 = [\n [\n \"Lost Pig\",\n \"https://ifdb.org/viewgame?id=mohwfk47yjzii14w\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/LostPig.z8\"\n ],\n [\n /* Check with cheap-glk */ \"Counterfeit Monkey\",\n \"https://ifdb.org/viewgame?id=aearuuxv83plclpl\",\n \"https://mirror.ifarchive.org/if-archive/games/glulx/CounterfeitMonkey.gblorb\"\n ],\n [\n /* Works. Check inputs */ \"Anchorhead\",\n \"https://ifdb.org/viewgame?id=op0uw1gn1tjqmjt7\",\n \"https://ifarchive.org/if-archive/games/zcode/anchor.z8\"\n ],\n /* [\n '80 DAYS',\n 'https://ifdb.org/viewgame?id=du51t0qrhjqlnbij',\n 'INKLEWRITER'\n ], */ [\n \"Galatea\",\n \"https://ifdb.org/viewgame?id=urxrv27t7qtu52lb\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/Galatea.zblorb\"\n ],\n [\n /* Works. Check inputs */ \"Photopia\",\n \"https://ifdb.org/viewgame?id=ju778uv5xaswnlpl\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/photopia.z5\"\n ],\n [\n \"Spider and Web\",\n \"https://ifdb.org/viewgame?id=2xyccw3pe0uovfad\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/Tangle.z5\"\n ],\n /* [\n 'Trinity',\n 'https://ifdb.org/viewgame?id=j18kjz80hxjtyayw',\n 'ZIP'\n ], */ /* [\n 'Hadean Lands',\n 'https://ifdb.org/viewgame?id=u58d0mlbfwcorfi',\n 'COMMERCIAL'\n ], */ /* [\n 'Superluminal Vagrant Twin',\n 'https://ifdb.org/viewgame?id=5xzoz5wimz4xxha',\n 'CORS https://v6p9d9t4.ssl.hwcdn.net/html/177384/Superluminal%20Vagrant%20Twin%20Webpage/files/Superluminal%20Vagrant%20Twin.gblorb'\n ], */ /* [\n 'Birdland',\n 'https://ifdb.org/viewgame?id=ap1651hvjldbuugj',\n 'TWINE'\n ], */ [\n \"Slouching Towards Bedlam\",\n \"https://ifdb.org/viewgame?id=032krqe6bjn5au78\",\n \"https://mirror.ifarchive.org/if-archive/games/competition2003/zcode/slouch/slouch.z5\"\n ],\n [\n \"Curses!\",\n \"https://ifdb.org/viewgame?id=plvzam05bmz3enh8\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/curses.z5\"\n ],\n /* [\n 'howling dogs',\n 'https://ifdb.org/viewgame?id=mxj7xp4nffia9rbj',\n 'TWINE'\n ], */ [\n \"Violet\",\n \"https://ifdb.org/viewgame?id=4glrrfh7wrp9zz7b\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/Violet.zblorb\"\n ],\n [\n \"The Wizard Sniffer\",\n \"https://ifdb.org/viewgame?id=uq18rw9gt8j58da\",\n \"https://ifarchive.org/if-archive/games/competition2017/The%20Wizard%20Sniffer/The_Wizard_Sniffer.gblorb\"\n ],\n /* [\n 'Eat Me',\n 'https://ifdb.org/viewgame?id=yutkd9u0oeog4br1',\n 'ZIP https://ifarchive.org/if-archive/games/competition2017/Eat%20Me/Eat%20Me/Gblorb.zip'\n ], */ /* [\n 'Horse Master',\n 'https://ifdb.org/viewgame?id=ogkcvv9l1q0aatpd',\n 'TWINE'\n ], */ /* [\n 'Mentula Macanus: Apocolocyntosis',\n 'https://ifdb.org/viewgame?id=etul31tqgl3n22nl'\n 'ZIP'\n ], */ [\n \"Shade\",\n \"https://ifdb.org/viewgame?id=hsfc7fnl40k4a30q\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/shade.z5\"\n ],\n [\n \"Vespers\",\n \"https://ifdb.org/viewgame?id=6dj2vguyiagrhvc2\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/vespers.z8\"\n ],\n /* [\n 'Will Not Let Me Go',\n 'https://ifdb.org/viewgame?id=67r2qc21m5nzexv1',\n 'TWINE'\n ], */ /* [\n 'Bee',\n 'https://ifdb.org/viewgame?id=8pe83e92v4nvabic',\n 'VARYTALE'\n ], */ /* [\n 'Creatures Such As We',\n 'https://ifdb.org/viewgame?id=8l9cdcd1tbt77hfl',\n 'TWINE'\n ], */ /* [\n 'Kerkerkruip',\n 'https://ifdb.org/viewgame?id=f7zdhxmiraht53d1',\n 'CORS https://downloads.kerkerkruip.org/Kerkerkruip-latest.gblorb'\n ], */ /* [\n 'Midnight. Swordfight.',\n 'https://ifdb.org/viewgame?id=2cuwjlvpybg8oaf0',\n 'CORS https://www.castleprincessdragon.com/InteractiveFiction/MS/MidnightSwordfight.gblorb'\n ], */ [\n \"Savoir-Faire\",\n \"https://ifdb.org/viewgame?id=p0cizeb3kiwzlm2p\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/Savoir-Faire.zblorb\"\n ],\n /* [\n 'With Those We Love Alive',\n 'https://ifdb.org/viewgame?id=445d989vuwlh4cvz',\n 'TWINE'\n ], */ [\n \"Aisle\",\n \"https://ifdb.org/viewgame?id=j49crlvd62mhwuzu\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/Aisle.z5\"\n ],\n /* [\n 'Blue Lacuna',\n 'https://ifdb.org/viewgame?id=ez2mcyx4zi98qlkh',\n 'ZIP'\n ], */ [\n \"Gun Mute\",\n \"https://ifdb.org/viewgame?id=xwedbibfksczn7eq\",\n \"https://mirror.ifarchive.org/if-archive/games/tads/GunMute.t3\"\n ],\n /* [\n 'The King of Shreds and Patches',\n 'https://ifdb.org/viewgame?id=9ntef9expou18abv',\n 'ZIP'\n ], */ /* [\n 'A Mind Forever Voyaging',\n 'https://ifdb.org/viewgame?id=4h62dvooeg9ajtfa',\n 'CORS'\n ], */ /* [\n 'SPY INTRIGUE',\n 'https://ifdb.org/viewgame?id=zz6i7irfr70nvp7a',\n 'TWINE'\n ], */ /* [\n 'Wishbringer',\n 'https://ifdb.org/viewgame?id=z02joykzh66wfhcl',\n 'CORS'\n ], */ [\n \"A Beauty Cold and Austere\",\n \"https://ifdb.org/viewgame?id=y9y7jozi0l76bb82\",\n \"https://ifarchive.org/if-archive/games/competition2017/A%20Beauty%20Cold%20and%20Austere/A_Beauty_Cold_and_Austere.gblorb\"\n ],\n /* [\n 'Cactus Blue Motel',\n 'https://ifdb.org/viewgame?id=7e699ifb6u3767yr',\n 'TWINE'\n ], */ [\n \"Coloratura\",\n \"https://ifdb.org/viewgame?id=g0fl99ovcrq2sqzk\",\n \"https://mirror.ifarchive.org/if-archive/games/competition2013/glulx/coloratura/Coloratura.gblorb\"\n ],\n /* [\n 'Harmonia',\n 'https://ifdb.org/viewgame?id=bkyia4k48od1ila',\n 'TWINE'\n ], */ [\n \"Lime Ergot\",\n \"https://ifdb.org/viewgame?id=b8mb4fcwmf1hrxl\",\n \"https://mirror.ifarchive.org/if-archive/games/glulx/Lime_Ergot.gblorb\"\n ],\n [\n \"Rameses\",\n \"https://ifdb.org/viewgame?id=0stz0hr7a98bp9mp\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/rameses.zblorb\"\n ],\n /* [\n 'Spellbreaker',\n 'https://ifdb.org/viewgame?id=wqsmrahzozosu3r',\n 'CORS'\n ], */ /* [\n 'Suspended',\n 'https://ifdb.org/viewgame?id=t47hei9uq10xoar8',\n 'CORS'\n ], */ [\n \"The Wand\",\n \"https://ifdb.org/viewgame?id=2jil5vbxmbv8riv1\",\n \"https://ifarchive.org/if-archive/games/glulx/Wand.ulx\"\n ],\n /* [\n 'Zork I',\n 'https://ifdb.org/viewgame?id=0dbnusxunq7fw5ro',\n 'ZIP'\n ], */ [\n \"1893: A World's Fair Mystery\",\n \"https://ifdb.org/viewgame?id=00e0t7swrris5pg6\",\n \"https://mirror.ifarchive.org/if-archive/games/tads/1893.gam\"\n ],\n [\n \"Adventure\",\n \"https://ifdb.org/viewgame?id=fft6pu91j85y4acv\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/Advent.z5\"\n ],\n [\n \"Alias 'The Magpie'\",\n \"https://ifdb.org/viewgame?id=yspn49v69hzc8rtb\",\n \"https://ifarchive.org/if-archive/games/competition2018/Alias%20The%20Magpie/Alias%20%27The%20Magpie%27.gblorb\"\n ],\n /* [\n 'De Baron',\n 'https://ifdb.org/viewgame?id=weac28l51hiqfzxz',\n 'ZIP'\n ], */ /* [\n 'Bogeyman',\n 'https://ifdb.org/viewgame?id=ltwvgb2lubkx82yi',\n 'TWINE'\n ], */ [\n \"Cragne Manor\",\n \"https://ifdb.org/viewgame?id=4x7nltu8p851tn4x\",\n \"https://mirror.ifarchive.org/if-archive/games/glulx/cragne.gblorb\"\n ],\n [\n \"The Edifice\",\n \"https://ifdb.org/viewgame?id=4tb9soabrb4apqzd\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/edifice.z5\"\n ],\n [\n \"Endless, Nameless\",\n \"https://ifdb.org/viewgame?id=7vtm1rq16hh3xch\",\n \"https://ifarchive.org/if-archive/games/zcode/nameless.z8\"\n ],\n [\n \"Everybody Dies\",\n \"https://ifdb.org/viewgame?id=lyblvftb8xtlo0a1\",\n \"https://mirror.ifarchive.org/if-archive/games/competition2008/glulx/everybodydies/EverybodyDies.gblorb\"\n ],\n /* [\n 'Fallen London',\n 'https://ifdb.org/viewgame?id=y9m60ythcj2xn9r',\n 'STORYNEXUS'\n ], */ [\n \"Foo Foo\",\n \"https://ifdb.org/viewgame?id=ec6x9y8qcmsrxob9\",\n \"https://ifarchive.org/if-archive/games/springthing/2016/FooFoo.gblorb\"\n ],\n [\n \"The Gostak\",\n \"https://ifdb.org/viewgame?id=w5s3sv43s3p98v45\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/gostak.z5\"\n ],\n /* [\n 'The Hitchhiker\\'s Guide to the Galaxy',\n 'https://ifdb.org/viewgame?id=ouv80gvsl32xlion',\n 'CORS https://www.douglasadams.com/creations/hhgg.z3'\n ], */ /* [\n 'Hoist Sail for the Heliopause and Home',\n 'https://ifdb.org/viewgame?id=ykccumi5xc5rltev',\n 'CORS https://eblong.com/zarf/ftp/Heliopause.zblorb'\n ], */ /* [\n 'Human Errors',\n 'https://ifdb.org/viewgame?id=14oexa2wyym73glu',\n 'TWINE'\n ], */ [\n \"Inside the Facility\",\n \"https://ifdb.org/viewgame?id=stsdri5zh7a4i5my\",\n \"https://ifarchive.org/if-archive/games/competition2016/Inside%20the%20Facility/Facility.z8\"\n ],\n /* [\n 'Junior Arithmancer',\n 'https://ifdb.org/viewgame?id=pw1rbjt1t4n4n87s',\n 'https://ifarchive.org/if-archive/games/competition2018/Junior%20Arithmancer/Junior_Arithmancer.gblorb',\n ], */ [\n \"Make It Good\",\n \"https://ifdb.org/viewgame?id=jdrbw1htq4ah8q57\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/MakeItGood.z8\"\n ],\n [\n \"Sub Rosa\",\n \"https://ifdb.org/viewgame?id=73nvz9yui87ub3sd\",\n \"https://mirror.ifarchive.org/if-archive/games/glulx/Sub_Rosa.gblorb\"\n ],\n [\n \"Suveh Nux\",\n \"https://ifdb.org/viewgame?id=xkai23ry99qdxce3\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/suvehnux.z5\"\n ],\n /* [\n 'their angelical understanding',\n 'https://ifdb.org/viewgame?id=zpmfvbgolvfwbid',\n 'TWINE'\n ], */ /* [\n 'Toby\\'s Nose',\n 'https://ifdb.org/viewgame?id=xf5y04yekcrqtnc',\n 'CORS https://www.castleprincessdragon.com/InteractiveFiction/TobysNose/Toby\\'s%20Nose.gblorb'\n ], */ [\n \"Varicella\",\n \"https://ifdb.org/viewgame?id=ywwlr3tpxnktjasd\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/vgame.z8\"\n ]\n].map(([name, ifdb, url])=>({\n name: name,\n ifdb: ifdb,\n url: url\n }));\n\n\nvar $f2992819d79eae86$export$79863f625c4e57;\nvar $f2992819d79eae86$export$ccc8042d79dd0831;\n$f2992819d79eae86$export$79863f625c4e57 = `-soi4G_games`;\n$f2992819d79eae86$export$ccc8042d79dd0831 = `-soi4G_tutorial`;\n\n\nconst $82438f79b880153d$var$tutorialGame = {\n name: \"The Dreamhold\",\n ifdb: \"https://ifdb.org/viewgame?id=3myqnrs64nbtwdaz\",\n url: \"https://mirror.ifarchive.org/if-archive/games/zcode/dreamhold.z8\"\n};\nfunction $82438f79b880153d$export$2e2bcd8739ae039() {\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"main\", {\n className: $f2992819d79eae86$export$79863f625c4e57,\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"h1\", {\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://ifdb.org/\",\n title: \"The Interactive Fiction Database\",\n children: \"IFDB\"\n }),\n \" Games\"\n ]\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"p\", {\n children: [\n \"Choose one or \",\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$a6c7ac8248d6e38a), {\n href: \"/\",\n children: \"go back\"\n }),\n \".\"\n ]\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n className: $f2992819d79eae86$export$ccc8042d79dd0831,\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Tutorial\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"p\", {\n children: \"If you are not familiar with Interactive Fiction, you should start with this tutorial game by\\xa0Andrew\\xa0Plotkin:\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"ul\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"li\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $26d7563a3571c071$export$2e2bcd8739ae039), {\n ...$82438f79b880153d$var$tutorialGame\n })\n })\n })\n ]\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Interactive Fiction Top 50 of All Time\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"p\", {\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://ifdb.org/search?comp&sortby=awn&searchfor=series%3AInteractive+Fiction+Top+50+of+All+Time\",\n children: \"Every four years \"\n }),\n \", Victor Gijsbers puts together a list of the top 50 IF games of all time. Here is an almost complete and slightly rearranged version of the \",\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://ifdb.org/viewcomp?id=1lv599reviaxvwo7\",\n children: \"list from 2019\"\n }),\n \":\"\n ]\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"ol\", {\n children: (0, $1d41e2692da71243$export$2e2bcd8739ae039).map((game)=>/*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"li\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $26d7563a3571c071$export$2e2bcd8739ae039), {\n ...game\n })\n }, game.name))\n })\n ]\n });\n}\n\n\n\n\nvar $6bce942dbbed32a8$export$97aac956da55dae9;\nvar $6bce942dbbed32a8$export$b7e3ae3d7c15e42e;\nvar $6bce942dbbed32a8$export$a8ecead220dd38a6;\nvar $6bce942dbbed32a8$export$c789db2c85949867;\nvar $6bce942dbbed32a8$export$d61e5f8e032e1547;\nvar $6bce942dbbed32a8$export$77694752ff0b3730;\nvar $6bce942dbbed32a8$export$d9a33280f07116d9;\n$6bce942dbbed32a8$export$97aac956da55dae9 = `qdlvgW_current`;\n$6bce942dbbed32a8$export$b7e3ae3d7c15e42e = `qdlvgW_input`;\n$6bce942dbbed32a8$export$a8ecead220dd38a6 = `qdlvgW_message`;\n$6bce942dbbed32a8$export$c789db2c85949867 = `qdlvgW_output`;\n$6bce942dbbed32a8$export$d61e5f8e032e1547 = `qdlvgW_subheader`;\n$6bce942dbbed32a8$export$77694752ff0b3730 = `qdlvgW_themePreview`;\n$6bce942dbbed32a8$export$d9a33280f07116d9 = `qdlvgW_themes`;\n\n\nconst $1d6a41ed2b8e0680$var$Preview = (themeEngine, theme)=>/*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n className: [\n $6bce942dbbed32a8$export$77694752ff0b3730,\n theme\n ].join(\" \"),\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n className: $6bce942dbbed32a8$export$c789db2c85949867,\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $6bce942dbbed32a8$export$a8ecead220dd38a6,\n $6bce942dbbed32a8$export$b7e3ae3d7c15e42e\n ].join(\" \"),\n children: \"> look\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"br\", {})\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $6bce942dbbed32a8$export$a8ecead220dd38a6,\n $6bce942dbbed32a8$export$d61e5f8e032e1547\n ].join(\" \"),\n children: theme\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n children: \"Observe a vibrant demonstration of colors at work, showcasing their versatile usage right before your eyes.\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"br\", {})\n })\n ]\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"button\", {\n onClick: ()=>themeEngine.setTheme(theme),\n children: \"Apply this colors\"\n })\n ]\n }, theme);\nfunction $1d6a41ed2b8e0680$export$2e2bcd8739ae039({ themeEngine: themeEngine }) {\n const themes = themeEngine.themes.map((theme)=>$1d6a41ed2b8e0680$var$Preview(themeEngine, theme));\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"main\", {\n className: $6bce942dbbed32a8$export$d9a33280f07116d9,\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"h1\", {\n children: \"Themes Page\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"p\", {\n children: [\n \"Choose one or \",\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$a6c7ac8248d6e38a), {\n href: \"/\",\n children: \"go back\"\n }),\n \".\"\n ]\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n className: [\n $6bce942dbbed32a8$export$77694752ff0b3730,\n $6bce942dbbed32a8$export$97aac956da55dae9\n ].join(\" \"),\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Current Theme\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n className: $6bce942dbbed32a8$export$c789db2c85949867,\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $6bce942dbbed32a8$export$a8ecead220dd38a6,\n $6bce942dbbed32a8$export$b7e3ae3d7c15e42e\n ].join(\" \"),\n children: \"> look\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"br\", {})\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $6bce942dbbed32a8$export$a8ecead220dd38a6,\n $6bce942dbbed32a8$export$d61e5f8e032e1547\n ].join(\" \"),\n children: [\n \"Selected: \",\n themeEngine.currentTheme\n ]\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n children: \"You can set random one with the button below or choose any theme from the list.\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"br\", {})\n })\n ]\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"button\", {\n onClick: ()=>themeEngine.setRandomTheme(),\n children: \"Set a random theme\"\n })\n ]\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Theme List\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n children: themes\n })\n ]\n });\n}\n\n\n\n\n\n\n/*\n\nEmglken port of Bocfel\n======================\n\nCopyright (c) 2021 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ /*\n\nEmglken VM\n==========\n\nCopyright (c) 2022 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ /*\n\nEmglken File System\n===================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ const $034c9f96cebd6b40$var$DIR_MODE = 16895 // 040777\n;\nconst $034c9f96cebd6b40$var$FILE_MODE = 33206 // 100666\n;\nconst $034c9f96cebd6b40$var$SEEK_SET = 0;\nconst $034c9f96cebd6b40$var$SEEK_CUR = 1;\nconst $034c9f96cebd6b40$var$SEEK_END = 2;\n// WASI error codes\n// See https://github.com/WebAssembly/wasi-libc/blob/master/libc-bottom-half/headers/public/wasi/api.h\nconst $034c9f96cebd6b40$var$EINVAL = 28;\nconst $034c9f96cebd6b40$var$ENOENT = 44;\n// Convert Linux flags to Glk flags\nconst $034c9f96cebd6b40$var$filemode_Write = 1;\nconst $034c9f96cebd6b40$var$filemode_Read = 2;\nconst $034c9f96cebd6b40$var$filemode_ReadWrite = 3;\nconst $034c9f96cebd6b40$var$filemode_WriteAppend = 5;\nfunction $034c9f96cebd6b40$var$convert_flags(flags) {\n // O_APPEND => filemode_WriteAppend\n if (flags & 0x400) return $034c9f96cebd6b40$var$filemode_WriteAppend;\n // O_WRONLY => filemode_Write\n if (flags & 1) return $034c9f96cebd6b40$var$filemode_Write;\n // O_RDWR => filemode_ReadWrite\n if (flags & 2) return $034c9f96cebd6b40$var$filemode_ReadWrite;\n // O_RDONLY => filemode_Read\n return $034c9f96cebd6b40$var$filemode_Read;\n}\nclass $034c9f96cebd6b40$export$2e2bcd8739ae039 {\n constructor(VM){\n this.dialog = VM.options.Dialog;\n this.streaming = this.dialog.streaming;\n this.FS = VM.Module.FS;\n this.VM = VM;\n this.filename_map = {};\n this.filename_counter = 0;\n }\n close(stream) {\n if (stream.name === \"storyfile\") ;\n else {\n if (this.streaming) stream.fstream.fclose();\n else if (stream.fmode !== $034c9f96cebd6b40$var$filemode_Read) this.dialog.file_write(stream.fref, stream.data);\n }\n }\n createNode(parent, name, mode /*, dev*/ ) {\n const FS = this.FS;\n if (!FS.isDir(mode) && !FS.isFile(mode)) throw new FS.ErrnoError($034c9f96cebd6b40$var$EINVAL);\n const node = FS.createNode(parent, name, mode);\n node.node_ops = this;\n node.stream_ops = this;\n node.timestamp = Date.now();\n return node;\n }\n getattr(node) {\n // At present only the size of the storyfile will be returned, as needed by Bocfel\n const size = node.name === \"storyfile\" ? this.VM.data.length : 0;\n // Not sure what to return here, so only return stuff some of it\n return {\n atime: new Date(node.timestamp),\n ctime: new Date(node.timestamp),\n dev: 1,\n gid: 0,\n ino: node.id,\n mode: node.mode,\n mtime: new Date(node.timestamp),\n nlink: 1,\n rdev: node.rdev,\n size: size,\n uid: 0\n };\n }\n // Get a Dialog ref for non-streaming Dialogs\n get_dialog_ref(filename) {\n let [name, usage] = filename.split(\".\");\n // RemGlk sends usages starting with 'glk', but Dialog wants them without\n usage = usage.replace(\"glk\", \"\");\n // Retrieve the game ID if opening a savefile\n let gameid = \"\";\n if (usage === \"save\") gameid = this.VM.Module.AsciiToString(this.VM.Module._gidispatch_get_game_id());\n return this.dialog.file_construct_ref(name, usage, gameid);\n }\n llseek(stream, offset, whence) {\n let position = offset;\n if (whence === $034c9f96cebd6b40$var$SEEK_CUR) position += stream.position;\n else if (whence === $034c9f96cebd6b40$var$SEEK_END) {\n if (stream.name === \"storyfile\") position += stream.data.length;\n else if (this.streaming) {\n const curpos = stream.fstream.ftell();\n stream.fstream.fseek(0, $034c9f96cebd6b40$var$SEEK_END);\n position += stream.fstream.ftell();\n stream.fstream.fseek(curpos, $034c9f96cebd6b40$var$SEEK_SET);\n } else position += stream.data.length;\n }\n if (position < 0) throw new this.FS.ErrnoError($034c9f96cebd6b40$var$EINVAL);\n return position;\n }\n lookup(parent, name) {\n if (name !== \"storyfile\") {\n const realname = this.filename_map[name] || name;\n if (!this.dialog.file_ref_exists(this.streaming ? {\n filename: realname\n } : this.get_dialog_ref(realname))) throw new this.FS.ErrnoError($034c9f96cebd6b40$var$ENOENT);\n }\n return this.createNode(parent, name, $034c9f96cebd6b40$var$FILE_MODE);\n }\n mknod(parent, name, mode /*, dev*/ ) {\n return this.createNode(parent, name, mode);\n }\n mmap() {\n throw new Error(\"EmglkenFS.mmap\");\n }\n mount() {\n return this.createNode(null, \"/\", $034c9f96cebd6b40$var$DIR_MODE, 0);\n }\n msync() {\n throw new Error(\"EmglkenFS.msync\");\n }\n open(stream) {\n stream.name = stream.node.name;\n if (stream.name === \"storyfile\") stream.data = this.VM.data;\n else {\n const fmode = $034c9f96cebd6b40$var$convert_flags(stream.flags);\n const realname = this.filename_map[stream.name] || stream.name;\n if (this.streaming) stream.fstream = this.dialog.file_fopen(fmode, {\n filename: realname\n });\n else {\n stream.fref = this.get_dialog_ref(realname);\n stream.fmode = fmode;\n // Read the content if not overwriting\n stream.data = null;\n if (fmode !== $034c9f96cebd6b40$var$filemode_Write) stream.data = this.dialog.file_read(stream.fref);\n // If no file and not reading, create a blank file\n if (stream.data == null) {\n stream.data = new Uint8Array(0);\n if (fmode !== $034c9f96cebd6b40$var$filemode_Read) this.dialog.file_write(stream.fref, \"\", true);\n }\n //stream.position = fmode === filemode_WriteAppend ? data.length : 0\n }\n }\n }\n read(stream, buffer, offset, length, position) {\n if (length === 0) return 0;\n if (stream.name === \"storyfile\") {\n const size = Math.min(stream.data.length - position, length);\n buffer.set(stream.data.subarray(position, position + size), offset);\n return size;\n } else if (this.streaming) {\n stream.fstream.fseek(position, $034c9f96cebd6b40$var$SEEK_SET);\n const buf = stream.fstream.BufferClass.from(buffer.buffer, offset, length);\n return stream.fstream.fread(buf, length);\n } else {\n const size = Math.min(stream.data.length - position, length);\n buffer.set(stream.data.subarray(position, position + size), offset);\n return size;\n }\n }\n readdir() {\n throw new Error(\"EmglkenFS.readdir\");\n }\n readlink() {\n throw new this.FS.ErrnoError($034c9f96cebd6b40$var$EINVAL);\n }\n // electrofs.js will give a full system path, which we can't handle. So store the full path and return a fake file name\n register_filename(filename, usage) {\n const suffix = usage === \"save\" ? \".glksave\" : usage === \"data\" ? \".glkdata\" : \".txt\";\n if (!/\\.(glkdata|glksave|txt)$/.test(filename)) filename = filename + suffix;\n if (this.filename_map[filename]) return this.filename_map[filename];\n const fakename = \"emglken_fake_file_\" + this.filename_counter++;\n this.filename_map[filename] = fakename;\n this.filename_map[fakename + suffix] = filename;\n return fakename;\n }\n rename() {\n throw new Error(\"EmglkenFS.rename\");\n }\n rmdir() {\n throw new Error(\"EmglkenFS.rmdir\");\n }\n setattr() {\n // I don't think we need to do anything here?\n // Maybe truncate a file?\n }\n symlink() {\n throw new Error(\"EmglkenFS.symlink\");\n }\n unlink(parent, name) {\n const realname = this.filename_map[name] || name;\n this.dialog.file_remove_ref(this.get_dialog_ref(realname));\n }\n write(stream, buffer, offset, length, position) {\n if (stream.name === \"storyfile\") throw new Error(\"EmglkenFS.write: cannot write to storyfile\");\n if (this.streaming) {\n stream.fstream.fseek(position, $034c9f96cebd6b40$var$SEEK_SET);\n const buf = stream.fstream.BufferClass.from(buffer).subarray(offset, offset + length);\n return stream.fstream.fwrite(buf, length);\n } else {\n position = position || stream.position;\n const end_of_write = length + position;\n if (end_of_write > stream.data.length) {\n const old_data = stream.data;\n stream.data = new Uint8Array(end_of_write);\n stream.data.set(old_data);\n }\n stream.data.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n}\n\n\nconst $0d34edacac7ea588$var$base_options = {\n arguments: [\n \"storyfile\"\n ]\n};\nclass $0d34edacac7ea588$export$2e2bcd8739ae039 {\n // Store the data and options\n init(data, options) {\n this.data = data;\n this.options = Object.assign({}, $0d34edacac7ea588$var$base_options, this.default_options(), options);\n }\n // Start GlkOte and the vmcore\n async start() {\n const encoder = new TextEncoder();\n let buffer = \"\";\n const Module = {\n arguments: this.options.show_help ? [\n \"-help\"\n ] : this.options.arguments,\n emglken_stdin_buffers: [],\n emglken_stdin_ready () {},\n // Fake locateFile so that Lectrote doesn't get tripped up on import.meta.url not being handled in CJS properly\n locateFile () {},\n print: (data)=>{\n if (buffer === \"\" && data !== \"\" && !data.startsWith(\"{\")) console.log(data);\n else {\n buffer += data;\n if (data.endsWith(\"}\")) {\n let obj;\n try {\n obj = JSON.parse(buffer);\n } catch (e) {}\n if (obj) {\n buffer = \"\";\n // Store the usage of a fileref prompt request\n if (obj.specialinput && obj.specialinput.type === \"fileref_prompt\") this.last_fr_usage = obj.specialinput.filetype;\n this.options.GlkOte.update(obj);\n }\n }\n }\n },\n preRun: ()=>{\n const FS = Module.FS;\n this.EFS = new (0, $034c9f96cebd6b40$export$2e2bcd8739ae039)(this);\n FS.mkdir(\"/emglken\");\n FS.mount(this.EFS, {}, \"/emglken\");\n FS.chdir(\"/emglken\");\n },\n wasmBinary: this.options.wasmBinary\n };\n this.Module = Module;\n this.options.accept = (data)=>{\n if (data.type === \"specialresponse\" && data.response === \"fileref_prompt\" && data.value) {\n // electrofs.js returns a full path, so register it with EmglkenFS, and return a fake filename\n if (this.EFS.streaming) data.value = this.EFS.register_filename(data.value.filename, this.last_fr_usage);\n else data.value = data.value.filename;\n }\n const json_data = JSON.stringify(data);\n const buffer = encoder.encode(json_data);\n Module.emglken_stdin_buffers.push(buffer);\n Module.emglken_stdin_ready();\n };\n await this.options.vmcore(Module);\n this.options.GlkOte.init(this.options);\n }\n}\n\n\nvar $98d53e988180932b$exports = {};\n\n$98d53e988180932b$exports = new URL((parcelRequire(\"6MsPj\")).resolve(\"4QCNJ\"), import.meta.url).toString();\n\n\nvar $2d243513b2ab5598$var$Module = (()=>{\n var _scriptDir = \"file:///node_modules/emglken/build/bocfel-core.js\";\n return function(Module = {}) {\n var Module = typeof Module != \"undefined\" ? Module : {};\n var readyPromiseResolve, readyPromiseReject;\n Module[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow)=>{\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary, setWindowTitle;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) scriptDirectory = self.location.href;\n else if (typeof document != \"undefined\" && document.currentScript) scriptDirectory = document.currentScript.src;\n if (_scriptDir) scriptDirectory = _scriptDir;\n if (scriptDirectory.indexOf(\"blob:\") !== 0) scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n else scriptDirectory = \"\";\n read_ = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) readBinary = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n readAsync = (url, onload, onerror)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = ()=>{\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n setWindowTitle = (title)=>document.title = title;\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n var wasmBinary;\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n var noExitRuntime = Module[\"noExitRuntime\"] || false;\n if (typeof WebAssembly != \"object\") abort(\"no native wasm support detected\");\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) abort(text);\n }\n var UTF8Decoder = new TextDecoder(\"utf8\");\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while(heapOrArray[endPtr] && !(endPtr >= endIdx))++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for(var end = ptr; !(end >= maxPtr) && HEAPU8[end];)++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n }\n function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for(var i = 0; i < str.length; ++i){\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n function lengthBytesUTF8(str) {\n var len = 0;\n for(var i = 0; i < str.length; ++i){\n var c = str.charCodeAt(i);\n if (c <= 127) len++;\n else if (c <= 2047) len += 2;\n else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else len += 3;\n }\n return len;\n }\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var wasmTable;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATEXIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n var runtimeKeepaliveCounter = 0;\n function keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [\n Module[\"preRun\"]\n ];\n while(Module[\"preRun\"].length)addOnPreRun(Module[\"preRun\"].shift());\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n }\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n function exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [\n Module[\"postRun\"]\n ];\n while(Module[\"postRun\"].length)addOnPostRun(Module[\"postRun\"].shift());\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n if (Module[\"onAbort\"]) Module[\"onAbort\"](what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n if (Module[\"locateFile\"]) {\n wasmBinaryFile = \"bocfel-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) wasmBinaryFile = locateFile(wasmBinaryFile);\n } else wasmBinaryFile = new URL($98d53e988180932b$exports).href;\n function getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary);\n if (readBinary) return readBinary(file);\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n }\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n else return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n function createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"da\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"na\"];\n addOnInit(Module[\"asm\"][\"ea\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n }\n var tempDouble;\n var tempI64;\n function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async ()=>{\n if (!Module.emglken_stdin_buffers.length) await new Promise((resolve)=>{\n Module.emglken_stdin_ready = resolve;\n });\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) HEAPU8.set(input, buffer);\n else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n }\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n }\n function callRuntimeCallbacks(callbacks) {\n while(callbacks.length > 0)callbacks.shift()(Module);\n }\n var exceptionCaught = [];\n function exception_addRef(info) {\n info.add_ref();\n }\n var uncaughtExceptionCount = 0;\n function ___cxa_begin_catch(ptr) {\n var info = new ExceptionInfo(ptr);\n if (!info.get_caught()) {\n info.set_caught(true);\n uncaughtExceptionCount--;\n }\n info.set_rethrown(false);\n exceptionCaught.push(info);\n exception_addRef(info);\n return info.get_exception_ptr();\n }\n var exceptionLast = 0;\n function exception_decRef(info) {\n if (info.release_ref() && !info.get_rethrown()) {\n var destructor = info.get_destructor();\n if (destructor) ((a1)=>dynCall_ii.apply(null, [\n destructor,\n a1\n ]))(info.excPtr);\n ___cxa_free_exception(info.excPtr);\n }\n }\n function ___cxa_end_catch() {\n _setThrew(0);\n var info = exceptionCaught.pop();\n exception_decRef(info);\n exceptionLast = 0;\n }\n function ExceptionInfo(excPtr) {\n this.excPtr = excPtr;\n this.ptr = excPtr - 24;\n this.set_type = function(type) {\n HEAPU32[this.ptr + 4 >> 2] = type;\n };\n this.get_type = function() {\n return HEAPU32[this.ptr + 4 >> 2];\n };\n this.set_destructor = function(destructor) {\n HEAPU32[this.ptr + 8 >> 2] = destructor;\n };\n this.get_destructor = function() {\n return HEAPU32[this.ptr + 8 >> 2];\n };\n this.set_refcount = function(refcount) {\n HEAP32[this.ptr >> 2] = refcount;\n };\n this.set_caught = function(caught) {\n caught = caught ? 1 : 0;\n HEAP8[this.ptr + 12 >> 0] = caught;\n };\n this.get_caught = function() {\n return HEAP8[this.ptr + 12 >> 0] != 0;\n };\n this.set_rethrown = function(rethrown) {\n rethrown = rethrown ? 1 : 0;\n HEAP8[this.ptr + 13 >> 0] = rethrown;\n };\n this.get_rethrown = function() {\n return HEAP8[this.ptr + 13 >> 0] != 0;\n };\n this.init = function(type, destructor) {\n this.set_adjusted_ptr(0);\n this.set_type(type);\n this.set_destructor(destructor);\n this.set_refcount(0);\n this.set_caught(false);\n this.set_rethrown(false);\n };\n this.add_ref = function() {\n var value = HEAP32[this.ptr >> 2];\n HEAP32[this.ptr >> 2] = value + 1;\n };\n this.release_ref = function() {\n var prev = HEAP32[this.ptr >> 2];\n HEAP32[this.ptr >> 2] = prev - 1;\n return prev === 1;\n };\n this.set_adjusted_ptr = function(adjustedPtr) {\n HEAPU32[this.ptr + 16 >> 2] = adjustedPtr;\n };\n this.get_adjusted_ptr = function() {\n return HEAPU32[this.ptr + 16 >> 2];\n };\n this.get_exception_ptr = function() {\n var isPointer = ___cxa_is_pointer_type(this.get_type());\n if (isPointer) return HEAPU32[this.excPtr >> 2];\n var adjusted = this.get_adjusted_ptr();\n if (adjusted !== 0) return adjusted;\n return this.excPtr;\n };\n }\n function ___resumeException(ptr) {\n if (!exceptionLast) exceptionLast = ptr;\n throw ptr;\n }\n function ___cxa_find_matching_catch() {\n var thrown = exceptionLast;\n if (!thrown) {\n setTempRet0(0);\n return 0;\n }\n var info = new ExceptionInfo(thrown);\n info.set_adjusted_ptr(thrown);\n var thrownType = info.get_type();\n if (!thrownType) {\n setTempRet0(0);\n return thrown;\n }\n for(var i = 0; i < arguments.length; i++){\n var caughtType = arguments[i];\n if (caughtType === 0 || caughtType === thrownType) break;\n var adjusted_ptr_addr = info.ptr + 16;\n if (___cxa_can_catch(caughtType, thrownType, adjusted_ptr_addr)) {\n setTempRet0(caughtType);\n return thrown;\n }\n }\n setTempRet0(thrownType);\n return thrown;\n }\n var ___cxa_find_matching_catch_2 = ___cxa_find_matching_catch;\n var ___cxa_find_matching_catch_3 = ___cxa_find_matching_catch;\n var ___cxa_find_matching_catch_4 = ___cxa_find_matching_catch;\n var ___cxa_find_matching_catch_5 = ___cxa_find_matching_catch;\n var ___cxa_find_matching_catch_6 = ___cxa_find_matching_catch;\n var ___cxa_find_matching_catch_7 = ___cxa_find_matching_catch;\n function ___cxa_rethrow() {\n var info = exceptionCaught.pop();\n if (!info) abort(\"no exception to throw\");\n var ptr = info.excPtr;\n if (!info.get_rethrown()) {\n exceptionCaught.push(info);\n info.set_rethrown(true);\n info.set_caught(false);\n uncaughtExceptionCount++;\n }\n exceptionLast = ptr;\n throw ptr;\n }\n function ___cxa_throw(ptr, type, destructor) {\n var info = new ExceptionInfo(ptr);\n info.init(type, destructor);\n exceptionLast = ptr;\n uncaughtExceptionCount++;\n throw ptr;\n }\n function ___cxa_uncaught_exceptions() {\n return uncaughtExceptionCount;\n }\n var PATH = {\n isAbs: (path)=>path.charAt(0) === \"/\",\n splitPath: (filename)=>{\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot)=>{\n var up = 0;\n for(var i = parts.length - 1; i >= 0; i--){\n var last = parts[i];\n if (last === \".\") parts.splice(i, 1);\n else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) for(; up; up--)parts.unshift(\"..\");\n return parts;\n },\n normalize: (path)=>{\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p)=>!!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) path = \".\";\n if (path && trailingSlash) path += \"/\";\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: (path)=>{\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) return \".\";\n if (dir) dir = dir.substr(0, dir.length - 1);\n return root + dir;\n },\n basename: (path)=>{\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r)=>{\n return PATH.normalize(l + \"/\" + r);\n }\n };\n function getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return ()=>{\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return ()=>abort(\"randomDevice\");\n }\n var PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for(var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--){\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") throw new TypeError(\"Arguments to path.resolve must be strings\");\n else if (!path) return \"\";\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p)=>!!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to)=>{\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for(; start < arr.length; start++){\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for(; end >= 0; end--){\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for(var i = 0; i < length; i++)if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n var outputParts = [];\n for(var i = samePartsLength; i < fromParts.length; i++)outputParts.push(\"..\");\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n var TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) throw new FS.ErrnoError(43);\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) throw new FS.ErrnoError(60);\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) throw new FS.ErrnoError(60);\n try {\n for(var i = 0; i < length; i++)stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) result += \"\\n\";\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) result += \"\\n\";\n }\n if (!result) return null;\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n };\n function mmapAlloc(size) {\n abort();\n }\n var MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16895, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) throw new FS.ErrnoError(63);\n if (!MEMFS.ops_table) MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1048576;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) attr.size = 4096;\n else if (FS.isFile(node.mode)) attr.size = node.usedBytes;\n else if (FS.isLink(node.mode)) attr.size = node.link.length;\n else attr.size = 0;\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) node.mode = attr.mode;\n if (attr.timestamp !== undefined) node.timestamp = attr.timestamp;\n if (attr.size !== undefined) MEMFS.resizeFileStorage(node, attr.size);\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for(var i in new_node.contents)throw new FS.ErrnoError(55);\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for(var i in node.contents)throw new FS.ErrnoError(55);\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [\n \".\",\n \"..\"\n ];\n for(var key in node.contents){\n if (!node.contents.hasOwnProperty(key)) continue;\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 41471, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) throw new FS.ErrnoError(28);\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) buffer.set(contents.subarray(position, position + size), offset);\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) canOwn = false;\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);\n else for(var i = 0; i < length; i++)node.contents[position + i] = buffer[offset + i];\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) position += stream.position;\n else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) position += stream.node.usedBytes;\n }\n if (position < 0) throw new FS.ErrnoError(28);\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) contents = contents.subarray(position, position + length);\n else contents = Array.prototype.slice.call(contents, position, position + length);\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n };\n function asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, (arrayBuffer)=>{\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, (event)=>{\n if (onerror) onerror();\n else throw 'Loading data file \"' + url + '\" failed.';\n });\n if (dep) addRunDependency(dep);\n }\n var FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {})=>{\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) throw new FS.ErrnoError(32);\n var parts = path.split(\"/\").filter((p)=>!!p);\n var current = FS.root;\n var current_path = \"/\";\n for(var i = 0; i < parts.length; i++){\n var islast = i === parts.length - 1;\n if (islast && opts.parent) break;\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) current = current.mounted.root;\n }\n if (!islast || opts.follow) {\n var count = 0;\n while(FS.isLink(current.mode)){\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) throw new FS.ErrnoError(32);\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: (node)=>{\n var path;\n while(true){\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name)=>{\n var hash = 0;\n for(var i = 0; i < name.length; i++)hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) FS.nameTable[hash] = node.name_next;\n else {\n var current = FS.nameTable[hash];\n while(current){\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name)=>{\n var errCode = FS.mayLookup(parent);\n if (errCode) throw new FS.ErrnoError(errCode, parent);\n var hash = FS.hashName(parent.id, name);\n for(var node = FS.nameTable[hash]; node; node = node.name_next){\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) return node;\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev)=>{\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: (node)=>{\n FS.hashRemoveNode(node);\n },\n isRoot: (node)=>{\n return node === node.parent;\n },\n isMountpoint: (node)=>{\n return !!node.mounted;\n },\n isFile: (mode)=>{\n return (mode & 61440) === 32768;\n },\n isDir: (mode)=>{\n return (mode & 61440) === 16384;\n },\n isLink: (mode)=>{\n return (mode & 61440) === 40960;\n },\n isChrdev: (mode)=>{\n return (mode & 61440) === 8192;\n },\n isBlkdev: (mode)=>{\n return (mode & 61440) === 24576;\n },\n isFIFO: (mode)=>{\n return (mode & 61440) === 4096;\n },\n isSocket: (mode)=>{\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: (str)=>{\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") throw new Error(\"Unknown file open mode: \" + str);\n return flags;\n },\n flagsToPermissionString: (flag)=>{\n var perms = [\n \"r\",\n \"w\",\n \"rw\"\n ][flag & 3];\n if (flag & 512) perms += \"w\";\n return perms;\n },\n nodePermissions: (node, perms)=>{\n if (FS.ignorePermissions) return 0;\n if (perms.includes(\"r\") && !(node.mode & 292)) return 2;\n else if (perms.includes(\"w\") && !(node.mode & 146)) return 2;\n else if (perms.includes(\"x\") && !(node.mode & 73)) return 2;\n return 0;\n },\n mayLookup: (dir)=>{\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name)=>{\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir)=>{\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) return errCode;\n if (isdir) {\n if (!FS.isDir(node.mode)) return 54;\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) return 10;\n } else {\n if (FS.isDir(node.mode)) return 31;\n }\n return 0;\n },\n mayOpen: (node, flags)=>{\n if (!node) return 44;\n if (FS.isLink(node.mode)) return 32;\n else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) return 31;\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS)=>{\n for(var fd = fd_start; fd <= fd_end; fd++){\n if (!FS.streams[fd]) return fd;\n }\n throw new FS.ErrnoError(33);\n },\n getStream: (fd)=>FS.streams[fd],\n createStream: (stream, fd_start, fd_end)=>{\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: (fd)=>{\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: (stream)=>{\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n },\n llseek: ()=>{\n throw new FS.ErrnoError(70);\n }\n },\n major: (dev)=>dev >> 8,\n minor: (dev)=>dev & 255,\n makedev: (ma, mi)=>ma << 8 | mi,\n registerDevice: (dev, ops)=>{\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: (dev)=>FS.devices[dev],\n getMounts: (mount)=>{\n var mounts = [];\n var check = [\n mount\n ];\n while(check.length){\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback)=>{\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) doCallback(null);\n }\n mounts.forEach((mount)=>{\n if (!mount.type.syncfs) return done(null);\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint)=>{\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) throw new FS.ErrnoError(10);\n else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n if (!FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) FS.root = mountRoot;\n else if (node) {\n node.mounted = mount;\n if (node.mount) node.mount.mounts.push(mount);\n }\n return mountRoot;\n },\n unmount: (mountpoint)=>{\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) throw new FS.ErrnoError(28);\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash)=>{\n var current = FS.nameTable[hash];\n while(current){\n var next = current.name_next;\n if (mounts.includes(current.mount)) FS.destroyNode(current);\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name)=>{\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") throw new FS.ErrnoError(28);\n var errCode = FS.mayCreate(parent, name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.mknod) throw new FS.ErrnoError(63);\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode)=>{\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode)=>{\n mode = mode !== undefined ? mode : 511;\n mode &= 1023;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode)=>{\n var dirs = path.split(\"/\");\n var d = \"\";\n for(var i = 0; i < dirs.length; ++i){\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev)=>{\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath)=>{\n if (!PATH_FS.resolve(oldpath)) throw new FS.ErrnoError(44);\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.symlink) throw new FS.ErrnoError(63);\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path)=>{\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) throw new FS.ErrnoError(75);\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(28);\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(55);\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) return;\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) throw new FS.ErrnoError(errCode);\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!old_dir.node_ops.rename) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) throw new FS.ErrnoError(10);\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally{\n FS.hashAddNode(old_node);\n }\n },\n rmdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.rmdir) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) throw new FS.ErrnoError(54);\n return node.node_ops.readdir(node);\n },\n unlink: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.unlink) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: (path)=>{\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) throw new FS.ErrnoError(44);\n if (!link.node_ops.readlink) throw new FS.ErrnoError(28);\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow)=>{\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) throw new FS.ErrnoError(44);\n if (!node.node_ops.getattr) throw new FS.ErrnoError(63);\n return node.node_ops.getattr(node);\n },\n lstat: (path)=>{\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & -4096,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode)=>{\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid)=>{\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len)=>{\n if (len < 0) throw new FS.ErrnoError(28);\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n if (FS.isDir(node.mode)) throw new FS.ErrnoError(31);\n if (!FS.isFile(node.mode)) throw new FS.ErrnoError(28);\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(28);\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode)=>{\n if (path === \"\") throw new FS.ErrnoError(44);\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) mode = mode & 4095 | 32768;\n else mode = 0;\n var node;\n if (typeof path == \"object\") node = path;\n else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) throw new FS.ErrnoError(20);\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) throw new FS.ErrnoError(44);\n if (FS.isChrdev(node.mode)) flags &= -513;\n if (flags & 65536 && !FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n if (flags & 512 && !created) FS.truncate(node, 0);\n flags &= -131713;\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) FS.readFiles[path] = 1;\n }\n return stream;\n },\n close: (stream)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) stream.stream_ops.close(stream);\n } catch (e) {\n throw e;\n } finally{\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: (stream)=>{\n return stream.fd === null;\n },\n llseek: (stream, offset, whence)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (!stream.seekable || !stream.stream_ops.llseek) throw new FS.ErrnoError(70);\n if (whence != 0 && whence != 1 && whence != 2) throw new FS.ErrnoError(28);\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.read) throw new FS.ErrnoError(28);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.write) throw new FS.ErrnoError(28);\n if (stream.seekable && stream.flags & 1024) FS.llseek(stream, 0, 2);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (offset < 0 || length <= 0) throw new FS.ErrnoError(28);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) throw new FS.ErrnoError(43);\n if (!stream.stream_ops.allocate) throw new FS.ErrnoError(138);\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags)=>{\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) throw new FS.ErrnoError(2);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(2);\n if (!stream.stream_ops.mmap) throw new FS.ErrnoError(43);\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags)=>{\n if (!stream.stream_ops.msync) return 0;\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: (stream)=>0,\n ioctl: (stream, cmd, arg)=>{\n if (!stream.stream_ops.ioctl) throw new FS.ErrnoError(59);\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {})=>{\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") ret = UTF8ArrayToString(buf, 0);\n else if (opts.encoding === \"binary\") ret = buf;\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {})=>{\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n else throw new Error(\"Unsupported data type\");\n FS.close(stream);\n },\n cwd: ()=>FS.currentPath,\n chdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) throw new FS.ErrnoError(44);\n if (!FS.isDir(lookup.node.mode)) throw new FS.ErrnoError(54);\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) throw new FS.ErrnoError(errCode);\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: ()=>{\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: ()=>{\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: ()=>0,\n write: (stream, buffer, offset, length, pos)=>length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: ()=>{\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: ()=>{\n var node = FS.createNode(proc_self, \"fd\", 16895, 73);\n node.node_ops = {\n lookup: (parent, name)=>{\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: ()=>stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: ()=>{\n if (Module[\"stdin\"]) FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n if (Module[\"stdout\"]) FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n if (Module[\"stderr\"]) FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n else FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: ()=>{\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [\n 44\n ].forEach((code)=>{\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: ()=>{\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error)=>{\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: ()=>{\n FS.init.initialized = false;\n _fflush(0);\n for(var i = 0; i < FS.streams.length; i++){\n var stream = FS.streams[i];\n if (!stream) continue;\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite)=>{\n var mode = 0;\n if (canRead) mode |= 365;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink)=>{\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) return null;\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink)=>{\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite)=>{\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while(parts.length){\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn)=>{\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for(var i = 0, len = data.length; i < len; ++i)arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: (stream)=>{\n stream.seekable = false;\n },\n close: (stream)=>{\n if (output && output.buffer && output.buffer.length) output(10);\n },\n read: (stream, buffer, offset, length, pos)=>{\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos)=>{\n for(var i = 0; i < length; i++)try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: (obj)=>{\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n else if (read_) try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n else throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n },\n createLazyFile: (parent, name, url, canRead, canWrite)=>{\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) return undefined;\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1048576;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to)=>{\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) return new Uint8Array(xhr.response || []);\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter((chunkNum)=>{\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") lazyArray.chunks[chunkNum] = doXHR(start, end);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else var properties = {\n isDevice: false,\n url: url\n };\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) node.contents = properties.contents;\n else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach((key)=>{\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents.get(position + i);\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position)=>{\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags)=>{\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish)=>{\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, ()=>{\n if (onerror) onerror();\n removeRunDependency(dep);\n })) return;\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") asyncLoad(url, (byteArray)=>processData(byteArray), onerror);\n else processData(url);\n },\n indexedDB: ()=>{\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: ()=>{\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = ()=>{\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = ()=>{\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n try {\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var getRequest = files.get(path);\n getRequest.onsuccess = ()=>{\n if (FS.analyzePath(path).exists) FS.unlink(path);\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n };\n var SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) return path;\n var dir;\n if (dirfd === -100) dir = FS.cwd();\n else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) throw new FS.ErrnoError(44);\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) return -54;\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [\n stat.size >>> 0,\n (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [\n Math.floor(atime / 1e3) >>> 0,\n (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(mtime / 1e3) >>> 0,\n (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(ctime / 1e3) >>> 0,\n (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [\n stat.ino >>> 0,\n (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n if (flags & 2) return 0;\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n };\n function ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & -8) return -28;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) return -44;\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) return -2;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n }\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(cmd){\n case 0:\n var arg = SYSCALLS.get();\n if (arg < 0) return -28;\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4:\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n case 5:\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(op){\n case 21509:\n case 21505:\n if (!stream.tty) return -59;\n return 0;\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n if (!stream.tty) return -59;\n return 0;\n case 21519:\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n case 21520:\n if (!stream.tty) return -59;\n return -28;\n case 21531:\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n case 21523:\n if (!stream.tty) return -59;\n return 0;\n case 21524:\n if (!stream.tty) return -59;\n return 0;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var nowIsMonotonic = true;\n function __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n }\n function readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n }\n function __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n }\n var __MONTH_DAYS_LEAP_CUMULATIVE = [\n 0,\n 31,\n 60,\n 91,\n 121,\n 152,\n 182,\n 213,\n 244,\n 274,\n 305,\n 335\n ];\n var __MONTH_DAYS_REGULAR_CUMULATIVE = [\n 0,\n 31,\n 59,\n 90,\n 120,\n 151,\n 181,\n 212,\n 243,\n 273,\n 304,\n 334\n ];\n function __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n }\n function __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n }\n function allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n }\n function _abort() {\n abort(\"\");\n }\n function _emscripten_date_now() {\n return Date.now();\n }\n var _emscripten_get_now;\n _emscripten_get_now = ()=>performance.now();\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n }\n function getHeapMax() {\n return 2147483648;\n }\n function emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) return false;\n let alignUp = (x, multiple)=>x + (multiple - x % multiple) % multiple;\n for(var cutDown = 1; cutDown <= 4; cutDown *= 2){\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) return true;\n }\n return false;\n }\n var ENV = {};\n function getExecutableName() {\n return thisProgram || \"./this.program\";\n }\n function getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": lang,\n \"_\": getExecutableName()\n };\n for(var x in ENV)if (ENV[x] === undefined) delete env[x];\n else env[x] = ENV[x];\n var strings = [];\n for(var x in env)strings.push(x + \"=\" + env[x]);\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n }\n function writeAsciiToMemory(str, buffer, dontAddNull) {\n for(var i = 0; i < str.length; ++i)HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n }\n function _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function(string, i) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n }\n function _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function(string) {\n bufSize += string.length + 1;\n });\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n }\n function _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n }\n function exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) exitRuntime();\n _proc_exit(status);\n }\n var _exit = exitJS;\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n }\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [\n stream.position >>> 0,\n (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function _llvm_eh_typeid_for(type) {\n return type;\n }\n function __arraySum(array, index) {\n var sum = 0;\n for(var i = 0; i <= index; sum += array[i++]);\n return sum;\n }\n var __MONTH_DAYS_LEAP = [\n 31,\n 29,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n ];\n var __MONTH_DAYS_REGULAR = [\n 31,\n 28,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n ];\n function __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while(days > 0){\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) newDate.setMonth(currentMonth + 1);\n else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n }\n function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }\n function _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\"\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for(var rule in EXPANSION_RULES_1)pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n var WEEKDAYS = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ];\n var MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ];\n function leadingSomething(value, digits, character) {\n var str = typeof value == \"number\" ? value.toString() : value || \"\";\n while(str.length < digits)str = character[0] + str;\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) compare = sgn(date1.getDate() - date2.getDate());\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch(janFourth.getDay()){\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n case 1:\n return janFourth;\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) return thisDate.getFullYear() + 1;\n return thisDate.getFullYear();\n }\n return thisDate.getFullYear() - 1;\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function(date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function(date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function(date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function(date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function(date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n \"%d\": function(date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function(date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function(date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function(date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function(date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function(date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12;\n else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function(date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n \"%m\": function(date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function(date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function() {\n return \"\\n\";\n },\n \"%p\": function(date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) return \"AM\";\n return \"PM\";\n },\n \"%S\": function(date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function() {\n return \"\t\";\n },\n \"%u\": function(date) {\n return date.tm_wday || 7;\n },\n \"%U\": function(date) {\n var days = date.tm_yday + 7 - date.tm_wday;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%V\": function(date) {\n var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7);\n if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) val++;\n if (!val) {\n val = 52;\n var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;\n if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) val++;\n } else if (val == 53) {\n var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;\n if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1;\n }\n return leadingNulls(val, 2);\n },\n \"%w\": function(date) {\n return date.tm_wday;\n },\n \"%W\": function(date) {\n var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%y\": function(date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function(date) {\n return date.tm_year + 1900;\n },\n \"%z\": function(date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function(date) {\n return date.tm_zone;\n },\n \"%%\": function() {\n return \"%\";\n }\n };\n pattern = pattern.replace(/%%/g, \"\\x00\\x00\");\n for(var rule in EXPANSION_RULES_2)if (pattern.includes(rule)) pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_2[rule](date));\n pattern = pattern.replace(/\\0\\0/g, \"%\");\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) return 0;\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n }\n function _strftime_l(s, maxsize, format, tm, loc) {\n return _strftime(s, maxsize, format, tm);\n }\n function handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") return EXITSTATUS;\n quit_(1, e);\n }\n function allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n }\n function maybeExit() {\n if (!keepRuntimeAlive()) try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n function callUserCallback(func) {\n if (runtimeExited || ABORT) return;\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n }\n function runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n }\n function runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n }\n var Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [\n \"invoke_*\",\n \"emscripten_sleep\",\n \"emscripten_wget\",\n \"emscripten_wget_data\",\n \"emscripten_idb_load\",\n \"emscripten_idb_store\",\n \"emscripten_idb_delete\",\n \"emscripten_idb_exists\",\n \"emscripten_idb_load_blob\",\n \"emscripten_idb_store_blob\",\n \"SDL_Delay\",\n \"emscripten_scan_registers\",\n \"emscripten_lazy_load_code\",\n \"emscripten_fiber_swap\",\n \"__load_secondary_module\",\n \"fd_sync\",\n \"__wasi_fd_sync\",\n \"_emval_await\",\n \"_dlopen_js\",\n \"__asyncjs__*\"\n ];\n for(var x in imports)(function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n })(x);\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for(var x in exports)(function(x) {\n var original = exports[x];\n if (typeof original == \"function\") ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally{\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n else ret[x] = original;\n })(x);\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") Fibers.trampoline();\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject)=>{\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0)=>{\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) return;\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.resume();\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) throw asyncWasmReturnValue;\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.pause();\n runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach((func)=>callUserCallback(func));\n } else abort(\"invalid state: \" + Asyncify.state);\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep((wakeUp)=>{\n startAsync().then(wakeUp);\n });\n }\n };\n function AsciiToString(ptr) {\n var str = \"\";\n while(true){\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n }\n var FSNode = function(parent, name, mode, rdev) {\n if (!parent) parent = this;\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n var readMode = 365;\n var writeMode = 146;\n Object.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n });\n FS.FSNode = FSNode;\n FS.staticInit();\n var wasmImports = {\n \"S\": __asyncjs__emglken_fill_stdin_buffer,\n \"k\": ___cxa_begin_catch,\n \"n\": ___cxa_end_catch,\n \"a\": ___cxa_find_matching_catch_2,\n \"d\": ___cxa_find_matching_catch_3,\n \"m\": ___cxa_find_matching_catch_4,\n \"s\": ___cxa_find_matching_catch_5,\n \"x\": ___cxa_find_matching_catch_6,\n \"ca\": ___cxa_find_matching_catch_7,\n \"K\": ___cxa_rethrow,\n \"o\": ___cxa_throw,\n \"ba\": ___cxa_uncaught_exceptions,\n \"g\": ___resumeException,\n \"aa\": ___syscall_faccessat,\n \"J\": ___syscall_fcntl64,\n \"$\": ___syscall_getcwd,\n \"_\": ___syscall_ioctl,\n \"Z\": ___syscall_openat,\n \"V\": __emscripten_get_now_is_monotonic,\n \"U\": __localtime_js,\n \"T\": __tzset_js,\n \"D\": _abort,\n \"B\": _emscripten_date_now,\n \"R\": _emscripten_memcpy_big,\n \"Q\": _emscripten_resize_heap,\n \"Y\": _environ_get,\n \"X\": _environ_sizes_get,\n \"C\": _exit,\n \"I\": _fd_close,\n \"W\": _fd_read,\n \"P\": _fd_seek,\n \"H\": _fd_write,\n \"G\": invoke_diii,\n \"F\": invoke_fiii,\n \"q\": invoke_i,\n \"b\": invoke_ii,\n \"c\": invoke_iii,\n \"e\": invoke_iiii,\n \"p\": invoke_iiiii,\n \"u\": invoke_iiiiii,\n \"w\": invoke_iiiiiii,\n \"E\": invoke_iiiiiiii,\n \"A\": invoke_iiiiiiiiiiii,\n \"O\": invoke_ji,\n \"N\": invoke_jiiii,\n \"h\": invoke_v,\n \"i\": invoke_vi,\n \"f\": invoke_vii,\n \"j\": invoke_viii,\n \"r\": invoke_viiii,\n \"t\": invoke_viiiii,\n \"v\": invoke_viiiiiii,\n \"y\": invoke_viiiiiiiiii,\n \"z\": invoke_viiiiiiiiiiiiiii,\n \"l\": _llvm_eh_typeid_for,\n \"M\": _strftime,\n \"L\": _strftime_l\n };\n var asm = createWasm();\n var ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"ea\"]).apply(null, arguments);\n };\n var ___cxa_free_exception = function() {\n return (___cxa_free_exception = Module[\"asm\"][\"fa\"]).apply(null, arguments);\n };\n var _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"ga\"]).apply(null, arguments);\n };\n var ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"ha\"]).apply(null, arguments);\n };\n var _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"ia\"]).apply(null, arguments);\n };\n var _malloc = function() {\n return (_malloc = Module[\"asm\"][\"ja\"]).apply(null, arguments);\n };\n var _free = function() {\n return (_free = Module[\"asm\"][\"ka\"]).apply(null, arguments);\n };\n var _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"la\"]).apply(null, arguments);\n };\n var ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"ma\"]).apply(null, arguments);\n };\n var _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"oa\"]).apply(null, arguments);\n };\n var setTempRet0 = function() {\n return (setTempRet0 = Module[\"asm\"][\"pa\"]).apply(null, arguments);\n };\n var _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n };\n var stackSave = function() {\n return (stackSave = Module[\"asm\"][\"qa\"]).apply(null, arguments);\n };\n var stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"ra\"]).apply(null, arguments);\n };\n var stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"sa\"]).apply(null, arguments);\n };\n var ___cxa_can_catch = function() {\n return (___cxa_can_catch = Module[\"asm\"][\"ta\"]).apply(null, arguments);\n };\n var ___cxa_is_pointer_type = function() {\n return (___cxa_is_pointer_type = Module[\"asm\"][\"ua\"]).apply(null, arguments);\n };\n var dynCall_ii = Module[\"dynCall_ii\"] = function() {\n return (dynCall_ii = Module[\"dynCall_ii\"] = Module[\"asm\"][\"va\"]).apply(null, arguments);\n };\n var dynCall_iiii = Module[\"dynCall_iiii\"] = function() {\n return (dynCall_iiii = Module[\"dynCall_iiii\"] = Module[\"asm\"][\"wa\"]).apply(null, arguments);\n };\n var dynCall_viii = Module[\"dynCall_viii\"] = function() {\n return (dynCall_viii = Module[\"dynCall_viii\"] = Module[\"asm\"][\"xa\"]).apply(null, arguments);\n };\n var dynCall_v = Module[\"dynCall_v\"] = function() {\n return (dynCall_v = Module[\"dynCall_v\"] = Module[\"asm\"][\"ya\"]).apply(null, arguments);\n };\n var dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"za\"]).apply(null, arguments);\n };\n var dynCall_iii = Module[\"dynCall_iii\"] = function() {\n return (dynCall_iii = Module[\"dynCall_iii\"] = Module[\"asm\"][\"Aa\"]).apply(null, arguments);\n };\n var dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"Ba\"]).apply(null, arguments);\n };\n var dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = function() {\n return (dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = Module[\"asm\"][\"Ca\"]).apply(null, arguments);\n };\n var dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() {\n return (dynCall_iiiii = Module[\"dynCall_iiiii\"] = Module[\"asm\"][\"Da\"]).apply(null, arguments);\n };\n var dynCall_i = Module[\"dynCall_i\"] = function() {\n return (dynCall_i = Module[\"dynCall_i\"] = Module[\"asm\"][\"Ea\"]).apply(null, arguments);\n };\n var dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = function() {\n return (dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = Module[\"asm\"][\"Fa\"]).apply(null, arguments);\n };\n var dynCall_viiii = Module[\"dynCall_viiii\"] = function() {\n return (dynCall_viiii = Module[\"dynCall_viiii\"] = Module[\"asm\"][\"Ga\"]).apply(null, arguments);\n };\n var dynCall_ji = Module[\"dynCall_ji\"] = function() {\n return (dynCall_ji = Module[\"dynCall_ji\"] = Module[\"asm\"][\"Ha\"]).apply(null, arguments);\n };\n var dynCall_viiiii = Module[\"dynCall_viiiii\"] = function() {\n return (dynCall_viiiii = Module[\"dynCall_viiiii\"] = Module[\"asm\"][\"Ia\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = function() {\n return (dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = Module[\"asm\"][\"Ja\"]).apply(null, arguments);\n };\n var dynCall_jiiii = Module[\"dynCall_jiiii\"] = function() {\n return (dynCall_jiiii = Module[\"dynCall_jiiii\"] = Module[\"asm\"][\"Ka\"]).apply(null, arguments);\n };\n var dynCall_fiii = Module[\"dynCall_fiii\"] = function() {\n return (dynCall_fiii = Module[\"dynCall_fiii\"] = Module[\"asm\"][\"La\"]).apply(null, arguments);\n };\n var dynCall_diii = Module[\"dynCall_diii\"] = function() {\n return (dynCall_diii = Module[\"dynCall_diii\"] = Module[\"asm\"][\"Ma\"]).apply(null, arguments);\n };\n var dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = function() {\n return (dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = Module[\"asm\"][\"Na\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = Module[\"asm\"][\"Oa\"]).apply(null, arguments);\n };\n var dynCall_viiiiiiiiii = Module[\"dynCall_viiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiii = Module[\"dynCall_viiiiiiiiii\"] = Module[\"asm\"][\"Pa\"]).apply(null, arguments);\n };\n var dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Qa\"]).apply(null, arguments);\n };\n var _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"Ra\"]).apply(null, arguments);\n };\n var _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"Sa\"]).apply(null, arguments);\n };\n var _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"Ta\"]).apply(null, arguments);\n };\n var _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"Ua\"]).apply(null, arguments);\n };\n var ___start_em_js = Module[\"___start_em_js\"] = 52440;\n var ___stop_em_js = Module[\"___stop_em_js\"] = 55125;\n function invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iii(index, a1, a2) {\n var sp = stackSave();\n try {\n return dynCall_iii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n return dynCall_iiiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiii(index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n dynCall_viiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_fiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_fiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_diii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_diii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n dynCall_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_ji(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ji(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_jiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_jiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n Module[\"AsciiToString\"] = AsciiToString;\n Module[\"FS\"] = FS;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach((arg)=>{\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n }\n function run(args = arguments_) {\n if (runDependencies > 0) return;\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else doRun();\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [\n Module[\"preInit\"]\n ];\n while(Module[\"preInit\"].length > 0)Module[\"preInit\"].pop()();\n }\n var shouldRunNow = true;\n if (Module[\"noInitialRun\"]) shouldRunNow = false;\n run();\n return Module.ready;\n };\n})();\nvar $2d243513b2ab5598$export$2e2bcd8739ae039 = $2d243513b2ab5598$var$Module;\n\n\nclass $c9beefb40b84b742$export$2e2bcd8739ae039 extends (0, $0d34edacac7ea588$export$2e2bcd8739ae039) {\n default_options() {\n return {\n vmcore: (0, $2d243513b2ab5598$export$2e2bcd8739ae039)\n };\n }\n}\n\n\n/*\n\nEmglken port of Git\n===================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ \nvar $454c12da88ceab7d$exports = {};\n\n$454c12da88ceab7d$exports = new URL((parcelRequire(\"6MsPj\")).resolve(\"kBXOE\"), import.meta.url).toString();\n\n\nvar $70d4325860634496$var$Module = (()=>{\n var _scriptDir = \"file:///node_modules/emglken/build/git-core.js\";\n return function(Module = {}) {\n var Module = typeof Module != \"undefined\" ? Module : {};\n var readyPromiseResolve, readyPromiseReject;\n Module[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow)=>{\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary, setWindowTitle;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) scriptDirectory = self.location.href;\n else if (typeof document != \"undefined\" && document.currentScript) scriptDirectory = document.currentScript.src;\n if (_scriptDir) scriptDirectory = _scriptDir;\n if (scriptDirectory.indexOf(\"blob:\") !== 0) scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n else scriptDirectory = \"\";\n read_ = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) readBinary = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n readAsync = (url, onload, onerror)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = ()=>{\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n setWindowTitle = (title)=>document.title = title;\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n var wasmBinary;\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n var noExitRuntime = Module[\"noExitRuntime\"] || false;\n if (typeof WebAssembly != \"object\") abort(\"no native wasm support detected\");\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) abort(text);\n }\n var UTF8Decoder = new TextDecoder(\"utf8\");\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while(heapOrArray[endPtr] && !(endPtr >= endIdx))++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for(var end = ptr; !(end >= maxPtr) && HEAPU8[end];)++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n }\n function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for(var i = 0; i < str.length; ++i){\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n function lengthBytesUTF8(str) {\n var len = 0;\n for(var i = 0; i < str.length; ++i){\n var c = str.charCodeAt(i);\n if (c <= 127) len++;\n else if (c <= 2047) len += 2;\n else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else len += 3;\n }\n return len;\n }\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var wasmTable;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATEXIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n var runtimeKeepaliveCounter = 0;\n function keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [\n Module[\"preRun\"]\n ];\n while(Module[\"preRun\"].length)addOnPreRun(Module[\"preRun\"].shift());\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n }\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n function exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [\n Module[\"postRun\"]\n ];\n while(Module[\"postRun\"].length)addOnPostRun(Module[\"postRun\"].shift());\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n if (Module[\"onAbort\"]) Module[\"onAbort\"](what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n if (Module[\"locateFile\"]) {\n wasmBinaryFile = \"git-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) wasmBinaryFile = locateFile(wasmBinaryFile);\n } else wasmBinaryFile = new URL($454c12da88ceab7d$exports).href;\n function getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary);\n if (readBinary) return readBinary(file);\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n }\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n else return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n function createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"E\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"N\"];\n addOnInit(Module[\"asm\"][\"F\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n }\n var tempDouble;\n var tempI64;\n function emglken_common_buffer_transformer(buf, len, numchars, func, dont_reduce) {\n const index = buf >> 2;\n const utf32 = HEAPU32.subarray(index, index + numchars);\n const data = dont_reduce ? utf32 : utf32.reduce((prev, ch)=>prev + String.fromCodePoint(ch), \"\");\n const new_str = func(data);\n const newbuf = Uint32Array.from(new_str, (ch)=>ch.codePointAt(0));\n const newlen = newbuf.length;\n HEAPU32.set(newbuf.subarray(0, Math.min(len, newlen)), index);\n return newlen;\n }\n function glk_buffer_to_lower_case_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, (str)=>str.toLowerCase());\n }\n function glk_buffer_to_upper_case_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, (str)=>str.toUpperCase());\n }\n function glk_buffer_to_title_case_uni(buf, len, numchars, lowerrest) {\n return emglken_common_buffer_transformer(buf, len, numchars, (utf32)=>utf32.reduce((prev, ch, index)=>{\n const special_cases = {\n \"\\xdf\": \"Ss\",\n \"DŽ\": \"Dž\",\n \"Dž\": \"Dž\",\n \"dž\": \"Dž\",\n \"LJ\": \"Lj\",\n \"Lj\": \"Lj\",\n \"lj\": \"Lj\",\n \"NJ\": \"Nj\",\n \"Nj\": \"Nj\",\n \"nj\": \"Nj\",\n \"DZ\": \"Dz\",\n \"Dz\": \"Dz\",\n \"dz\": \"Dz\",\n \"և\": \"Եւ\",\n \"ᾲ\": \"Ὰͅ\",\n \"ᾳ\": \"ᾼ\",\n \"ᾴ\": \"Άͅ\",\n \"ᾷ\": \"ᾼ͂\",\n \"ᾼ\": \"ᾼ\",\n \"ῂ\": \"Ὴͅ\",\n \"ῃ\": \"ῌ\",\n \"ῄ\": \"Ήͅ\",\n \"ῇ\": \"ῌ͂\",\n \"ῌ\": \"ῌ\",\n \"ῲ\": \"Ὼͅ\",\n \"ῳ\": \"ῼ\",\n \"ῴ\": \"Ώͅ\",\n \"ῷ\": \"ῼ͂\",\n \"ῼ\": \"ῼ\",\n \"ff\": \"Ff\",\n \"fi\": \"Fi\",\n \"fl\": \"Fl\",\n \"ffi\": \"Ffi\",\n \"ffl\": \"Ffl\",\n \"ſt\": \"St\",\n \"st\": \"St\",\n \"ﬓ\": \"Մն\",\n \"ﬔ\": \"Մե\",\n \"ﬕ\": \"Մի\",\n \"ﬖ\": \"Վն\",\n \"ﬗ\": \"Մխ\"\n };\n const slightly_less_special_cases = [\n \"ᾈᾉᾊᾋᾌᾍᾎᾏ\",\n \"ᾘᾙᾚᾛᾜᾝᾞᾟ\",\n \"ᾨᾩᾪᾫᾬᾭᾮᾯ\"\n ];\n let thischar = String.fromCodePoint(ch);\n if (index === 0) {\n if (special_cases[thischar]) thischar = special_cases[thischar];\n else if (ch >= 8064 && ch < 8112) thischar = slightly_less_special_cases[(ch - 8064) / 16 | 0][ch % 8];\n else thischar = thischar.toUpperCase();\n } else if (lowerrest) thischar = thischar.toLowerCase();\n return prev + thischar;\n }, \"\"), 1);\n }\n function glk_buffer_canon_decompose_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, (str)=>str.normalize(\"NFD\"));\n }\n function glk_buffer_canon_normalize_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, (str)=>str.normalize(\"NFC\"));\n }\n function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async ()=>{\n if (!Module.emglken_stdin_buffers.length) await new Promise((resolve)=>{\n Module.emglken_stdin_ready = resolve;\n });\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) HEAPU8.set(input, buffer);\n else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n }\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n }\n function callRuntimeCallbacks(callbacks) {\n while(callbacks.length > 0)callbacks.shift()(Module);\n }\n var PATH = {\n isAbs: (path)=>path.charAt(0) === \"/\",\n splitPath: (filename)=>{\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot)=>{\n var up = 0;\n for(var i = parts.length - 1; i >= 0; i--){\n var last = parts[i];\n if (last === \".\") parts.splice(i, 1);\n else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) for(; up; up--)parts.unshift(\"..\");\n return parts;\n },\n normalize: (path)=>{\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p)=>!!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) path = \".\";\n if (path && trailingSlash) path += \"/\";\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: (path)=>{\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) return \".\";\n if (dir) dir = dir.substr(0, dir.length - 1);\n return root + dir;\n },\n basename: (path)=>{\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r)=>{\n return PATH.normalize(l + \"/\" + r);\n }\n };\n function getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return ()=>{\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return ()=>abort(\"randomDevice\");\n }\n var PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for(var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--){\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") throw new TypeError(\"Arguments to path.resolve must be strings\");\n else if (!path) return \"\";\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p)=>!!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to)=>{\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for(; start < arr.length; start++){\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for(; end >= 0; end--){\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for(var i = 0; i < length; i++)if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n var outputParts = [];\n for(var i = samePartsLength; i < fromParts.length; i++)outputParts.push(\"..\");\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n var TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) throw new FS.ErrnoError(43);\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) throw new FS.ErrnoError(60);\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) throw new FS.ErrnoError(60);\n try {\n for(var i = 0; i < length; i++)stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) result += \"\\n\";\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) result += \"\\n\";\n }\n if (!result) return null;\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n };\n function mmapAlloc(size) {\n abort();\n }\n var MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16895, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) throw new FS.ErrnoError(63);\n if (!MEMFS.ops_table) MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1048576;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) attr.size = 4096;\n else if (FS.isFile(node.mode)) attr.size = node.usedBytes;\n else if (FS.isLink(node.mode)) attr.size = node.link.length;\n else attr.size = 0;\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) node.mode = attr.mode;\n if (attr.timestamp !== undefined) node.timestamp = attr.timestamp;\n if (attr.size !== undefined) MEMFS.resizeFileStorage(node, attr.size);\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for(var i in new_node.contents)throw new FS.ErrnoError(55);\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for(var i in node.contents)throw new FS.ErrnoError(55);\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [\n \".\",\n \"..\"\n ];\n for(var key in node.contents){\n if (!node.contents.hasOwnProperty(key)) continue;\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 41471, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) throw new FS.ErrnoError(28);\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) buffer.set(contents.subarray(position, position + size), offset);\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) canOwn = false;\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);\n else for(var i = 0; i < length; i++)node.contents[position + i] = buffer[offset + i];\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) position += stream.position;\n else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) position += stream.node.usedBytes;\n }\n if (position < 0) throw new FS.ErrnoError(28);\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) contents = contents.subarray(position, position + length);\n else contents = Array.prototype.slice.call(contents, position, position + length);\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n };\n function asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, (arrayBuffer)=>{\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, (event)=>{\n if (onerror) onerror();\n else throw 'Loading data file \"' + url + '\" failed.';\n });\n if (dep) addRunDependency(dep);\n }\n var FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {})=>{\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) throw new FS.ErrnoError(32);\n var parts = path.split(\"/\").filter((p)=>!!p);\n var current = FS.root;\n var current_path = \"/\";\n for(var i = 0; i < parts.length; i++){\n var islast = i === parts.length - 1;\n if (islast && opts.parent) break;\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) current = current.mounted.root;\n }\n if (!islast || opts.follow) {\n var count = 0;\n while(FS.isLink(current.mode)){\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) throw new FS.ErrnoError(32);\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: (node)=>{\n var path;\n while(true){\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name)=>{\n var hash = 0;\n for(var i = 0; i < name.length; i++)hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) FS.nameTable[hash] = node.name_next;\n else {\n var current = FS.nameTable[hash];\n while(current){\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name)=>{\n var errCode = FS.mayLookup(parent);\n if (errCode) throw new FS.ErrnoError(errCode, parent);\n var hash = FS.hashName(parent.id, name);\n for(var node = FS.nameTable[hash]; node; node = node.name_next){\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) return node;\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev)=>{\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: (node)=>{\n FS.hashRemoveNode(node);\n },\n isRoot: (node)=>{\n return node === node.parent;\n },\n isMountpoint: (node)=>{\n return !!node.mounted;\n },\n isFile: (mode)=>{\n return (mode & 61440) === 32768;\n },\n isDir: (mode)=>{\n return (mode & 61440) === 16384;\n },\n isLink: (mode)=>{\n return (mode & 61440) === 40960;\n },\n isChrdev: (mode)=>{\n return (mode & 61440) === 8192;\n },\n isBlkdev: (mode)=>{\n return (mode & 61440) === 24576;\n },\n isFIFO: (mode)=>{\n return (mode & 61440) === 4096;\n },\n isSocket: (mode)=>{\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: (str)=>{\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") throw new Error(\"Unknown file open mode: \" + str);\n return flags;\n },\n flagsToPermissionString: (flag)=>{\n var perms = [\n \"r\",\n \"w\",\n \"rw\"\n ][flag & 3];\n if (flag & 512) perms += \"w\";\n return perms;\n },\n nodePermissions: (node, perms)=>{\n if (FS.ignorePermissions) return 0;\n if (perms.includes(\"r\") && !(node.mode & 292)) return 2;\n else if (perms.includes(\"w\") && !(node.mode & 146)) return 2;\n else if (perms.includes(\"x\") && !(node.mode & 73)) return 2;\n return 0;\n },\n mayLookup: (dir)=>{\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name)=>{\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir)=>{\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) return errCode;\n if (isdir) {\n if (!FS.isDir(node.mode)) return 54;\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) return 10;\n } else {\n if (FS.isDir(node.mode)) return 31;\n }\n return 0;\n },\n mayOpen: (node, flags)=>{\n if (!node) return 44;\n if (FS.isLink(node.mode)) return 32;\n else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) return 31;\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS)=>{\n for(var fd = fd_start; fd <= fd_end; fd++){\n if (!FS.streams[fd]) return fd;\n }\n throw new FS.ErrnoError(33);\n },\n getStream: (fd)=>FS.streams[fd],\n createStream: (stream, fd_start, fd_end)=>{\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: (fd)=>{\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: (stream)=>{\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n },\n llseek: ()=>{\n throw new FS.ErrnoError(70);\n }\n },\n major: (dev)=>dev >> 8,\n minor: (dev)=>dev & 255,\n makedev: (ma, mi)=>ma << 8 | mi,\n registerDevice: (dev, ops)=>{\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: (dev)=>FS.devices[dev],\n getMounts: (mount)=>{\n var mounts = [];\n var check = [\n mount\n ];\n while(check.length){\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback)=>{\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) doCallback(null);\n }\n mounts.forEach((mount)=>{\n if (!mount.type.syncfs) return done(null);\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint)=>{\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) throw new FS.ErrnoError(10);\n else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n if (!FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) FS.root = mountRoot;\n else if (node) {\n node.mounted = mount;\n if (node.mount) node.mount.mounts.push(mount);\n }\n return mountRoot;\n },\n unmount: (mountpoint)=>{\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) throw new FS.ErrnoError(28);\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash)=>{\n var current = FS.nameTable[hash];\n while(current){\n var next = current.name_next;\n if (mounts.includes(current.mount)) FS.destroyNode(current);\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name)=>{\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") throw new FS.ErrnoError(28);\n var errCode = FS.mayCreate(parent, name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.mknod) throw new FS.ErrnoError(63);\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode)=>{\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode)=>{\n mode = mode !== undefined ? mode : 511;\n mode &= 1023;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode)=>{\n var dirs = path.split(\"/\");\n var d = \"\";\n for(var i = 0; i < dirs.length; ++i){\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev)=>{\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath)=>{\n if (!PATH_FS.resolve(oldpath)) throw new FS.ErrnoError(44);\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.symlink) throw new FS.ErrnoError(63);\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path)=>{\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) throw new FS.ErrnoError(75);\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(28);\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(55);\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) return;\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) throw new FS.ErrnoError(errCode);\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!old_dir.node_ops.rename) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) throw new FS.ErrnoError(10);\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally{\n FS.hashAddNode(old_node);\n }\n },\n rmdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.rmdir) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) throw new FS.ErrnoError(54);\n return node.node_ops.readdir(node);\n },\n unlink: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.unlink) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: (path)=>{\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) throw new FS.ErrnoError(44);\n if (!link.node_ops.readlink) throw new FS.ErrnoError(28);\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow)=>{\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) throw new FS.ErrnoError(44);\n if (!node.node_ops.getattr) throw new FS.ErrnoError(63);\n return node.node_ops.getattr(node);\n },\n lstat: (path)=>{\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & -4096,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode)=>{\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid)=>{\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len)=>{\n if (len < 0) throw new FS.ErrnoError(28);\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n if (FS.isDir(node.mode)) throw new FS.ErrnoError(31);\n if (!FS.isFile(node.mode)) throw new FS.ErrnoError(28);\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(28);\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode)=>{\n if (path === \"\") throw new FS.ErrnoError(44);\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) mode = mode & 4095 | 32768;\n else mode = 0;\n var node;\n if (typeof path == \"object\") node = path;\n else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) throw new FS.ErrnoError(20);\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) throw new FS.ErrnoError(44);\n if (FS.isChrdev(node.mode)) flags &= -513;\n if (flags & 65536 && !FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n if (flags & 512 && !created) FS.truncate(node, 0);\n flags &= -131713;\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) FS.readFiles[path] = 1;\n }\n return stream;\n },\n close: (stream)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) stream.stream_ops.close(stream);\n } catch (e) {\n throw e;\n } finally{\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: (stream)=>{\n return stream.fd === null;\n },\n llseek: (stream, offset, whence)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (!stream.seekable || !stream.stream_ops.llseek) throw new FS.ErrnoError(70);\n if (whence != 0 && whence != 1 && whence != 2) throw new FS.ErrnoError(28);\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.read) throw new FS.ErrnoError(28);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.write) throw new FS.ErrnoError(28);\n if (stream.seekable && stream.flags & 1024) FS.llseek(stream, 0, 2);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (offset < 0 || length <= 0) throw new FS.ErrnoError(28);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) throw new FS.ErrnoError(43);\n if (!stream.stream_ops.allocate) throw new FS.ErrnoError(138);\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags)=>{\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) throw new FS.ErrnoError(2);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(2);\n if (!stream.stream_ops.mmap) throw new FS.ErrnoError(43);\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags)=>{\n if (!stream.stream_ops.msync) return 0;\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: (stream)=>0,\n ioctl: (stream, cmd, arg)=>{\n if (!stream.stream_ops.ioctl) throw new FS.ErrnoError(59);\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {})=>{\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") ret = UTF8ArrayToString(buf, 0);\n else if (opts.encoding === \"binary\") ret = buf;\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {})=>{\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n else throw new Error(\"Unsupported data type\");\n FS.close(stream);\n },\n cwd: ()=>FS.currentPath,\n chdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) throw new FS.ErrnoError(44);\n if (!FS.isDir(lookup.node.mode)) throw new FS.ErrnoError(54);\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) throw new FS.ErrnoError(errCode);\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: ()=>{\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: ()=>{\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: ()=>0,\n write: (stream, buffer, offset, length, pos)=>length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: ()=>{\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: ()=>{\n var node = FS.createNode(proc_self, \"fd\", 16895, 73);\n node.node_ops = {\n lookup: (parent, name)=>{\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: ()=>stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: ()=>{\n if (Module[\"stdin\"]) FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n if (Module[\"stdout\"]) FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n if (Module[\"stderr\"]) FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n else FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: ()=>{\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [\n 44\n ].forEach((code)=>{\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: ()=>{\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error)=>{\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: ()=>{\n FS.init.initialized = false;\n _fflush(0);\n for(var i = 0; i < FS.streams.length; i++){\n var stream = FS.streams[i];\n if (!stream) continue;\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite)=>{\n var mode = 0;\n if (canRead) mode |= 365;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink)=>{\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) return null;\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink)=>{\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite)=>{\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while(parts.length){\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn)=>{\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for(var i = 0, len = data.length; i < len; ++i)arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: (stream)=>{\n stream.seekable = false;\n },\n close: (stream)=>{\n if (output && output.buffer && output.buffer.length) output(10);\n },\n read: (stream, buffer, offset, length, pos)=>{\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos)=>{\n for(var i = 0; i < length; i++)try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: (obj)=>{\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n else if (read_) try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n else throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n },\n createLazyFile: (parent, name, url, canRead, canWrite)=>{\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) return undefined;\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1048576;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to)=>{\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) return new Uint8Array(xhr.response || []);\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter((chunkNum)=>{\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") lazyArray.chunks[chunkNum] = doXHR(start, end);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else var properties = {\n isDevice: false,\n url: url\n };\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) node.contents = properties.contents;\n else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach((key)=>{\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents.get(position + i);\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position)=>{\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags)=>{\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish)=>{\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, ()=>{\n if (onerror) onerror();\n removeRunDependency(dep);\n })) return;\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") asyncLoad(url, (byteArray)=>processData(byteArray), onerror);\n else processData(url);\n },\n indexedDB: ()=>{\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: ()=>{\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = ()=>{\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = ()=>{\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n try {\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var getRequest = files.get(path);\n getRequest.onsuccess = ()=>{\n if (FS.analyzePath(path).exists) FS.unlink(path);\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n };\n var SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) return path;\n var dir;\n if (dirfd === -100) dir = FS.cwd();\n else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) throw new FS.ErrnoError(44);\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) return -54;\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [\n stat.size >>> 0,\n (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [\n Math.floor(atime / 1e3) >>> 0,\n (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(mtime / 1e3) >>> 0,\n (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(ctime / 1e3) >>> 0,\n (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [\n stat.ino >>> 0,\n (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n if (flags & 2) return 0;\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n };\n function ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & -8) return -28;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) return -44;\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) return -2;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n }\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(cmd){\n case 0:\n var arg = SYSCALLS.get();\n if (arg < 0) return -28;\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4:\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n case 5:\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(op){\n case 21509:\n case 21505:\n if (!stream.tty) return -59;\n return 0;\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n if (!stream.tty) return -59;\n return 0;\n case 21519:\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n case 21520:\n if (!stream.tty) return -59;\n return -28;\n case 21531:\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n case 21523:\n if (!stream.tty) return -59;\n return 0;\n case 21524:\n if (!stream.tty) return -59;\n return 0;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_unlinkat(dirfd, path, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (flags === 0) FS.unlink(path);\n else if (flags === 512) FS.rmdir(path);\n else abort(\"Invalid flags passed to unlinkat\");\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var nowIsMonotonic = true;\n function __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n }\n function __emscripten_throw_longjmp() {\n throw Infinity;\n }\n function readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n }\n function __gmtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getUTCSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getUTCHours();\n HEAP32[tmPtr + 12 >> 2] = date.getUTCDate();\n HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / 86400000 | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n }\n function __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n }\n var __MONTH_DAYS_LEAP_CUMULATIVE = [\n 0,\n 31,\n 60,\n 91,\n 121,\n 152,\n 182,\n 213,\n 244,\n 274,\n 305,\n 335\n ];\n var __MONTH_DAYS_REGULAR_CUMULATIVE = [\n 0,\n 31,\n 59,\n 90,\n 120,\n 151,\n 181,\n 212,\n 243,\n 273,\n 304,\n 334\n ];\n function __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n }\n function __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n }\n function __mktime_js(tmPtr) {\n var date = new Date(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0);\n var dst = HEAP32[tmPtr + 32 >> 2];\n var guessedOffset = date.getTimezoneOffset();\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dstOffset = Math.min(winterOffset, summerOffset);\n if (dst < 0) HEAP32[tmPtr + 32 >> 2] = Number(summerOffset != winterOffset && dstOffset == guessedOffset);\n else if (dst > 0 != (dstOffset == guessedOffset)) {\n var nonDstOffset = Math.max(winterOffset, summerOffset);\n var trueOffset = dst > 0 ? dstOffset : nonDstOffset;\n date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4);\n }\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getYear();\n return date.getTime() / 1e3 | 0;\n }\n function __timegm_js(tmPtr) {\n var time = Date.UTC(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0);\n var date = new Date(time);\n HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / 86400000 | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n return date.getTime() / 1e3 | 0;\n }\n function allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n }\n function _emscripten_date_now() {\n return Date.now();\n }\n var _emscripten_get_now;\n _emscripten_get_now = ()=>performance.now();\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n }\n function getHeapMax() {\n return 2147483648;\n }\n function emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) return false;\n let alignUp = (x, multiple)=>x + (multiple - x % multiple) % multiple;\n for(var cutDown = 1; cutDown <= 4; cutDown *= 2){\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) return true;\n }\n return false;\n }\n function _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n }\n function exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) exitRuntime();\n _proc_exit(status);\n }\n var _exit = exitJS;\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n }\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [\n stream.position >>> 0,\n (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") return EXITSTATUS;\n quit_(1, e);\n }\n function allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n }\n function maybeExit() {\n if (!keepRuntimeAlive()) try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n function callUserCallback(func) {\n if (runtimeExited || ABORT) return;\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n }\n function runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n }\n function runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n }\n var Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [\n \"emscripten_sleep\",\n \"emscripten_wget\",\n \"emscripten_wget_data\",\n \"emscripten_idb_load\",\n \"emscripten_idb_store\",\n \"emscripten_idb_delete\",\n \"emscripten_idb_exists\",\n \"emscripten_idb_load_blob\",\n \"emscripten_idb_store_blob\",\n \"SDL_Delay\",\n \"emscripten_scan_registers\",\n \"emscripten_lazy_load_code\",\n \"emscripten_fiber_swap\",\n \"__load_secondary_module\",\n \"fd_sync\",\n \"__wasi_fd_sync\",\n \"_emval_await\",\n \"_dlopen_js\",\n \"__asyncjs__*\"\n ];\n for(var x in imports)(function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n })(x);\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for(var x in exports)(function(x) {\n var original = exports[x];\n if (typeof original == \"function\") ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally{\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n else ret[x] = original;\n })(x);\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") Fibers.trampoline();\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject)=>{\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0)=>{\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) return;\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.resume();\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) throw asyncWasmReturnValue;\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.pause();\n runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach((func)=>callUserCallback(func));\n } else abort(\"invalid state: \" + Asyncify.state);\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep((wakeUp)=>{\n startAsync().then(wakeUp);\n });\n }\n };\n function AsciiToString(ptr) {\n var str = \"\";\n while(true){\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n }\n var FSNode = function(parent, name, mode, rdev) {\n if (!parent) parent = this;\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n var readMode = 365;\n var writeMode = 146;\n Object.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n });\n FS.FSNode = FSNode;\n FS.staticInit();\n var wasmImports = {\n \"q\": __asyncjs__emglken_fill_stdin_buffer,\n \"D\": ___syscall_faccessat,\n \"l\": ___syscall_fcntl64,\n \"C\": ___syscall_getcwd,\n \"B\": ___syscall_ioctl,\n \"k\": ___syscall_openat,\n \"A\": ___syscall_stat64,\n \"z\": ___syscall_unlinkat,\n \"x\": __emscripten_get_now_is_monotonic,\n \"w\": __emscripten_throw_longjmp,\n \"v\": __gmtime_js,\n \"u\": __localtime_js,\n \"t\": __mktime_js,\n \"s\": __timegm_js,\n \"r\": __tzset_js,\n \"i\": _emscripten_date_now,\n \"p\": _emscripten_memcpy_big,\n \"o\": _emscripten_resize_heap,\n \"a\": _exit,\n \"c\": _fd_close,\n \"y\": _fd_read,\n \"m\": _fd_seek,\n \"j\": _fd_write,\n \"h\": glk_buffer_canon_decompose_uni,\n \"g\": glk_buffer_canon_normalize_uni,\n \"f\": glk_buffer_to_lower_case_uni,\n \"e\": glk_buffer_to_title_case_uni,\n \"d\": glk_buffer_to_upper_case_uni,\n \"n\": invoke_vi,\n \"b\": invoke_vii\n };\n var asm = createWasm();\n var ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"F\"]).apply(null, arguments);\n };\n var _malloc = function() {\n return (_malloc = Module[\"asm\"][\"G\"]).apply(null, arguments);\n };\n var _free = function() {\n return (_free = Module[\"asm\"][\"H\"]).apply(null, arguments);\n };\n var _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"I\"]).apply(null, arguments);\n };\n var _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"J\"]).apply(null, arguments);\n };\n var _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"K\"]).apply(null, arguments);\n };\n var ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"L\"]).apply(null, arguments);\n };\n var ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"M\"]).apply(null, arguments);\n };\n var _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"O\"]).apply(null, arguments);\n };\n var _saveSetjmp = function() {\n return (_saveSetjmp = Module[\"asm\"][\"saveSetjmp\"]).apply(null, arguments);\n };\n var _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n };\n var stackSave = function() {\n return (stackSave = Module[\"asm\"][\"P\"]).apply(null, arguments);\n };\n var stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"Q\"]).apply(null, arguments);\n };\n var stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"R\"]).apply(null, arguments);\n };\n var dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"S\"]).apply(null, arguments);\n };\n var dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"T\"]).apply(null, arguments);\n };\n var _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"U\"]).apply(null, arguments);\n };\n var _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"V\"]).apply(null, arguments);\n };\n var _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"W\"]).apply(null, arguments);\n };\n var _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"X\"]).apply(null, arguments);\n };\n var ___start_em_js = Module[\"___start_em_js\"] = 33568;\n var ___stop_em_js = Module[\"___stop_em_js\"] = 36253;\n function invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n Module[\"AsciiToString\"] = AsciiToString;\n Module[\"FS\"] = FS;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach((arg)=>{\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n }\n function run(args = arguments_) {\n if (runDependencies > 0) return;\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else doRun();\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [\n Module[\"preInit\"]\n ];\n while(Module[\"preInit\"].length > 0)Module[\"preInit\"].pop()();\n }\n var shouldRunNow = true;\n if (Module[\"noInitialRun\"]) shouldRunNow = false;\n run();\n return Module.ready;\n };\n})();\nvar $70d4325860634496$export$2e2bcd8739ae039 = $70d4325860634496$var$Module;\n\n\nclass $dd4718defa50fa2b$export$2e2bcd8739ae039 extends (0, $0d34edacac7ea588$export$2e2bcd8739ae039) {\n default_options() {\n return {\n vmcore: (0, $70d4325860634496$export$2e2bcd8739ae039)\n };\n }\n}\n\n\n/*\n\nEmglken port of Hugo\n====================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ \nvar $57e022dac828c602$exports = {};\n\n$57e022dac828c602$exports = new URL((parcelRequire(\"6MsPj\")).resolve(\"ida9s\"), import.meta.url).toString();\n\n\nvar $bc076b4214ff7fe6$var$Module = (()=>{\n var _scriptDir = \"file:///node_modules/emglken/build/hugo-core.js\";\n return function(Module = {}) {\n var Module = typeof Module != \"undefined\" ? Module : {};\n var readyPromiseResolve, readyPromiseReject;\n Module[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow)=>{\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary, setWindowTitle;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) scriptDirectory = self.location.href;\n else if (typeof document != \"undefined\" && document.currentScript) scriptDirectory = document.currentScript.src;\n if (_scriptDir) scriptDirectory = _scriptDir;\n if (scriptDirectory.indexOf(\"blob:\") !== 0) scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n else scriptDirectory = \"\";\n read_ = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) readBinary = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n readAsync = (url, onload, onerror)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = ()=>{\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n setWindowTitle = (title)=>document.title = title;\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n var wasmBinary;\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n var noExitRuntime = Module[\"noExitRuntime\"] || false;\n if (typeof WebAssembly != \"object\") abort(\"no native wasm support detected\");\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) abort(text);\n }\n var UTF8Decoder = new TextDecoder(\"utf8\");\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while(heapOrArray[endPtr] && !(endPtr >= endIdx))++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for(var end = ptr; !(end >= maxPtr) && HEAPU8[end];)++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n }\n function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for(var i = 0; i < str.length; ++i){\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n function lengthBytesUTF8(str) {\n var len = 0;\n for(var i = 0; i < str.length; ++i){\n var c = str.charCodeAt(i);\n if (c <= 127) len++;\n else if (c <= 2047) len += 2;\n else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else len += 3;\n }\n return len;\n }\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var wasmTable;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATEXIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n var runtimeKeepaliveCounter = 0;\n function keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [\n Module[\"preRun\"]\n ];\n while(Module[\"preRun\"].length)addOnPreRun(Module[\"preRun\"].shift());\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n }\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n function exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [\n Module[\"postRun\"]\n ];\n while(Module[\"postRun\"].length)addOnPostRun(Module[\"postRun\"].shift());\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n if (Module[\"onAbort\"]) Module[\"onAbort\"](what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n if (Module[\"locateFile\"]) {\n wasmBinaryFile = \"hugo-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) wasmBinaryFile = locateFile(wasmBinaryFile);\n } else wasmBinaryFile = new URL($57e022dac828c602$exports).href;\n function getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary);\n if (readBinary) return readBinary(file);\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n }\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n else return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n function createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"t\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"C\"];\n addOnInit(Module[\"asm\"][\"u\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n }\n var tempDouble;\n var tempI64;\n function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async ()=>{\n if (!Module.emglken_stdin_buffers.length) await new Promise((resolve)=>{\n Module.emglken_stdin_ready = resolve;\n });\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) HEAPU8.set(input, buffer);\n else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n }\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n }\n function callRuntimeCallbacks(callbacks) {\n while(callbacks.length > 0)callbacks.shift()(Module);\n }\n var PATH = {\n isAbs: (path)=>path.charAt(0) === \"/\",\n splitPath: (filename)=>{\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot)=>{\n var up = 0;\n for(var i = parts.length - 1; i >= 0; i--){\n var last = parts[i];\n if (last === \".\") parts.splice(i, 1);\n else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) for(; up; up--)parts.unshift(\"..\");\n return parts;\n },\n normalize: (path)=>{\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p)=>!!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) path = \".\";\n if (path && trailingSlash) path += \"/\";\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: (path)=>{\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) return \".\";\n if (dir) dir = dir.substr(0, dir.length - 1);\n return root + dir;\n },\n basename: (path)=>{\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r)=>{\n return PATH.normalize(l + \"/\" + r);\n }\n };\n function getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return ()=>{\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return ()=>abort(\"randomDevice\");\n }\n var PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for(var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--){\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") throw new TypeError(\"Arguments to path.resolve must be strings\");\n else if (!path) return \"\";\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p)=>!!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to)=>{\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for(; start < arr.length; start++){\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for(; end >= 0; end--){\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for(var i = 0; i < length; i++)if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n var outputParts = [];\n for(var i = samePartsLength; i < fromParts.length; i++)outputParts.push(\"..\");\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n var TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) throw new FS.ErrnoError(43);\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) throw new FS.ErrnoError(60);\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) throw new FS.ErrnoError(60);\n try {\n for(var i = 0; i < length; i++)stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) result += \"\\n\";\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) result += \"\\n\";\n }\n if (!result) return null;\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n };\n function mmapAlloc(size) {\n abort();\n }\n var MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16895, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) throw new FS.ErrnoError(63);\n if (!MEMFS.ops_table) MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1048576;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) attr.size = 4096;\n else if (FS.isFile(node.mode)) attr.size = node.usedBytes;\n else if (FS.isLink(node.mode)) attr.size = node.link.length;\n else attr.size = 0;\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) node.mode = attr.mode;\n if (attr.timestamp !== undefined) node.timestamp = attr.timestamp;\n if (attr.size !== undefined) MEMFS.resizeFileStorage(node, attr.size);\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for(var i in new_node.contents)throw new FS.ErrnoError(55);\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for(var i in node.contents)throw new FS.ErrnoError(55);\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [\n \".\",\n \"..\"\n ];\n for(var key in node.contents){\n if (!node.contents.hasOwnProperty(key)) continue;\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 41471, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) throw new FS.ErrnoError(28);\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) buffer.set(contents.subarray(position, position + size), offset);\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) canOwn = false;\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);\n else for(var i = 0; i < length; i++)node.contents[position + i] = buffer[offset + i];\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) position += stream.position;\n else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) position += stream.node.usedBytes;\n }\n if (position < 0) throw new FS.ErrnoError(28);\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) contents = contents.subarray(position, position + length);\n else contents = Array.prototype.slice.call(contents, position, position + length);\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n };\n function asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, (arrayBuffer)=>{\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, (event)=>{\n if (onerror) onerror();\n else throw 'Loading data file \"' + url + '\" failed.';\n });\n if (dep) addRunDependency(dep);\n }\n var FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {})=>{\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) throw new FS.ErrnoError(32);\n var parts = path.split(\"/\").filter((p)=>!!p);\n var current = FS.root;\n var current_path = \"/\";\n for(var i = 0; i < parts.length; i++){\n var islast = i === parts.length - 1;\n if (islast && opts.parent) break;\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) current = current.mounted.root;\n }\n if (!islast || opts.follow) {\n var count = 0;\n while(FS.isLink(current.mode)){\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) throw new FS.ErrnoError(32);\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: (node)=>{\n var path;\n while(true){\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name)=>{\n var hash = 0;\n for(var i = 0; i < name.length; i++)hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) FS.nameTable[hash] = node.name_next;\n else {\n var current = FS.nameTable[hash];\n while(current){\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name)=>{\n var errCode = FS.mayLookup(parent);\n if (errCode) throw new FS.ErrnoError(errCode, parent);\n var hash = FS.hashName(parent.id, name);\n for(var node = FS.nameTable[hash]; node; node = node.name_next){\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) return node;\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev)=>{\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: (node)=>{\n FS.hashRemoveNode(node);\n },\n isRoot: (node)=>{\n return node === node.parent;\n },\n isMountpoint: (node)=>{\n return !!node.mounted;\n },\n isFile: (mode)=>{\n return (mode & 61440) === 32768;\n },\n isDir: (mode)=>{\n return (mode & 61440) === 16384;\n },\n isLink: (mode)=>{\n return (mode & 61440) === 40960;\n },\n isChrdev: (mode)=>{\n return (mode & 61440) === 8192;\n },\n isBlkdev: (mode)=>{\n return (mode & 61440) === 24576;\n },\n isFIFO: (mode)=>{\n return (mode & 61440) === 4096;\n },\n isSocket: (mode)=>{\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: (str)=>{\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") throw new Error(\"Unknown file open mode: \" + str);\n return flags;\n },\n flagsToPermissionString: (flag)=>{\n var perms = [\n \"r\",\n \"w\",\n \"rw\"\n ][flag & 3];\n if (flag & 512) perms += \"w\";\n return perms;\n },\n nodePermissions: (node, perms)=>{\n if (FS.ignorePermissions) return 0;\n if (perms.includes(\"r\") && !(node.mode & 292)) return 2;\n else if (perms.includes(\"w\") && !(node.mode & 146)) return 2;\n else if (perms.includes(\"x\") && !(node.mode & 73)) return 2;\n return 0;\n },\n mayLookup: (dir)=>{\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name)=>{\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir)=>{\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) return errCode;\n if (isdir) {\n if (!FS.isDir(node.mode)) return 54;\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) return 10;\n } else {\n if (FS.isDir(node.mode)) return 31;\n }\n return 0;\n },\n mayOpen: (node, flags)=>{\n if (!node) return 44;\n if (FS.isLink(node.mode)) return 32;\n else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) return 31;\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS)=>{\n for(var fd = fd_start; fd <= fd_end; fd++){\n if (!FS.streams[fd]) return fd;\n }\n throw new FS.ErrnoError(33);\n },\n getStream: (fd)=>FS.streams[fd],\n createStream: (stream, fd_start, fd_end)=>{\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: (fd)=>{\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: (stream)=>{\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n },\n llseek: ()=>{\n throw new FS.ErrnoError(70);\n }\n },\n major: (dev)=>dev >> 8,\n minor: (dev)=>dev & 255,\n makedev: (ma, mi)=>ma << 8 | mi,\n registerDevice: (dev, ops)=>{\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: (dev)=>FS.devices[dev],\n getMounts: (mount)=>{\n var mounts = [];\n var check = [\n mount\n ];\n while(check.length){\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback)=>{\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) doCallback(null);\n }\n mounts.forEach((mount)=>{\n if (!mount.type.syncfs) return done(null);\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint)=>{\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) throw new FS.ErrnoError(10);\n else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n if (!FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) FS.root = mountRoot;\n else if (node) {\n node.mounted = mount;\n if (node.mount) node.mount.mounts.push(mount);\n }\n return mountRoot;\n },\n unmount: (mountpoint)=>{\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) throw new FS.ErrnoError(28);\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash)=>{\n var current = FS.nameTable[hash];\n while(current){\n var next = current.name_next;\n if (mounts.includes(current.mount)) FS.destroyNode(current);\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name)=>{\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") throw new FS.ErrnoError(28);\n var errCode = FS.mayCreate(parent, name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.mknod) throw new FS.ErrnoError(63);\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode)=>{\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode)=>{\n mode = mode !== undefined ? mode : 511;\n mode &= 1023;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode)=>{\n var dirs = path.split(\"/\");\n var d = \"\";\n for(var i = 0; i < dirs.length; ++i){\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev)=>{\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath)=>{\n if (!PATH_FS.resolve(oldpath)) throw new FS.ErrnoError(44);\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.symlink) throw new FS.ErrnoError(63);\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path)=>{\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) throw new FS.ErrnoError(75);\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(28);\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(55);\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) return;\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) throw new FS.ErrnoError(errCode);\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!old_dir.node_ops.rename) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) throw new FS.ErrnoError(10);\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally{\n FS.hashAddNode(old_node);\n }\n },\n rmdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.rmdir) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) throw new FS.ErrnoError(54);\n return node.node_ops.readdir(node);\n },\n unlink: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.unlink) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: (path)=>{\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) throw new FS.ErrnoError(44);\n if (!link.node_ops.readlink) throw new FS.ErrnoError(28);\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow)=>{\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) throw new FS.ErrnoError(44);\n if (!node.node_ops.getattr) throw new FS.ErrnoError(63);\n return node.node_ops.getattr(node);\n },\n lstat: (path)=>{\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & -4096,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode)=>{\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid)=>{\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len)=>{\n if (len < 0) throw new FS.ErrnoError(28);\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n if (FS.isDir(node.mode)) throw new FS.ErrnoError(31);\n if (!FS.isFile(node.mode)) throw new FS.ErrnoError(28);\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(28);\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode)=>{\n if (path === \"\") throw new FS.ErrnoError(44);\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) mode = mode & 4095 | 32768;\n else mode = 0;\n var node;\n if (typeof path == \"object\") node = path;\n else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) throw new FS.ErrnoError(20);\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) throw new FS.ErrnoError(44);\n if (FS.isChrdev(node.mode)) flags &= -513;\n if (flags & 65536 && !FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n if (flags & 512 && !created) FS.truncate(node, 0);\n flags &= -131713;\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) FS.readFiles[path] = 1;\n }\n return stream;\n },\n close: (stream)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) stream.stream_ops.close(stream);\n } catch (e) {\n throw e;\n } finally{\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: (stream)=>{\n return stream.fd === null;\n },\n llseek: (stream, offset, whence)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (!stream.seekable || !stream.stream_ops.llseek) throw new FS.ErrnoError(70);\n if (whence != 0 && whence != 1 && whence != 2) throw new FS.ErrnoError(28);\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.read) throw new FS.ErrnoError(28);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.write) throw new FS.ErrnoError(28);\n if (stream.seekable && stream.flags & 1024) FS.llseek(stream, 0, 2);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (offset < 0 || length <= 0) throw new FS.ErrnoError(28);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) throw new FS.ErrnoError(43);\n if (!stream.stream_ops.allocate) throw new FS.ErrnoError(138);\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags)=>{\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) throw new FS.ErrnoError(2);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(2);\n if (!stream.stream_ops.mmap) throw new FS.ErrnoError(43);\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags)=>{\n if (!stream.stream_ops.msync) return 0;\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: (stream)=>0,\n ioctl: (stream, cmd, arg)=>{\n if (!stream.stream_ops.ioctl) throw new FS.ErrnoError(59);\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {})=>{\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") ret = UTF8ArrayToString(buf, 0);\n else if (opts.encoding === \"binary\") ret = buf;\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {})=>{\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n else throw new Error(\"Unsupported data type\");\n FS.close(stream);\n },\n cwd: ()=>FS.currentPath,\n chdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) throw new FS.ErrnoError(44);\n if (!FS.isDir(lookup.node.mode)) throw new FS.ErrnoError(54);\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) throw new FS.ErrnoError(errCode);\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: ()=>{\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: ()=>{\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: ()=>0,\n write: (stream, buffer, offset, length, pos)=>length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: ()=>{\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: ()=>{\n var node = FS.createNode(proc_self, \"fd\", 16895, 73);\n node.node_ops = {\n lookup: (parent, name)=>{\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: ()=>stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: ()=>{\n if (Module[\"stdin\"]) FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n if (Module[\"stdout\"]) FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n if (Module[\"stderr\"]) FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n else FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: ()=>{\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [\n 44\n ].forEach((code)=>{\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: ()=>{\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error)=>{\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: ()=>{\n FS.init.initialized = false;\n _fflush(0);\n for(var i = 0; i < FS.streams.length; i++){\n var stream = FS.streams[i];\n if (!stream) continue;\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite)=>{\n var mode = 0;\n if (canRead) mode |= 365;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink)=>{\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) return null;\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink)=>{\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite)=>{\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while(parts.length){\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn)=>{\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for(var i = 0, len = data.length; i < len; ++i)arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: (stream)=>{\n stream.seekable = false;\n },\n close: (stream)=>{\n if (output && output.buffer && output.buffer.length) output(10);\n },\n read: (stream, buffer, offset, length, pos)=>{\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos)=>{\n for(var i = 0; i < length; i++)try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: (obj)=>{\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n else if (read_) try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n else throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n },\n createLazyFile: (parent, name, url, canRead, canWrite)=>{\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) return undefined;\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1048576;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to)=>{\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) return new Uint8Array(xhr.response || []);\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter((chunkNum)=>{\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") lazyArray.chunks[chunkNum] = doXHR(start, end);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else var properties = {\n isDevice: false,\n url: url\n };\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) node.contents = properties.contents;\n else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach((key)=>{\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents.get(position + i);\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position)=>{\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags)=>{\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish)=>{\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, ()=>{\n if (onerror) onerror();\n removeRunDependency(dep);\n })) return;\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") asyncLoad(url, (byteArray)=>processData(byteArray), onerror);\n else processData(url);\n },\n indexedDB: ()=>{\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: ()=>{\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = ()=>{\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = ()=>{\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n try {\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var getRequest = files.get(path);\n getRequest.onsuccess = ()=>{\n if (FS.analyzePath(path).exists) FS.unlink(path);\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n };\n var SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) return path;\n var dir;\n if (dirfd === -100) dir = FS.cwd();\n else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) throw new FS.ErrnoError(44);\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) return -54;\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [\n stat.size >>> 0,\n (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [\n Math.floor(atime / 1e3) >>> 0,\n (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(mtime / 1e3) >>> 0,\n (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(ctime / 1e3) >>> 0,\n (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [\n stat.ino >>> 0,\n (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n if (flags & 2) return 0;\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n };\n function ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & -8) return -28;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) return -44;\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) return -2;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n }\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(cmd){\n case 0:\n var arg = SYSCALLS.get();\n if (arg < 0) return -28;\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4:\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n case 5:\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(op){\n case 21509:\n case 21505:\n if (!stream.tty) return -59;\n return 0;\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n if (!stream.tty) return -59;\n return 0;\n case 21519:\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n case 21520:\n if (!stream.tty) return -59;\n return -28;\n case 21531:\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n case 21523:\n if (!stream.tty) return -59;\n return 0;\n case 21524:\n if (!stream.tty) return -59;\n return 0;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var nowIsMonotonic = true;\n function __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n }\n function readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n }\n function __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n }\n var __MONTH_DAYS_LEAP_CUMULATIVE = [\n 0,\n 31,\n 60,\n 91,\n 121,\n 152,\n 182,\n 213,\n 244,\n 274,\n 305,\n 335\n ];\n var __MONTH_DAYS_REGULAR_CUMULATIVE = [\n 0,\n 31,\n 59,\n 90,\n 120,\n 151,\n 181,\n 212,\n 243,\n 273,\n 304,\n 334\n ];\n function __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n }\n function __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n }\n function allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n }\n function _emscripten_date_now() {\n return Date.now();\n }\n var _emscripten_get_now;\n _emscripten_get_now = ()=>performance.now();\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n }\n function getHeapMax() {\n return 2147483648;\n }\n function emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) return false;\n let alignUp = (x, multiple)=>x + (multiple - x % multiple) % multiple;\n for(var cutDown = 1; cutDown <= 4; cutDown *= 2){\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) return true;\n }\n return false;\n }\n function _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n }\n function exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) exitRuntime();\n _proc_exit(status);\n }\n var _exit = exitJS;\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n }\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [\n stream.position >>> 0,\n (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function __arraySum(array, index) {\n var sum = 0;\n for(var i = 0; i <= index; sum += array[i++]);\n return sum;\n }\n var __MONTH_DAYS_LEAP = [\n 31,\n 29,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n ];\n var __MONTH_DAYS_REGULAR = [\n 31,\n 28,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n ];\n function __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while(days > 0){\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) newDate.setMonth(currentMonth + 1);\n else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n }\n function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }\n function _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\"\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for(var rule in EXPANSION_RULES_1)pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n var WEEKDAYS = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ];\n var MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ];\n function leadingSomething(value, digits, character) {\n var str = typeof value == \"number\" ? value.toString() : value || \"\";\n while(str.length < digits)str = character[0] + str;\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) compare = sgn(date1.getDate() - date2.getDate());\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch(janFourth.getDay()){\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n case 1:\n return janFourth;\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) return thisDate.getFullYear() + 1;\n return thisDate.getFullYear();\n }\n return thisDate.getFullYear() - 1;\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function(date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function(date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function(date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function(date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function(date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n \"%d\": function(date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function(date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function(date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function(date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function(date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function(date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12;\n else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function(date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n \"%m\": function(date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function(date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function() {\n return \"\\n\";\n },\n \"%p\": function(date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) return \"AM\";\n return \"PM\";\n },\n \"%S\": function(date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function() {\n return \"\t\";\n },\n \"%u\": function(date) {\n return date.tm_wday || 7;\n },\n \"%U\": function(date) {\n var days = date.tm_yday + 7 - date.tm_wday;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%V\": function(date) {\n var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7);\n if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) val++;\n if (!val) {\n val = 52;\n var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;\n if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) val++;\n } else if (val == 53) {\n var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;\n if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1;\n }\n return leadingNulls(val, 2);\n },\n \"%w\": function(date) {\n return date.tm_wday;\n },\n \"%W\": function(date) {\n var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%y\": function(date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function(date) {\n return date.tm_year + 1900;\n },\n \"%z\": function(date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function(date) {\n return date.tm_zone;\n },\n \"%%\": function() {\n return \"%\";\n }\n };\n pattern = pattern.replace(/%%/g, \"\\x00\\x00\");\n for(var rule in EXPANSION_RULES_2)if (pattern.includes(rule)) pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_2[rule](date));\n pattern = pattern.replace(/\\0\\0/g, \"%\");\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) return 0;\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n }\n function handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") return EXITSTATUS;\n quit_(1, e);\n }\n function allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n }\n function maybeExit() {\n if (!keepRuntimeAlive()) try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n function callUserCallback(func) {\n if (runtimeExited || ABORT) return;\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n }\n function runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n }\n function runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n }\n var Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [\n \"emscripten_sleep\",\n \"emscripten_wget\",\n \"emscripten_wget_data\",\n \"emscripten_idb_load\",\n \"emscripten_idb_store\",\n \"emscripten_idb_delete\",\n \"emscripten_idb_exists\",\n \"emscripten_idb_load_blob\",\n \"emscripten_idb_store_blob\",\n \"SDL_Delay\",\n \"emscripten_scan_registers\",\n \"emscripten_lazy_load_code\",\n \"emscripten_fiber_swap\",\n \"__load_secondary_module\",\n \"fd_sync\",\n \"__wasi_fd_sync\",\n \"_emval_await\",\n \"_dlopen_js\",\n \"__asyncjs__*\"\n ];\n for(var x in imports)(function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n })(x);\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for(var x in exports)(function(x) {\n var original = exports[x];\n if (typeof original == \"function\") ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally{\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n else ret[x] = original;\n })(x);\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") Fibers.trampoline();\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject)=>{\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0)=>{\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) return;\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.resume();\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) throw asyncWasmReturnValue;\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.pause();\n runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach((func)=>callUserCallback(func));\n } else abort(\"invalid state: \" + Asyncify.state);\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep((wakeUp)=>{\n startAsync().then(wakeUp);\n });\n }\n };\n function AsciiToString(ptr) {\n var str = \"\";\n while(true){\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n }\n var FSNode = function(parent, name, mode, rdev) {\n if (!parent) parent = this;\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n var readMode = 365;\n var writeMode = 146;\n Object.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n });\n FS.FSNode = FSNode;\n FS.staticInit();\n var wasmImports = {\n \"j\": __asyncjs__emglken_fill_stdin_buffer,\n \"s\": ___syscall_faccessat,\n \"e\": ___syscall_fcntl64,\n \"r\": ___syscall_getcwd,\n \"q\": ___syscall_ioctl,\n \"p\": ___syscall_openat,\n \"o\": ___syscall_stat64,\n \"m\": __emscripten_get_now_is_monotonic,\n \"l\": __localtime_js,\n \"k\": __tzset_js,\n \"b\": _emscripten_date_now,\n \"i\": _emscripten_memcpy_big,\n \"h\": _emscripten_resize_heap,\n \"a\": _exit,\n \"d\": _fd_close,\n \"n\": _fd_read,\n \"g\": _fd_seek,\n \"c\": _fd_write,\n \"f\": _strftime\n };\n var asm = createWasm();\n var ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"u\"]).apply(null, arguments);\n };\n var _malloc = function() {\n return (_malloc = Module[\"asm\"][\"v\"]).apply(null, arguments);\n };\n var _free = function() {\n return (_free = Module[\"asm\"][\"w\"]).apply(null, arguments);\n };\n var _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"x\"]).apply(null, arguments);\n };\n var _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"y\"]).apply(null, arguments);\n };\n var _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"z\"]).apply(null, arguments);\n };\n var ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"A\"]).apply(null, arguments);\n };\n var ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"B\"]).apply(null, arguments);\n };\n var _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n };\n var stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"D\"]).apply(null, arguments);\n };\n var _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"E\"]).apply(null, arguments);\n };\n var _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"F\"]).apply(null, arguments);\n };\n var _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"G\"]).apply(null, arguments);\n };\n var _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"H\"]).apply(null, arguments);\n };\n var ___start_em_js = Module[\"___start_em_js\"] = 18128;\n var ___stop_em_js = Module[\"___stop_em_js\"] = 20813;\n Module[\"AsciiToString\"] = AsciiToString;\n Module[\"FS\"] = FS;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach((arg)=>{\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n }\n function run(args = arguments_) {\n if (runDependencies > 0) return;\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else doRun();\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [\n Module[\"preInit\"]\n ];\n while(Module[\"preInit\"].length > 0)Module[\"preInit\"].pop()();\n }\n var shouldRunNow = true;\n if (Module[\"noInitialRun\"]) shouldRunNow = false;\n run();\n return Module.ready;\n };\n})();\nvar $bc076b4214ff7fe6$export$2e2bcd8739ae039 = $bc076b4214ff7fe6$var$Module;\n\n\nclass $15823016f6668df1$export$2e2bcd8739ae039 extends (0, $0d34edacac7ea588$export$2e2bcd8739ae039) {\n default_options() {\n return {\n vmcore: (0, $bc076b4214ff7fe6$export$2e2bcd8739ae039)\n };\n }\n}\n\n\n/*\n\nEmglken port of TADS\n====================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ \nvar $adf084eb06e09d60$exports = {};\n\n$adf084eb06e09d60$exports = new URL((parcelRequire(\"6MsPj\")).resolve(\"90qbH\"), import.meta.url).toString();\n\n\nvar $550f5195aabbfc7b$var$Module = (()=>{\n var _scriptDir = \"file:///node_modules/emglken/build/tads-core.js\";\n return function(Module = {}) {\n var Module = typeof Module != \"undefined\" ? Module : {};\n var readyPromiseResolve, readyPromiseReject;\n Module[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow)=>{\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary, setWindowTitle;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) scriptDirectory = self.location.href;\n else if (typeof document != \"undefined\" && document.currentScript) scriptDirectory = document.currentScript.src;\n if (_scriptDir) scriptDirectory = _scriptDir;\n if (scriptDirectory.indexOf(\"blob:\") !== 0) scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n else scriptDirectory = \"\";\n read_ = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) readBinary = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n readAsync = (url, onload, onerror)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = ()=>{\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n setWindowTitle = (title)=>document.title = title;\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n var wasmBinary;\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n var noExitRuntime = Module[\"noExitRuntime\"] || false;\n if (typeof WebAssembly != \"object\") abort(\"no native wasm support detected\");\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) abort(text);\n }\n var UTF8Decoder = new TextDecoder(\"utf8\");\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while(heapOrArray[endPtr] && !(endPtr >= endIdx))++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for(var end = ptr; !(end >= maxPtr) && HEAPU8[end];)++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n }\n function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for(var i = 0; i < str.length; ++i){\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n function lengthBytesUTF8(str) {\n var len = 0;\n for(var i = 0; i < str.length; ++i){\n var c = str.charCodeAt(i);\n if (c <= 127) len++;\n else if (c <= 2047) len += 2;\n else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else len += 3;\n }\n return len;\n }\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var wasmTable;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATEXIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n var runtimeKeepaliveCounter = 0;\n function keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [\n Module[\"preRun\"]\n ];\n while(Module[\"preRun\"].length)addOnPreRun(Module[\"preRun\"].shift());\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n }\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n function exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [\n Module[\"postRun\"]\n ];\n while(Module[\"postRun\"].length)addOnPostRun(Module[\"postRun\"].shift());\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n if (Module[\"onAbort\"]) Module[\"onAbort\"](what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n if (Module[\"locateFile\"]) {\n wasmBinaryFile = \"tads-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) wasmBinaryFile = locateFile(wasmBinaryFile);\n } else wasmBinaryFile = new URL($adf084eb06e09d60$exports).href;\n function getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary);\n if (readBinary) return readBinary(file);\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n }\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n else return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n function createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"ha\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"qa\"];\n addOnInit(Module[\"asm\"][\"ia\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n }\n var tempDouble;\n var tempI64;\n function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async ()=>{\n if (!Module.emglken_stdin_buffers.length) await new Promise((resolve)=>{\n Module.emglken_stdin_ready = resolve;\n });\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) HEAPU8.set(input, buffer);\n else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n }\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n }\n function callRuntimeCallbacks(callbacks) {\n while(callbacks.length > 0)callbacks.shift()(Module);\n }\n var PATH = {\n isAbs: (path)=>path.charAt(0) === \"/\",\n splitPath: (filename)=>{\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot)=>{\n var up = 0;\n for(var i = parts.length - 1; i >= 0; i--){\n var last = parts[i];\n if (last === \".\") parts.splice(i, 1);\n else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) for(; up; up--)parts.unshift(\"..\");\n return parts;\n },\n normalize: (path)=>{\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p)=>!!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) path = \".\";\n if (path && trailingSlash) path += \"/\";\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: (path)=>{\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) return \".\";\n if (dir) dir = dir.substr(0, dir.length - 1);\n return root + dir;\n },\n basename: (path)=>{\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r)=>{\n return PATH.normalize(l + \"/\" + r);\n }\n };\n function getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return ()=>{\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return ()=>abort(\"randomDevice\");\n }\n var PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for(var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--){\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") throw new TypeError(\"Arguments to path.resolve must be strings\");\n else if (!path) return \"\";\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p)=>!!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to)=>{\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for(; start < arr.length; start++){\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for(; end >= 0; end--){\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for(var i = 0; i < length; i++)if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n var outputParts = [];\n for(var i = samePartsLength; i < fromParts.length; i++)outputParts.push(\"..\");\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n var TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) throw new FS.ErrnoError(43);\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) throw new FS.ErrnoError(60);\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) throw new FS.ErrnoError(60);\n try {\n for(var i = 0; i < length; i++)stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) result += \"\\n\";\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) result += \"\\n\";\n }\n if (!result) return null;\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n };\n function mmapAlloc(size) {\n abort();\n }\n var MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16895, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) throw new FS.ErrnoError(63);\n if (!MEMFS.ops_table) MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1048576;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) attr.size = 4096;\n else if (FS.isFile(node.mode)) attr.size = node.usedBytes;\n else if (FS.isLink(node.mode)) attr.size = node.link.length;\n else attr.size = 0;\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) node.mode = attr.mode;\n if (attr.timestamp !== undefined) node.timestamp = attr.timestamp;\n if (attr.size !== undefined) MEMFS.resizeFileStorage(node, attr.size);\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for(var i in new_node.contents)throw new FS.ErrnoError(55);\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for(var i in node.contents)throw new FS.ErrnoError(55);\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [\n \".\",\n \"..\"\n ];\n for(var key in node.contents){\n if (!node.contents.hasOwnProperty(key)) continue;\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 41471, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) throw new FS.ErrnoError(28);\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) buffer.set(contents.subarray(position, position + size), offset);\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) canOwn = false;\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);\n else for(var i = 0; i < length; i++)node.contents[position + i] = buffer[offset + i];\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) position += stream.position;\n else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) position += stream.node.usedBytes;\n }\n if (position < 0) throw new FS.ErrnoError(28);\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) contents = contents.subarray(position, position + length);\n else contents = Array.prototype.slice.call(contents, position, position + length);\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n };\n function asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, (arrayBuffer)=>{\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, (event)=>{\n if (onerror) onerror();\n else throw 'Loading data file \"' + url + '\" failed.';\n });\n if (dep) addRunDependency(dep);\n }\n var FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {})=>{\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) throw new FS.ErrnoError(32);\n var parts = path.split(\"/\").filter((p)=>!!p);\n var current = FS.root;\n var current_path = \"/\";\n for(var i = 0; i < parts.length; i++){\n var islast = i === parts.length - 1;\n if (islast && opts.parent) break;\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) current = current.mounted.root;\n }\n if (!islast || opts.follow) {\n var count = 0;\n while(FS.isLink(current.mode)){\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) throw new FS.ErrnoError(32);\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: (node)=>{\n var path;\n while(true){\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name)=>{\n var hash = 0;\n for(var i = 0; i < name.length; i++)hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) FS.nameTable[hash] = node.name_next;\n else {\n var current = FS.nameTable[hash];\n while(current){\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name)=>{\n var errCode = FS.mayLookup(parent);\n if (errCode) throw new FS.ErrnoError(errCode, parent);\n var hash = FS.hashName(parent.id, name);\n for(var node = FS.nameTable[hash]; node; node = node.name_next){\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) return node;\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev)=>{\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: (node)=>{\n FS.hashRemoveNode(node);\n },\n isRoot: (node)=>{\n return node === node.parent;\n },\n isMountpoint: (node)=>{\n return !!node.mounted;\n },\n isFile: (mode)=>{\n return (mode & 61440) === 32768;\n },\n isDir: (mode)=>{\n return (mode & 61440) === 16384;\n },\n isLink: (mode)=>{\n return (mode & 61440) === 40960;\n },\n isChrdev: (mode)=>{\n return (mode & 61440) === 8192;\n },\n isBlkdev: (mode)=>{\n return (mode & 61440) === 24576;\n },\n isFIFO: (mode)=>{\n return (mode & 61440) === 4096;\n },\n isSocket: (mode)=>{\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: (str)=>{\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") throw new Error(\"Unknown file open mode: \" + str);\n return flags;\n },\n flagsToPermissionString: (flag)=>{\n var perms = [\n \"r\",\n \"w\",\n \"rw\"\n ][flag & 3];\n if (flag & 512) perms += \"w\";\n return perms;\n },\n nodePermissions: (node, perms)=>{\n if (FS.ignorePermissions) return 0;\n if (perms.includes(\"r\") && !(node.mode & 292)) return 2;\n else if (perms.includes(\"w\") && !(node.mode & 146)) return 2;\n else if (perms.includes(\"x\") && !(node.mode & 73)) return 2;\n return 0;\n },\n mayLookup: (dir)=>{\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name)=>{\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir)=>{\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) return errCode;\n if (isdir) {\n if (!FS.isDir(node.mode)) return 54;\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) return 10;\n } else {\n if (FS.isDir(node.mode)) return 31;\n }\n return 0;\n },\n mayOpen: (node, flags)=>{\n if (!node) return 44;\n if (FS.isLink(node.mode)) return 32;\n else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) return 31;\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS)=>{\n for(var fd = fd_start; fd <= fd_end; fd++){\n if (!FS.streams[fd]) return fd;\n }\n throw new FS.ErrnoError(33);\n },\n getStream: (fd)=>FS.streams[fd],\n createStream: (stream, fd_start, fd_end)=>{\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: (fd)=>{\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: (stream)=>{\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n },\n llseek: ()=>{\n throw new FS.ErrnoError(70);\n }\n },\n major: (dev)=>dev >> 8,\n minor: (dev)=>dev & 255,\n makedev: (ma, mi)=>ma << 8 | mi,\n registerDevice: (dev, ops)=>{\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: (dev)=>FS.devices[dev],\n getMounts: (mount)=>{\n var mounts = [];\n var check = [\n mount\n ];\n while(check.length){\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback)=>{\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) doCallback(null);\n }\n mounts.forEach((mount)=>{\n if (!mount.type.syncfs) return done(null);\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint)=>{\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) throw new FS.ErrnoError(10);\n else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n if (!FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) FS.root = mountRoot;\n else if (node) {\n node.mounted = mount;\n if (node.mount) node.mount.mounts.push(mount);\n }\n return mountRoot;\n },\n unmount: (mountpoint)=>{\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) throw new FS.ErrnoError(28);\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash)=>{\n var current = FS.nameTable[hash];\n while(current){\n var next = current.name_next;\n if (mounts.includes(current.mount)) FS.destroyNode(current);\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name)=>{\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") throw new FS.ErrnoError(28);\n var errCode = FS.mayCreate(parent, name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.mknod) throw new FS.ErrnoError(63);\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode)=>{\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode)=>{\n mode = mode !== undefined ? mode : 511;\n mode &= 1023;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode)=>{\n var dirs = path.split(\"/\");\n var d = \"\";\n for(var i = 0; i < dirs.length; ++i){\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev)=>{\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath)=>{\n if (!PATH_FS.resolve(oldpath)) throw new FS.ErrnoError(44);\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.symlink) throw new FS.ErrnoError(63);\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path)=>{\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) throw new FS.ErrnoError(75);\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(28);\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(55);\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) return;\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) throw new FS.ErrnoError(errCode);\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!old_dir.node_ops.rename) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) throw new FS.ErrnoError(10);\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally{\n FS.hashAddNode(old_node);\n }\n },\n rmdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.rmdir) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) throw new FS.ErrnoError(54);\n return node.node_ops.readdir(node);\n },\n unlink: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.unlink) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: (path)=>{\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) throw new FS.ErrnoError(44);\n if (!link.node_ops.readlink) throw new FS.ErrnoError(28);\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow)=>{\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) throw new FS.ErrnoError(44);\n if (!node.node_ops.getattr) throw new FS.ErrnoError(63);\n return node.node_ops.getattr(node);\n },\n lstat: (path)=>{\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & -4096,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode)=>{\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid)=>{\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len)=>{\n if (len < 0) throw new FS.ErrnoError(28);\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n if (FS.isDir(node.mode)) throw new FS.ErrnoError(31);\n if (!FS.isFile(node.mode)) throw new FS.ErrnoError(28);\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(28);\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode)=>{\n if (path === \"\") throw new FS.ErrnoError(44);\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) mode = mode & 4095 | 32768;\n else mode = 0;\n var node;\n if (typeof path == \"object\") node = path;\n else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) throw new FS.ErrnoError(20);\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) throw new FS.ErrnoError(44);\n if (FS.isChrdev(node.mode)) flags &= -513;\n if (flags & 65536 && !FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n if (flags & 512 && !created) FS.truncate(node, 0);\n flags &= -131713;\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) FS.readFiles[path] = 1;\n }\n return stream;\n },\n close: (stream)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) stream.stream_ops.close(stream);\n } catch (e) {\n throw e;\n } finally{\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: (stream)=>{\n return stream.fd === null;\n },\n llseek: (stream, offset, whence)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (!stream.seekable || !stream.stream_ops.llseek) throw new FS.ErrnoError(70);\n if (whence != 0 && whence != 1 && whence != 2) throw new FS.ErrnoError(28);\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.read) throw new FS.ErrnoError(28);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.write) throw new FS.ErrnoError(28);\n if (stream.seekable && stream.flags & 1024) FS.llseek(stream, 0, 2);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (offset < 0 || length <= 0) throw new FS.ErrnoError(28);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) throw new FS.ErrnoError(43);\n if (!stream.stream_ops.allocate) throw new FS.ErrnoError(138);\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags)=>{\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) throw new FS.ErrnoError(2);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(2);\n if (!stream.stream_ops.mmap) throw new FS.ErrnoError(43);\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags)=>{\n if (!stream.stream_ops.msync) return 0;\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: (stream)=>0,\n ioctl: (stream, cmd, arg)=>{\n if (!stream.stream_ops.ioctl) throw new FS.ErrnoError(59);\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {})=>{\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") ret = UTF8ArrayToString(buf, 0);\n else if (opts.encoding === \"binary\") ret = buf;\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {})=>{\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n else throw new Error(\"Unsupported data type\");\n FS.close(stream);\n },\n cwd: ()=>FS.currentPath,\n chdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) throw new FS.ErrnoError(44);\n if (!FS.isDir(lookup.node.mode)) throw new FS.ErrnoError(54);\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) throw new FS.ErrnoError(errCode);\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: ()=>{\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: ()=>{\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: ()=>0,\n write: (stream, buffer, offset, length, pos)=>length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: ()=>{\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: ()=>{\n var node = FS.createNode(proc_self, \"fd\", 16895, 73);\n node.node_ops = {\n lookup: (parent, name)=>{\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: ()=>stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: ()=>{\n if (Module[\"stdin\"]) FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n if (Module[\"stdout\"]) FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n if (Module[\"stderr\"]) FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n else FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: ()=>{\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [\n 44\n ].forEach((code)=>{\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: ()=>{\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error)=>{\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: ()=>{\n FS.init.initialized = false;\n _fflush(0);\n for(var i = 0; i < FS.streams.length; i++){\n var stream = FS.streams[i];\n if (!stream) continue;\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite)=>{\n var mode = 0;\n if (canRead) mode |= 365;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink)=>{\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) return null;\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink)=>{\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite)=>{\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while(parts.length){\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn)=>{\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for(var i = 0, len = data.length; i < len; ++i)arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: (stream)=>{\n stream.seekable = false;\n },\n close: (stream)=>{\n if (output && output.buffer && output.buffer.length) output(10);\n },\n read: (stream, buffer, offset, length, pos)=>{\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos)=>{\n for(var i = 0; i < length; i++)try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: (obj)=>{\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n else if (read_) try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n else throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n },\n createLazyFile: (parent, name, url, canRead, canWrite)=>{\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) return undefined;\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1048576;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to)=>{\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) return new Uint8Array(xhr.response || []);\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter((chunkNum)=>{\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") lazyArray.chunks[chunkNum] = doXHR(start, end);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else var properties = {\n isDevice: false,\n url: url\n };\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) node.contents = properties.contents;\n else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach((key)=>{\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents.get(position + i);\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position)=>{\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags)=>{\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish)=>{\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, ()=>{\n if (onerror) onerror();\n removeRunDependency(dep);\n })) return;\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") asyncLoad(url, (byteArray)=>processData(byteArray), onerror);\n else processData(url);\n },\n indexedDB: ()=>{\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: ()=>{\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = ()=>{\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = ()=>{\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n try {\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var getRequest = files.get(path);\n getRequest.onsuccess = ()=>{\n if (FS.analyzePath(path).exists) FS.unlink(path);\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n };\n var SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) return path;\n var dir;\n if (dirfd === -100) dir = FS.cwd();\n else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) throw new FS.ErrnoError(44);\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) return -54;\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [\n stat.size >>> 0,\n (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [\n Math.floor(atime / 1e3) >>> 0,\n (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(mtime / 1e3) >>> 0,\n (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(ctime / 1e3) >>> 0,\n (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [\n stat.ino >>> 0,\n (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n if (flags & 2) return 0;\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n };\n function ___syscall_dup(fd) {\n try {\n var old = SYSCALLS.getStreamFromFD(fd);\n return FS.createStream(old, 0).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & -8) return -28;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) return -44;\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) return -2;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n }\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(cmd){\n case 0:\n var arg = SYSCALLS.get();\n if (arg < 0) return -28;\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4:\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n case 5:\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_getdents64(fd, dirp, count) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n if (!stream.getdents) stream.getdents = FS.readdir(stream.path);\n var struct_size = 280;\n var pos = 0;\n var off = FS.llseek(stream, 0, 1);\n var idx = Math.floor(off / struct_size);\n while(idx < stream.getdents.length && pos + struct_size <= count){\n var id;\n var type;\n var name = stream.getdents[idx];\n if (name === \".\") {\n id = stream.node.id;\n type = 4;\n } else if (name === \"..\") {\n var lookup = FS.lookupPath(stream.path, {\n parent: true\n });\n id = lookup.node.id;\n type = 4;\n } else {\n var child = FS.lookupNode(stream.node, name);\n id = child.id;\n type = FS.isChrdev(child.mode) ? 2 : FS.isDir(child.mode) ? 4 : FS.isLink(child.mode) ? 10 : 8;\n }\n tempI64 = [\n id >>> 0,\n (tempDouble = id, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[dirp + pos >> 2] = tempI64[0], HEAP32[dirp + pos + 4 >> 2] = tempI64[1];\n tempI64 = [\n (idx + 1) * struct_size >>> 0,\n (tempDouble = (idx + 1) * struct_size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[dirp + pos + 8 >> 2] = tempI64[0], HEAP32[dirp + pos + 12 >> 2] = tempI64[1];\n HEAP16[dirp + pos + 16 >> 1] = 280;\n HEAP8[dirp + pos + 18 >> 0] = type;\n stringToUTF8(name, dirp + pos + 19, 256);\n pos += struct_size;\n idx += 1;\n }\n FS.llseek(stream, idx * struct_size, 0);\n return pos;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(op){\n case 21509:\n case 21505:\n if (!stream.tty) return -59;\n return 0;\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n if (!stream.tty) return -59;\n return 0;\n case 21519:\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n case 21520:\n if (!stream.tty) return -59;\n return -28;\n case 21531:\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n case 21523:\n if (!stream.tty) return -59;\n return 0;\n case 21524:\n if (!stream.tty) return -59;\n return 0;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_lstat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.lstat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_mkdirat(dirfd, path, mode) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n path = PATH.normalize(path);\n if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\n FS.mkdir(path, mode, 0);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_newfstatat(dirfd, path, buf, flags) {\n try {\n path = SYSCALLS.getStr(path);\n var nofollow = flags & 256;\n var allowEmpty = flags & 4096;\n flags = flags & -6401;\n path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);\n return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_readlinkat(dirfd, path, buf, bufsize) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (bufsize <= 0) return -28;\n var ret = FS.readlink(path);\n var len = Math.min(bufsize, lengthBytesUTF8(ret));\n var endChar = HEAP8[buf + len];\n stringToUTF8(ret, buf, bufsize + 1);\n HEAP8[buf + len] = endChar;\n return len;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_renameat(olddirfd, oldpath, newdirfd, newpath) {\n try {\n oldpath = SYSCALLS.getStr(oldpath);\n newpath = SYSCALLS.getStr(newpath);\n oldpath = SYSCALLS.calculateAt(olddirfd, oldpath);\n newpath = SYSCALLS.calculateAt(newdirfd, newpath);\n FS.rename(oldpath, newpath);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_rmdir(path) {\n try {\n path = SYSCALLS.getStr(path);\n FS.rmdir(path);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_unlinkat(dirfd, path, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (flags === 0) FS.unlink(path);\n else if (flags === 512) FS.rmdir(path);\n else abort(\"Invalid flags passed to unlinkat\");\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var nowIsMonotonic = true;\n function __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n }\n function __emscripten_throw_longjmp() {\n throw Infinity;\n }\n function readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n }\n function __gmtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getUTCSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getUTCHours();\n HEAP32[tmPtr + 12 >> 2] = date.getUTCDate();\n HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / 86400000 | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n }\n function __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n }\n var __MONTH_DAYS_LEAP_CUMULATIVE = [\n 0,\n 31,\n 60,\n 91,\n 121,\n 152,\n 182,\n 213,\n 244,\n 274,\n 305,\n 335\n ];\n var __MONTH_DAYS_REGULAR_CUMULATIVE = [\n 0,\n 31,\n 59,\n 90,\n 120,\n 151,\n 181,\n 212,\n 243,\n 273,\n 304,\n 334\n ];\n function __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n }\n function __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n }\n function allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n }\n function _abort() {\n abort(\"\");\n }\n function _emscripten_date_now() {\n return Date.now();\n }\n var _emscripten_get_now;\n _emscripten_get_now = ()=>performance.now();\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n }\n function getHeapMax() {\n return 2147483648;\n }\n function emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) return false;\n let alignUp = (x, multiple)=>x + (multiple - x % multiple) % multiple;\n for(var cutDown = 1; cutDown <= 4; cutDown *= 2){\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) return true;\n }\n return false;\n }\n var ENV = {};\n function getExecutableName() {\n return thisProgram || \"./this.program\";\n }\n function getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": lang,\n \"_\": getExecutableName()\n };\n for(var x in ENV)if (ENV[x] === undefined) delete env[x];\n else env[x] = ENV[x];\n var strings = [];\n for(var x in env)strings.push(x + \"=\" + env[x]);\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n }\n function writeAsciiToMemory(str, buffer, dontAddNull) {\n for(var i = 0; i < str.length; ++i)HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n }\n function _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function(string, i) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n }\n function _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function(string) {\n bufSize += string.length + 1;\n });\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n }\n function _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n }\n function exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) exitRuntime();\n _proc_exit(status);\n }\n var _exit = exitJS;\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n }\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [\n stream.position >>> 0,\n (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function __arraySum(array, index) {\n var sum = 0;\n for(var i = 0; i <= index; sum += array[i++]);\n return sum;\n }\n var __MONTH_DAYS_LEAP = [\n 31,\n 29,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n ];\n var __MONTH_DAYS_REGULAR = [\n 31,\n 28,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n ];\n function __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while(days > 0){\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) newDate.setMonth(currentMonth + 1);\n else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n }\n function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }\n function _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\"\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for(var rule in EXPANSION_RULES_1)pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n var WEEKDAYS = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ];\n var MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ];\n function leadingSomething(value, digits, character) {\n var str = typeof value == \"number\" ? value.toString() : value || \"\";\n while(str.length < digits)str = character[0] + str;\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) compare = sgn(date1.getDate() - date2.getDate());\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch(janFourth.getDay()){\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n case 1:\n return janFourth;\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) return thisDate.getFullYear() + 1;\n return thisDate.getFullYear();\n }\n return thisDate.getFullYear() - 1;\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function(date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function(date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function(date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function(date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function(date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n \"%d\": function(date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function(date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function(date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function(date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function(date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function(date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12;\n else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function(date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n \"%m\": function(date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function(date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function() {\n return \"\\n\";\n },\n \"%p\": function(date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) return \"AM\";\n return \"PM\";\n },\n \"%S\": function(date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function() {\n return \"\t\";\n },\n \"%u\": function(date) {\n return date.tm_wday || 7;\n },\n \"%U\": function(date) {\n var days = date.tm_yday + 7 - date.tm_wday;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%V\": function(date) {\n var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7);\n if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) val++;\n if (!val) {\n val = 52;\n var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;\n if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) val++;\n } else if (val == 53) {\n var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;\n if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1;\n }\n return leadingNulls(val, 2);\n },\n \"%w\": function(date) {\n return date.tm_wday;\n },\n \"%W\": function(date) {\n var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%y\": function(date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function(date) {\n return date.tm_year + 1900;\n },\n \"%z\": function(date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function(date) {\n return date.tm_zone;\n },\n \"%%\": function() {\n return \"%\";\n }\n };\n pattern = pattern.replace(/%%/g, \"\\x00\\x00\");\n for(var rule in EXPANSION_RULES_2)if (pattern.includes(rule)) pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_2[rule](date));\n pattern = pattern.replace(/\\0\\0/g, \"%\");\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) return 0;\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n }\n function handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") return EXITSTATUS;\n quit_(1, e);\n }\n function allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n }\n function maybeExit() {\n if (!keepRuntimeAlive()) try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n function callUserCallback(func) {\n if (runtimeExited || ABORT) return;\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n }\n function runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n }\n function runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n }\n var Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [\n \"invoke_*\",\n \"emscripten_sleep\",\n \"emscripten_wget\",\n \"emscripten_wget_data\",\n \"emscripten_idb_load\",\n \"emscripten_idb_store\",\n \"emscripten_idb_delete\",\n \"emscripten_idb_exists\",\n \"emscripten_idb_load_blob\",\n \"emscripten_idb_store_blob\",\n \"SDL_Delay\",\n \"emscripten_scan_registers\",\n \"emscripten_lazy_load_code\",\n \"emscripten_fiber_swap\",\n \"__load_secondary_module\",\n \"fd_sync\",\n \"__wasi_fd_sync\",\n \"_emval_await\",\n \"_dlopen_js\",\n \"__asyncjs__*\"\n ];\n for(var x in imports)(function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n })(x);\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for(var x in exports)(function(x) {\n var original = exports[x];\n if (typeof original == \"function\") ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally{\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n else ret[x] = original;\n })(x);\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") Fibers.trampoline();\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject)=>{\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0)=>{\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) return;\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.resume();\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) throw asyncWasmReturnValue;\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.pause();\n runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach((func)=>callUserCallback(func));\n } else abort(\"invalid state: \" + Asyncify.state);\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep((wakeUp)=>{\n startAsync().then(wakeUp);\n });\n }\n };\n function AsciiToString(ptr) {\n var str = \"\";\n while(true){\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n }\n var FSNode = function(parent, name, mode, rdev) {\n if (!parent) parent = this;\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n var readMode = 365;\n var writeMode = 146;\n Object.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n });\n FS.FSNode = FSNode;\n FS.staticInit();\n var wasmImports = {\n \"O\": __asyncjs__emglken_fill_stdin_buffer,\n \"ga\": ___syscall_dup,\n \"fa\": ___syscall_faccessat,\n \"G\": ___syscall_fcntl64,\n \"ea\": ___syscall_getcwd,\n \"da\": ___syscall_getdents64,\n \"ca\": ___syscall_ioctl,\n \"ba\": ___syscall_lstat64,\n \"aa\": ___syscall_mkdirat,\n \"$\": ___syscall_newfstatat,\n \"F\": ___syscall_openat,\n \"_\": ___syscall_readlinkat,\n \"Z\": ___syscall_renameat,\n \"E\": ___syscall_rmdir,\n \"Y\": ___syscall_stat64,\n \"X\": ___syscall_unlinkat,\n \"T\": __emscripten_get_now_is_monotonic,\n \"S\": __emscripten_throw_longjmp,\n \"R\": __gmtime_js,\n \"Q\": __localtime_js,\n \"P\": __tzset_js,\n \"C\": _abort,\n \"B\": _emscripten_date_now,\n \"A\": _emscripten_get_now,\n \"N\": _emscripten_memcpy_big,\n \"M\": _emscripten_resize_heap,\n \"W\": _environ_get,\n \"V\": _environ_sizes_get,\n \"y\": _exit,\n \"w\": _fd_close,\n \"U\": _fd_read,\n \"I\": _fd_seek,\n \"D\": _fd_write,\n \"L\": invoke_i,\n \"b\": invoke_ii,\n \"f\": invoke_iii,\n \"e\": invoke_iiii,\n \"c\": invoke_iiiii,\n \"j\": invoke_iiiiii,\n \"l\": invoke_iiiiiii,\n \"m\": invoke_iiiiiiii,\n \"s\": invoke_iiiiiiiii,\n \"t\": invoke_iiiiiiiiii,\n \"p\": invoke_iiiiiiiiiii,\n \"x\": invoke_iiiiiiiiiiii,\n \"q\": invoke_iiiiiiiiiiiiii,\n \"z\": invoke_iiiiiiiiiiiiiiii,\n \"v\": invoke_iiiiiiiiiiiiiiiiii,\n \"i\": invoke_v,\n \"h\": invoke_vi,\n \"d\": invoke_vii,\n \"a\": invoke_viii,\n \"g\": invoke_viiii,\n \"o\": invoke_viiiii,\n \"n\": invoke_viiiiii,\n \"K\": invoke_viiiiiii,\n \"r\": invoke_viiiiiiii,\n \"k\": invoke_viiiiiiiii,\n \"u\": invoke_viiiiiiiiiii,\n \"J\": invoke_viiiiiiiiiiiiiii,\n \"H\": _strftime\n };\n var asm = createWasm();\n var ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"ia\"]).apply(null, arguments);\n };\n var _malloc = function() {\n return (_malloc = Module[\"asm\"][\"ja\"]).apply(null, arguments);\n };\n var _free = function() {\n return (_free = Module[\"asm\"][\"ka\"]).apply(null, arguments);\n };\n var _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"la\"]).apply(null, arguments);\n };\n var _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"ma\"]).apply(null, arguments);\n };\n var _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"na\"]).apply(null, arguments);\n };\n var ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"oa\"]).apply(null, arguments);\n };\n var ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"pa\"]).apply(null, arguments);\n };\n var _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"ra\"]).apply(null, arguments);\n };\n var _saveSetjmp = function() {\n return (_saveSetjmp = Module[\"asm\"][\"saveSetjmp\"]).apply(null, arguments);\n };\n var _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n };\n var stackSave = function() {\n return (stackSave = Module[\"asm\"][\"sa\"]).apply(null, arguments);\n };\n var stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"ta\"]).apply(null, arguments);\n };\n var stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"ua\"]).apply(null, arguments);\n };\n var dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() {\n return (dynCall_iiiii = Module[\"dynCall_iiiii\"] = Module[\"asm\"][\"va\"]).apply(null, arguments);\n };\n var dynCall_ii = Module[\"dynCall_ii\"] = function() {\n return (dynCall_ii = Module[\"dynCall_ii\"] = Module[\"asm\"][\"wa\"]).apply(null, arguments);\n };\n var dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"xa\"]).apply(null, arguments);\n };\n var dynCall_iii = Module[\"dynCall_iii\"] = function() {\n return (dynCall_iii = Module[\"dynCall_iii\"] = Module[\"asm\"][\"ya\"]).apply(null, arguments);\n };\n var dynCall_viii = Module[\"dynCall_viii\"] = function() {\n return (dynCall_viii = Module[\"dynCall_viii\"] = Module[\"asm\"][\"za\"]).apply(null, arguments);\n };\n var dynCall_viiiiiiii = Module[\"dynCall_viiiiiiii\"] = function() {\n return (dynCall_viiiiiiii = Module[\"dynCall_viiiiiiii\"] = Module[\"asm\"][\"Aa\"]).apply(null, arguments);\n };\n var dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"Ba\"]).apply(null, arguments);\n };\n var dynCall_viiiii = Module[\"dynCall_viiiii\"] = function() {\n return (dynCall_viiiii = Module[\"dynCall_viiiii\"] = Module[\"asm\"][\"Ca\"]).apply(null, arguments);\n };\n var dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = function() {\n return (dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = Module[\"asm\"][\"Da\"]).apply(null, arguments);\n };\n var dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = function() {\n return (dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = Module[\"asm\"][\"Ea\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiii = Module[\"dynCall_iiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiii = Module[\"dynCall_iiiiiiiii\"] = Module[\"asm\"][\"Fa\"]).apply(null, arguments);\n };\n var dynCall_iiii = Module[\"dynCall_iiii\"] = function() {\n return (dynCall_iiii = Module[\"dynCall_iiii\"] = Module[\"asm\"][\"Ga\"]).apply(null, arguments);\n };\n var dynCall_viiiiiiiii = Module[\"dynCall_viiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiii = Module[\"dynCall_viiiiiiiii\"] = Module[\"asm\"][\"Ha\"]).apply(null, arguments);\n };\n var dynCall_viiii = Module[\"dynCall_viiii\"] = function() {\n return (dynCall_viiii = Module[\"dynCall_viiii\"] = Module[\"asm\"][\"Ia\"]).apply(null, arguments);\n };\n var dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = function() {\n return (dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = Module[\"asm\"][\"Ja\"]).apply(null, arguments);\n };\n var dynCall_viiiiiiiiiii = Module[\"dynCall_viiiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiiii = Module[\"dynCall_viiiiiiiiiii\"] = Module[\"asm\"][\"Ka\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiii = Module[\"dynCall_iiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiii = Module[\"dynCall_iiiiiiiiii\"] = Module[\"asm\"][\"La\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = function() {\n return (dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = Module[\"asm\"][\"Ma\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiiii = Module[\"dynCall_iiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiii = Module[\"dynCall_iiiiiiiiiii\"] = Module[\"asm\"][\"Na\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiii\"] = Module[\"asm\"][\"Oa\"]).apply(null, arguments);\n };\n var dynCall_v = Module[\"dynCall_v\"] = function() {\n return (dynCall_v = Module[\"dynCall_v\"] = Module[\"asm\"][\"Pa\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Qa\"]).apply(null, arguments);\n };\n var dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = function() {\n return (dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = Module[\"asm\"][\"Ra\"]).apply(null, arguments);\n };\n var dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Sa\"]).apply(null, arguments);\n };\n var dynCall_i = Module[\"dynCall_i\"] = function() {\n return (dynCall_i = Module[\"dynCall_i\"] = Module[\"asm\"][\"Ta\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = Module[\"asm\"][\"Ua\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Va\"]).apply(null, arguments);\n };\n var _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"Wa\"]).apply(null, arguments);\n };\n var _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"Xa\"]).apply(null, arguments);\n };\n var _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"Ya\"]).apply(null, arguments);\n };\n var _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"Za\"]).apply(null, arguments);\n };\n var ___start_em_js = Module[\"___start_em_js\"] = 356528;\n var ___stop_em_js = Module[\"___stop_em_js\"] = 359213;\n function invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n return dynCall_iiiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iii(index, a1, a2) {\n var sp = stackSave();\n try {\n return dynCall_iii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) {\n var sp = stackSave();\n try {\n dynCall_viiiiii(index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiii(index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n dynCall_viiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n dynCall_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n Module[\"AsciiToString\"] = AsciiToString;\n Module[\"FS\"] = FS;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach((arg)=>{\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n }\n function run(args = arguments_) {\n if (runDependencies > 0) return;\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else doRun();\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [\n Module[\"preInit\"]\n ];\n while(Module[\"preInit\"].length > 0)Module[\"preInit\"].pop()();\n }\n var shouldRunNow = true;\n if (Module[\"noInitialRun\"]) shouldRunNow = false;\n run();\n return Module.ready;\n };\n})();\nvar $550f5195aabbfc7b$export$2e2bcd8739ae039 = $550f5195aabbfc7b$var$Module;\n\n\nclass $baf23bce1c56928c$export$2e2bcd8739ae039 extends (0, $0d34edacac7ea588$export$2e2bcd8739ae039) {\n default_options() {\n return {\n vmcore: (0, $550f5195aabbfc7b$export$2e2bcd8739ae039)\n };\n }\n}\n\n\n/*\n\nEmglken port of Scare\n=====================\n\nCopyright (c) 2023 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ \nvar $ffc332a4e0553020$exports = {};\n\n$ffc332a4e0553020$exports = new URL((parcelRequire(\"6MsPj\")).resolve(\"32xWV\"), import.meta.url).toString();\n\n\nvar $ffa7e6eb668807b5$var$Module = (()=>{\n var _scriptDir = \"file:///node_modules/emglken/build/scare-core.js\";\n return function(Module = {}) {\n var Module = typeof Module != \"undefined\" ? Module : {};\n var readyPromiseResolve, readyPromiseReject;\n Module[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow)=>{\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary, setWindowTitle;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) scriptDirectory = self.location.href;\n else if (typeof document != \"undefined\" && document.currentScript) scriptDirectory = document.currentScript.src;\n if (_scriptDir) scriptDirectory = _scriptDir;\n if (scriptDirectory.indexOf(\"blob:\") !== 0) scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n else scriptDirectory = \"\";\n read_ = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) readBinary = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n readAsync = (url, onload, onerror)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = ()=>{\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n setWindowTitle = (title)=>document.title = title;\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n var wasmBinary;\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n var noExitRuntime = Module[\"noExitRuntime\"] || false;\n if (typeof WebAssembly != \"object\") abort(\"no native wasm support detected\");\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) abort(text);\n }\n var UTF8Decoder = new TextDecoder(\"utf8\");\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while(heapOrArray[endPtr] && !(endPtr >= endIdx))++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for(var end = ptr; !(end >= maxPtr) && HEAPU8[end];)++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n }\n function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for(var i = 0; i < str.length; ++i){\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n function lengthBytesUTF8(str) {\n var len = 0;\n for(var i = 0; i < str.length; ++i){\n var c = str.charCodeAt(i);\n if (c <= 127) len++;\n else if (c <= 2047) len += 2;\n else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else len += 3;\n }\n return len;\n }\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var wasmTable;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATEXIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n var runtimeKeepaliveCounter = 0;\n function keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [\n Module[\"preRun\"]\n ];\n while(Module[\"preRun\"].length)addOnPreRun(Module[\"preRun\"].shift());\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n }\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n function exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [\n Module[\"postRun\"]\n ];\n while(Module[\"postRun\"].length)addOnPostRun(Module[\"postRun\"].shift());\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n if (Module[\"onAbort\"]) Module[\"onAbort\"](what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n if (Module[\"locateFile\"]) {\n wasmBinaryFile = \"scare-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) wasmBinaryFile = locateFile(wasmBinaryFile);\n } else wasmBinaryFile = new URL($ffc332a4e0553020$exports).href;\n function getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary);\n if (readBinary) return readBinary(file);\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n }\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n else return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n function createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"E\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"N\"];\n addOnInit(Module[\"asm\"][\"F\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n }\n var tempDouble;\n var tempI64;\n function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async ()=>{\n if (!Module.emglken_stdin_buffers.length) await new Promise((resolve)=>{\n Module.emglken_stdin_ready = resolve;\n });\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) HEAPU8.set(input, buffer);\n else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n }\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n }\n function callRuntimeCallbacks(callbacks) {\n while(callbacks.length > 0)callbacks.shift()(Module);\n }\n var PATH = {\n isAbs: (path)=>path.charAt(0) === \"/\",\n splitPath: (filename)=>{\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot)=>{\n var up = 0;\n for(var i = parts.length - 1; i >= 0; i--){\n var last = parts[i];\n if (last === \".\") parts.splice(i, 1);\n else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) for(; up; up--)parts.unshift(\"..\");\n return parts;\n },\n normalize: (path)=>{\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p)=>!!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) path = \".\";\n if (path && trailingSlash) path += \"/\";\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: (path)=>{\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) return \".\";\n if (dir) dir = dir.substr(0, dir.length - 1);\n return root + dir;\n },\n basename: (path)=>{\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r)=>{\n return PATH.normalize(l + \"/\" + r);\n }\n };\n function getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return ()=>{\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return ()=>abort(\"randomDevice\");\n }\n var PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for(var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--){\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") throw new TypeError(\"Arguments to path.resolve must be strings\");\n else if (!path) return \"\";\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p)=>!!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to)=>{\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for(; start < arr.length; start++){\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for(; end >= 0; end--){\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for(var i = 0; i < length; i++)if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n var outputParts = [];\n for(var i = samePartsLength; i < fromParts.length; i++)outputParts.push(\"..\");\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n var TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) throw new FS.ErrnoError(43);\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) throw new FS.ErrnoError(60);\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) throw new FS.ErrnoError(60);\n try {\n for(var i = 0; i < length; i++)stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) result += \"\\n\";\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) result += \"\\n\";\n }\n if (!result) return null;\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n };\n function mmapAlloc(size) {\n abort();\n }\n var MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16895, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) throw new FS.ErrnoError(63);\n if (!MEMFS.ops_table) MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1048576;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) attr.size = 4096;\n else if (FS.isFile(node.mode)) attr.size = node.usedBytes;\n else if (FS.isLink(node.mode)) attr.size = node.link.length;\n else attr.size = 0;\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) node.mode = attr.mode;\n if (attr.timestamp !== undefined) node.timestamp = attr.timestamp;\n if (attr.size !== undefined) MEMFS.resizeFileStorage(node, attr.size);\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for(var i in new_node.contents)throw new FS.ErrnoError(55);\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for(var i in node.contents)throw new FS.ErrnoError(55);\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [\n \".\",\n \"..\"\n ];\n for(var key in node.contents){\n if (!node.contents.hasOwnProperty(key)) continue;\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 41471, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) throw new FS.ErrnoError(28);\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) buffer.set(contents.subarray(position, position + size), offset);\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) canOwn = false;\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);\n else for(var i = 0; i < length; i++)node.contents[position + i] = buffer[offset + i];\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) position += stream.position;\n else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) position += stream.node.usedBytes;\n }\n if (position < 0) throw new FS.ErrnoError(28);\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) contents = contents.subarray(position, position + length);\n else contents = Array.prototype.slice.call(contents, position, position + length);\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n };\n function asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, (arrayBuffer)=>{\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, (event)=>{\n if (onerror) onerror();\n else throw 'Loading data file \"' + url + '\" failed.';\n });\n if (dep) addRunDependency(dep);\n }\n var FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {})=>{\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) throw new FS.ErrnoError(32);\n var parts = path.split(\"/\").filter((p)=>!!p);\n var current = FS.root;\n var current_path = \"/\";\n for(var i = 0; i < parts.length; i++){\n var islast = i === parts.length - 1;\n if (islast && opts.parent) break;\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) current = current.mounted.root;\n }\n if (!islast || opts.follow) {\n var count = 0;\n while(FS.isLink(current.mode)){\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) throw new FS.ErrnoError(32);\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: (node)=>{\n var path;\n while(true){\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name)=>{\n var hash = 0;\n for(var i = 0; i < name.length; i++)hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) FS.nameTable[hash] = node.name_next;\n else {\n var current = FS.nameTable[hash];\n while(current){\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name)=>{\n var errCode = FS.mayLookup(parent);\n if (errCode) throw new FS.ErrnoError(errCode, parent);\n var hash = FS.hashName(parent.id, name);\n for(var node = FS.nameTable[hash]; node; node = node.name_next){\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) return node;\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev)=>{\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: (node)=>{\n FS.hashRemoveNode(node);\n },\n isRoot: (node)=>{\n return node === node.parent;\n },\n isMountpoint: (node)=>{\n return !!node.mounted;\n },\n isFile: (mode)=>{\n return (mode & 61440) === 32768;\n },\n isDir: (mode)=>{\n return (mode & 61440) === 16384;\n },\n isLink: (mode)=>{\n return (mode & 61440) === 40960;\n },\n isChrdev: (mode)=>{\n return (mode & 61440) === 8192;\n },\n isBlkdev: (mode)=>{\n return (mode & 61440) === 24576;\n },\n isFIFO: (mode)=>{\n return (mode & 61440) === 4096;\n },\n isSocket: (mode)=>{\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: (str)=>{\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") throw new Error(\"Unknown file open mode: \" + str);\n return flags;\n },\n flagsToPermissionString: (flag)=>{\n var perms = [\n \"r\",\n \"w\",\n \"rw\"\n ][flag & 3];\n if (flag & 512) perms += \"w\";\n return perms;\n },\n nodePermissions: (node, perms)=>{\n if (FS.ignorePermissions) return 0;\n if (perms.includes(\"r\") && !(node.mode & 292)) return 2;\n else if (perms.includes(\"w\") && !(node.mode & 146)) return 2;\n else if (perms.includes(\"x\") && !(node.mode & 73)) return 2;\n return 0;\n },\n mayLookup: (dir)=>{\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name)=>{\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir)=>{\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) return errCode;\n if (isdir) {\n if (!FS.isDir(node.mode)) return 54;\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) return 10;\n } else {\n if (FS.isDir(node.mode)) return 31;\n }\n return 0;\n },\n mayOpen: (node, flags)=>{\n if (!node) return 44;\n if (FS.isLink(node.mode)) return 32;\n else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) return 31;\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS)=>{\n for(var fd = fd_start; fd <= fd_end; fd++){\n if (!FS.streams[fd]) return fd;\n }\n throw new FS.ErrnoError(33);\n },\n getStream: (fd)=>FS.streams[fd],\n createStream: (stream, fd_start, fd_end)=>{\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: (fd)=>{\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: (stream)=>{\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n },\n llseek: ()=>{\n throw new FS.ErrnoError(70);\n }\n },\n major: (dev)=>dev >> 8,\n minor: (dev)=>dev & 255,\n makedev: (ma, mi)=>ma << 8 | mi,\n registerDevice: (dev, ops)=>{\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: (dev)=>FS.devices[dev],\n getMounts: (mount)=>{\n var mounts = [];\n var check = [\n mount\n ];\n while(check.length){\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback)=>{\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) doCallback(null);\n }\n mounts.forEach((mount)=>{\n if (!mount.type.syncfs) return done(null);\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint)=>{\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) throw new FS.ErrnoError(10);\n else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n if (!FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) FS.root = mountRoot;\n else if (node) {\n node.mounted = mount;\n if (node.mount) node.mount.mounts.push(mount);\n }\n return mountRoot;\n },\n unmount: (mountpoint)=>{\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) throw new FS.ErrnoError(28);\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash)=>{\n var current = FS.nameTable[hash];\n while(current){\n var next = current.name_next;\n if (mounts.includes(current.mount)) FS.destroyNode(current);\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name)=>{\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") throw new FS.ErrnoError(28);\n var errCode = FS.mayCreate(parent, name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.mknod) throw new FS.ErrnoError(63);\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode)=>{\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode)=>{\n mode = mode !== undefined ? mode : 511;\n mode &= 1023;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode)=>{\n var dirs = path.split(\"/\");\n var d = \"\";\n for(var i = 0; i < dirs.length; ++i){\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev)=>{\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath)=>{\n if (!PATH_FS.resolve(oldpath)) throw new FS.ErrnoError(44);\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.symlink) throw new FS.ErrnoError(63);\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path)=>{\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) throw new FS.ErrnoError(75);\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(28);\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(55);\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) return;\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) throw new FS.ErrnoError(errCode);\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!old_dir.node_ops.rename) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) throw new FS.ErrnoError(10);\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally{\n FS.hashAddNode(old_node);\n }\n },\n rmdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.rmdir) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) throw new FS.ErrnoError(54);\n return node.node_ops.readdir(node);\n },\n unlink: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.unlink) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: (path)=>{\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) throw new FS.ErrnoError(44);\n if (!link.node_ops.readlink) throw new FS.ErrnoError(28);\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow)=>{\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) throw new FS.ErrnoError(44);\n if (!node.node_ops.getattr) throw new FS.ErrnoError(63);\n return node.node_ops.getattr(node);\n },\n lstat: (path)=>{\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & -4096,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode)=>{\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid)=>{\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len)=>{\n if (len < 0) throw new FS.ErrnoError(28);\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n if (FS.isDir(node.mode)) throw new FS.ErrnoError(31);\n if (!FS.isFile(node.mode)) throw new FS.ErrnoError(28);\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(28);\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode)=>{\n if (path === \"\") throw new FS.ErrnoError(44);\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) mode = mode & 4095 | 32768;\n else mode = 0;\n var node;\n if (typeof path == \"object\") node = path;\n else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) throw new FS.ErrnoError(20);\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) throw new FS.ErrnoError(44);\n if (FS.isChrdev(node.mode)) flags &= -513;\n if (flags & 65536 && !FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n if (flags & 512 && !created) FS.truncate(node, 0);\n flags &= -131713;\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) FS.readFiles[path] = 1;\n }\n return stream;\n },\n close: (stream)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) stream.stream_ops.close(stream);\n } catch (e) {\n throw e;\n } finally{\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: (stream)=>{\n return stream.fd === null;\n },\n llseek: (stream, offset, whence)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (!stream.seekable || !stream.stream_ops.llseek) throw new FS.ErrnoError(70);\n if (whence != 0 && whence != 1 && whence != 2) throw new FS.ErrnoError(28);\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.read) throw new FS.ErrnoError(28);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.write) throw new FS.ErrnoError(28);\n if (stream.seekable && stream.flags & 1024) FS.llseek(stream, 0, 2);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (offset < 0 || length <= 0) throw new FS.ErrnoError(28);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) throw new FS.ErrnoError(43);\n if (!stream.stream_ops.allocate) throw new FS.ErrnoError(138);\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags)=>{\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) throw new FS.ErrnoError(2);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(2);\n if (!stream.stream_ops.mmap) throw new FS.ErrnoError(43);\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags)=>{\n if (!stream.stream_ops.msync) return 0;\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: (stream)=>0,\n ioctl: (stream, cmd, arg)=>{\n if (!stream.stream_ops.ioctl) throw new FS.ErrnoError(59);\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {})=>{\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") ret = UTF8ArrayToString(buf, 0);\n else if (opts.encoding === \"binary\") ret = buf;\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {})=>{\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n else throw new Error(\"Unsupported data type\");\n FS.close(stream);\n },\n cwd: ()=>FS.currentPath,\n chdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) throw new FS.ErrnoError(44);\n if (!FS.isDir(lookup.node.mode)) throw new FS.ErrnoError(54);\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) throw new FS.ErrnoError(errCode);\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: ()=>{\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: ()=>{\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: ()=>0,\n write: (stream, buffer, offset, length, pos)=>length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: ()=>{\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: ()=>{\n var node = FS.createNode(proc_self, \"fd\", 16895, 73);\n node.node_ops = {\n lookup: (parent, name)=>{\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: ()=>stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: ()=>{\n if (Module[\"stdin\"]) FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n if (Module[\"stdout\"]) FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n if (Module[\"stderr\"]) FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n else FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: ()=>{\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [\n 44\n ].forEach((code)=>{\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: ()=>{\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error)=>{\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: ()=>{\n FS.init.initialized = false;\n _fflush(0);\n for(var i = 0; i < FS.streams.length; i++){\n var stream = FS.streams[i];\n if (!stream) continue;\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite)=>{\n var mode = 0;\n if (canRead) mode |= 365;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink)=>{\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) return null;\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink)=>{\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite)=>{\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while(parts.length){\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn)=>{\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for(var i = 0, len = data.length; i < len; ++i)arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: (stream)=>{\n stream.seekable = false;\n },\n close: (stream)=>{\n if (output && output.buffer && output.buffer.length) output(10);\n },\n read: (stream, buffer, offset, length, pos)=>{\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos)=>{\n for(var i = 0; i < length; i++)try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: (obj)=>{\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n else if (read_) try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n else throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n },\n createLazyFile: (parent, name, url, canRead, canWrite)=>{\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) return undefined;\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1048576;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to)=>{\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) return new Uint8Array(xhr.response || []);\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter((chunkNum)=>{\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") lazyArray.chunks[chunkNum] = doXHR(start, end);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else var properties = {\n isDevice: false,\n url: url\n };\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) node.contents = properties.contents;\n else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach((key)=>{\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents.get(position + i);\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position)=>{\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags)=>{\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish)=>{\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, ()=>{\n if (onerror) onerror();\n removeRunDependency(dep);\n })) return;\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") asyncLoad(url, (byteArray)=>processData(byteArray), onerror);\n else processData(url);\n },\n indexedDB: ()=>{\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: ()=>{\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = ()=>{\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = ()=>{\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n try {\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var getRequest = files.get(path);\n getRequest.onsuccess = ()=>{\n if (FS.analyzePath(path).exists) FS.unlink(path);\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n };\n var SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) return path;\n var dir;\n if (dirfd === -100) dir = FS.cwd();\n else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) throw new FS.ErrnoError(44);\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) return -54;\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [\n stat.size >>> 0,\n (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [\n Math.floor(atime / 1e3) >>> 0,\n (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(mtime / 1e3) >>> 0,\n (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(ctime / 1e3) >>> 0,\n (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [\n stat.ino >>> 0,\n (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n if (flags & 2) return 0;\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n };\n function ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & -8) return -28;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) return -44;\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) return -2;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n }\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(cmd){\n case 0:\n var arg = SYSCALLS.get();\n if (arg < 0) return -28;\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4:\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n case 5:\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(op){\n case 21509:\n case 21505:\n if (!stream.tty) return -59;\n return 0;\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n if (!stream.tty) return -59;\n return 0;\n case 21519:\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n case 21520:\n if (!stream.tty) return -59;\n return -28;\n case 21531:\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n case 21523:\n if (!stream.tty) return -59;\n return 0;\n case 21524:\n if (!stream.tty) return -59;\n return 0;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var nowIsMonotonic = true;\n function __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n }\n function __emscripten_throw_longjmp() {\n throw Infinity;\n }\n function _abort() {\n abort(\"\");\n }\n function _emscripten_date_now() {\n return Date.now();\n }\n var _emscripten_get_now;\n _emscripten_get_now = ()=>performance.now();\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n }\n function getHeapMax() {\n return 2147483648;\n }\n function emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) return false;\n let alignUp = (x, multiple)=>x + (multiple - x % multiple) % multiple;\n for(var cutDown = 1; cutDown <= 4; cutDown *= 2){\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) return true;\n }\n return false;\n }\n var ENV = {};\n function getExecutableName() {\n return thisProgram || \"./this.program\";\n }\n function getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": lang,\n \"_\": getExecutableName()\n };\n for(var x in ENV)if (ENV[x] === undefined) delete env[x];\n else env[x] = ENV[x];\n var strings = [];\n for(var x in env)strings.push(x + \"=\" + env[x]);\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n }\n function writeAsciiToMemory(str, buffer, dontAddNull) {\n for(var i = 0; i < str.length; ++i)HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n }\n function _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function(string, i) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n }\n function _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function(string) {\n bufSize += string.length + 1;\n });\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n }\n function _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n }\n function exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) exitRuntime();\n _proc_exit(status);\n }\n var _exit = exitJS;\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n }\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [\n stream.position >>> 0,\n (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") return EXITSTATUS;\n quit_(1, e);\n }\n function allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n }\n function maybeExit() {\n if (!keepRuntimeAlive()) try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n function callUserCallback(func) {\n if (runtimeExited || ABORT) return;\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n }\n function runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n }\n function runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n }\n var Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [\n \"invoke_*\",\n \"emscripten_sleep\",\n \"emscripten_wget\",\n \"emscripten_wget_data\",\n \"emscripten_idb_load\",\n \"emscripten_idb_store\",\n \"emscripten_idb_delete\",\n \"emscripten_idb_exists\",\n \"emscripten_idb_load_blob\",\n \"emscripten_idb_store_blob\",\n \"SDL_Delay\",\n \"emscripten_scan_registers\",\n \"emscripten_lazy_load_code\",\n \"emscripten_fiber_swap\",\n \"__load_secondary_module\",\n \"fd_sync\",\n \"__wasi_fd_sync\",\n \"_emval_await\",\n \"_dlopen_js\",\n \"__asyncjs__*\"\n ];\n for(var x in imports)(function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n })(x);\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for(var x in exports)(function(x) {\n var original = exports[x];\n if (typeof original == \"function\") ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally{\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n else ret[x] = original;\n })(x);\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") Fibers.trampoline();\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject)=>{\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0)=>{\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) return;\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.resume();\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) throw asyncWasmReturnValue;\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.pause();\n runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach((func)=>callUserCallback(func));\n } else abort(\"invalid state: \" + Asyncify.state);\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep((wakeUp)=>{\n startAsync().then(wakeUp);\n });\n }\n };\n function AsciiToString(ptr) {\n var str = \"\";\n while(true){\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n }\n var FSNode = function(parent, name, mode, rdev) {\n if (!parent) parent = this;\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n var readMode = 365;\n var writeMode = 146;\n Object.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n });\n FS.FSNode = FSNode;\n FS.staticInit();\n var wasmImports = {\n \"s\": __asyncjs__emglken_fill_stdin_buffer,\n \"D\": ___syscall_faccessat,\n \"n\": ___syscall_fcntl64,\n \"C\": ___syscall_getcwd,\n \"B\": ___syscall_ioctl,\n \"A\": ___syscall_openat,\n \"z\": ___syscall_stat64,\n \"v\": __emscripten_get_now_is_monotonic,\n \"u\": __emscripten_throw_longjmp,\n \"t\": _abort,\n \"k\": _emscripten_date_now,\n \"r\": _emscripten_memcpy_big,\n \"q\": _emscripten_resize_heap,\n \"y\": _environ_get,\n \"x\": _environ_sizes_get,\n \"i\": _exit,\n \"m\": _fd_close,\n \"w\": _fd_read,\n \"p\": _fd_seek,\n \"l\": _fd_write,\n \"c\": invoke_i,\n \"g\": invoke_ii,\n \"f\": invoke_iiii,\n \"d\": invoke_iiiii,\n \"o\": invoke_ji,\n \"j\": invoke_v,\n \"b\": invoke_vi,\n \"a\": invoke_vii,\n \"h\": invoke_viii,\n \"e\": invoke_viiii\n };\n var asm = createWasm();\n var ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"F\"]).apply(null, arguments);\n };\n var _free = function() {\n return (_free = Module[\"asm\"][\"G\"]).apply(null, arguments);\n };\n var _malloc = function() {\n return (_malloc = Module[\"asm\"][\"H\"]).apply(null, arguments);\n };\n var _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"I\"]).apply(null, arguments);\n };\n var _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"J\"]).apply(null, arguments);\n };\n var _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"K\"]).apply(null, arguments);\n };\n var ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"L\"]).apply(null, arguments);\n };\n var ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"M\"]).apply(null, arguments);\n };\n var _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"O\"]).apply(null, arguments);\n };\n var _saveSetjmp = function() {\n return (_saveSetjmp = Module[\"asm\"][\"saveSetjmp\"]).apply(null, arguments);\n };\n var _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n };\n var stackSave = function() {\n return (stackSave = Module[\"asm\"][\"P\"]).apply(null, arguments);\n };\n var stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"Q\"]).apply(null, arguments);\n };\n var stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"R\"]).apply(null, arguments);\n };\n var dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"S\"]).apply(null, arguments);\n };\n var dynCall_iiii = Module[\"dynCall_iiii\"] = function() {\n return (dynCall_iiii = Module[\"dynCall_iiii\"] = Module[\"asm\"][\"T\"]).apply(null, arguments);\n };\n var dynCall_ii = Module[\"dynCall_ii\"] = function() {\n return (dynCall_ii = Module[\"dynCall_ii\"] = Module[\"asm\"][\"U\"]).apply(null, arguments);\n };\n var dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"V\"]).apply(null, arguments);\n };\n var dynCall_i = Module[\"dynCall_i\"] = function() {\n return (dynCall_i = Module[\"dynCall_i\"] = Module[\"asm\"][\"W\"]).apply(null, arguments);\n };\n var dynCall_v = Module[\"dynCall_v\"] = function() {\n return (dynCall_v = Module[\"dynCall_v\"] = Module[\"asm\"][\"X\"]).apply(null, arguments);\n };\n var dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() {\n return (dynCall_iiiii = Module[\"dynCall_iiiii\"] = Module[\"asm\"][\"Y\"]).apply(null, arguments);\n };\n var dynCall_viii = Module[\"dynCall_viii\"] = function() {\n return (dynCall_viii = Module[\"dynCall_viii\"] = Module[\"asm\"][\"Z\"]).apply(null, arguments);\n };\n var dynCall_viiii = Module[\"dynCall_viiii\"] = function() {\n return (dynCall_viiii = Module[\"dynCall_viiii\"] = Module[\"asm\"][\"_\"]).apply(null, arguments);\n };\n var dynCall_ji = Module[\"dynCall_ji\"] = function() {\n return (dynCall_ji = Module[\"dynCall_ji\"] = Module[\"asm\"][\"$\"]).apply(null, arguments);\n };\n var _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"aa\"]).apply(null, arguments);\n };\n var _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"ba\"]).apply(null, arguments);\n };\n var _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"ca\"]).apply(null, arguments);\n };\n var _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"da\"]).apply(null, arguments);\n };\n var ___start_em_js = Module[\"___start_em_js\"] = 107504;\n var ___stop_em_js = Module[\"___stop_em_js\"] = 110189;\n function invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_ji(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ji(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n Module[\"AsciiToString\"] = AsciiToString;\n Module[\"FS\"] = FS;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach((arg)=>{\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n }\n function run(args = arguments_) {\n if (runDependencies > 0) return;\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else doRun();\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [\n Module[\"preInit\"]\n ];\n while(Module[\"preInit\"].length > 0)Module[\"preInit\"].pop()();\n }\n var shouldRunNow = true;\n if (Module[\"noInitialRun\"]) shouldRunNow = false;\n run();\n return Module.ready;\n };\n})();\nvar $ffa7e6eb668807b5$export$2e2bcd8739ae039 = $ffa7e6eb668807b5$var$Module;\n\n\nclass $2cdf5d24028c88de$export$2e2bcd8739ae039 extends (0, $0d34edacac7ea588$export$2e2bcd8739ae039) {\n default_options() {\n return {\n vmcore: (0, $ffa7e6eb668807b5$export$2e2bcd8739ae039)\n };\n }\n}\n\n\nconst $f81570ea977e655c$var$formats = [\n {\n id: \"bocfel\",\n extensions: /z([3458]|blorb)$/,\n engine: (0, $c9beefb40b84b742$export$2e2bcd8739ae039)\n },\n {\n id: \"git\",\n extensions: /(gblorb|ulx)$/,\n engine: (0, $dd4718defa50fa2b$export$2e2bcd8739ae039)\n },\n {\n id: \"hugo\",\n extensions: /hex$/,\n engine: (0, $15823016f6668df1$export$2e2bcd8739ae039)\n },\n {\n id: \"scare\",\n extensions: /taf$/,\n engine: (0, $2cdf5d24028c88de$export$2e2bcd8739ae039)\n },\n {\n id: \"tads\",\n extensions: /(gam|t3)$/,\n engine: (0, $baf23bce1c56928c$export$2e2bcd8739ae039)\n }\n];\nconst $f81570ea977e655c$export$1784a1ff765207b7 = (filename)=>{\n const format = $f81570ea977e655c$var$formats.find((x)=>x.extensions.test(filename));\n if (format) return {\n ...format,\n /* @see staticFiles in package.json */ wasmBinaryName: `emglken/${format.id}-core.wasm`\n };\n throw new Error(\"Unsupported file type\");\n};\n\n\n\n\n/**\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/glkote-dumb.js\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/electrofs.js\n */ class $6cc55e85f69c62dc$var$FakeDialog {\n constructor(handlers, loggers){\n this.streaming = false;\n this.handlers = handlers;\n this.loggers = loggers;\n }\n file_ref_exists({ usage: usage }) {\n return usage === \"save\" ? true : false;\n }\n file_remove_ref() {\n return true;\n }\n file_construct_ref(filename, usage) {\n return {\n filename: filename,\n usage: usage || \"\"\n };\n }\n file_read(dirent, israw) {\n return this.handlers.onFileRead(dirent, israw);\n }\n file_write(dirent, content, israw) {\n if (content.length === 0) return void 0;\n this.handlers.onFileWrite(dirent, content, israw);\n }\n open(tosave, usage, gameid, callback) {\n this.handlers.onFileNameRequest(tosave, usage, gameid, callback);\n }\n log(message) {\n this.loggers.log(message);\n }\n warning(message) {\n this.loggers.warn(message);\n }\n error(message) {\n this.loggers.error(message);\n }\n}\nvar $6cc55e85f69c62dc$export$2e2bcd8739ae039 = $6cc55e85f69c62dc$var$FakeDialog;\n\n\n/**\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/glkote-dumb.js\n */ /**\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/glkote-term.js\n */ class $607a2f5df9bf3729$var$GlkOte {\n constructor({ width: width, height: height }){\n this.width = width;\n this.height = height;\n this.current_metrics = null;\n this.disabled = false;\n this.generation = 0;\n this.interface = null;\n this.version = \"0.5.1\";\n }\n measure_window() {\n return {\n width: this.width,\n height: this.height,\n buffercharheight: 1,\n buffercharwidth: 1,\n buffermarginx: 0,\n buffermarginy: 0,\n graphicsmarginx: 0,\n graphicsmarginy: 0,\n gridcharheight: 1,\n gridcharwidth: 1,\n gridmarginx: 0,\n gridmarginy: 0,\n inspacingx: 0,\n inspacingy: 0,\n outspacingx: 0,\n outspacingy: 0\n };\n }\n getinterface() {\n return this.interface;\n }\n init(iface) {\n if (!iface) this.error(\"No game interface object has been provided.\");\n if (!iface.accept) this.error(\"The game interface object must have an accept() function.\");\n this.interface = iface;\n this.current_metrics = this.measure_window();\n this.send_response(\"init\", null, this.current_metrics);\n }\n update(data) {\n if (data.type === \"error\") this.error(data.message);\n if (data.type === \"pass\") return;\n if (data.type !== \"update\" && data.type !== \"exit\") {\n this.log(`Ignoring unknown message type: ${data.type}`);\n return;\n }\n if (data.gen === this.generation) {\n this.log(`Ignoring repeated generation number: ${data.gen}`);\n return;\n }\n if (data.gen < this.generation) {\n this.log(`Ignoring out-of-order generation number: got ${data.gen}, currently at ${this.generation}`);\n return;\n }\n this.generation = data.gen;\n if (this.disabled) this.disable(false);\n /* Handle the update */ if (data.input != null) this.cancel_inputs(data.input);\n if (data.windows != null) this.update_windows(data.windows);\n if (data.content != null && data.content.length) this.update_content(data.content);\n if (data.input != null) this.update_inputs(data.input);\n /* Disable everything if requested */ this.disabled = false;\n if (data.disabled || data.specialinput) this.disable(true);\n if (data.specialinput != null) this.accept_specialinput(data.specialinput);\n /* Detach all handlers and exit */ if (data.type === \"exit\") this.exit();\n }\n send_response(type, win, val, val2) {\n const res = {\n type: type,\n gen: this.generation\n };\n if (win) res.window = win.id;\n if (type === \"init\" || type === \"arrange\") res.metrics = val;\n if (type === \"init\") res.support = this.support();\n if (type === \"char\") res.value = val;\n if (type === \"line\") res.value = val;\n if (type === \"specialresponse\") {\n res.response = val;\n res.value = val2;\n }\n this.interface.accept(res);\n }\n support() {\n return [];\n }\n}\nvar $607a2f5df9bf3729$export$2e2bcd8739ae039 = $607a2f5df9bf3729$var$GlkOte;\n\n\nclass $2e4ae466f1c769fd$var$CheapGlkOte extends (0, $607a2f5df9bf3729$export$2e2bcd8739ae039) {\n constructor(handlers, loggers, size){\n super(size);\n this.handlers = handlers;\n this.loggers = loggers;\n }\n sendFn(message, type, window) {\n this.send_response(type, window, message);\n }\n init(iface) {\n this.handlers.onInit();\n super.init(iface);\n }\n update_inputs(data) {\n if (!data.length) return [];\n this.handlers.onUpdateInputs(data);\n }\n accept_specialinput(data) {\n if (data.type === \"fileref_prompt\") {\n const callback = (ref)=>this.send_response(\"specialresponse\", null, \"fileref_prompt\", ref);\n this.interface.Dialog.open(data.filemode !== \"read\", data.filetype, data.gameid, callback);\n } else this.error(\"Request for unknown special input type: \" + data.type);\n }\n update_content(messages) {\n this.handlers.onUpdateContent(messages);\n }\n exit() {\n this.handlers.onExit();\n super.exit();\n }\n cancel_inputs(data) {\n this.handlers.onUpdateInputs(data);\n }\n disable(data) {\n this.handlers.onDisable(data);\n }\n update_windows(windows) {\n this.handlers.onUpdateWindows(windows);\n }\n log(message) {\n this.loggers.log(message);\n }\n warning(message) {\n this.loggers.warn(message);\n }\n error(message) {\n this.loggers.error(message);\n }\n}\nvar $2e4ae466f1c769fd$export$2e2bcd8739ae039 = $2e4ae466f1c769fd$var$CheapGlkOte;\n\n\nconst $f4aad693a7eb1cab$var$noop = ()=>void 0;\nconst $f4aad693a7eb1cab$var$defaultHandlers = [\n \"onInit\",\n \"onUpdateWindows\",\n \"onUpdateInputs\",\n \"onUpdateContent\",\n \"onDisable\",\n \"onFileNameRequest\",\n \"onFileRead\",\n \"onFileWrite\",\n \"onExit\"\n].reduce((acc, x)=>(acc[x] = $f4aad693a7eb1cab$var$noop, acc), {});\nconst $f4aad693a7eb1cab$var$defaultLoggers = {\n log: console.log,\n warning: console.warn,\n error: console.error\n};\nconst $f4aad693a7eb1cab$var$defaultSize = {\n width: 80,\n height: 25\n};\nvar $f4aad693a7eb1cab$export$2e2bcd8739ae039 = (handlers_, { loggers: loggers_, size: size_ } = {})=>{\n const handlers = Object.assign({}, $f4aad693a7eb1cab$var$defaultHandlers, handlers_);\n const loggers = Object.assign({}, $f4aad693a7eb1cab$var$defaultLoggers, loggers_);\n const size = Object.assign({}, $f4aad693a7eb1cab$var$defaultSize, size_);\n const Dialog = new (0, $6cc55e85f69c62dc$export$2e2bcd8739ae039)(handlers, loggers);\n const GlkOte = new (0, $2e4ae466f1c769fd$export$2e2bcd8739ae039)(handlers, loggers, size);\n const send = GlkOte.sendFn.bind(GlkOte);\n return {\n Dialog: Dialog,\n GlkOte: GlkOte,\n send: send\n };\n};\n\n\n\n\n\nvar $f70f6ed8aa0167f4$exports = {};\n\n$parcel$export($f70f6ed8aa0167f4$exports, \"emphasized\", function () { return $f70f6ed8aa0167f4$export$1ee2ee71de083e4d; }, function (v) { return $f70f6ed8aa0167f4$export$1ee2ee71de083e4d = v; });\n$parcel$export($f70f6ed8aa0167f4$exports, \"input\", function () { return $f70f6ed8aa0167f4$export$b7e3ae3d7c15e42e; }, function (v) { return $f70f6ed8aa0167f4$export$b7e3ae3d7c15e42e = v; });\n$parcel$export($f70f6ed8aa0167f4$exports, \"message\", function () { return $f70f6ed8aa0167f4$export$a8ecead220dd38a6; }, function (v) { return $f70f6ed8aa0167f4$export$a8ecead220dd38a6 = v; });\n$parcel$export($f70f6ed8aa0167f4$exports, \"scrollTarget\", function () { return $f70f6ed8aa0167f4$export$64cbebf88d5f7b08; }, function (v) { return $f70f6ed8aa0167f4$export$64cbebf88d5f7b08 = v; });\n$parcel$export($f70f6ed8aa0167f4$exports, \"subheader\", function () { return $f70f6ed8aa0167f4$export$d61e5f8e032e1547; }, function (v) { return $f70f6ed8aa0167f4$export$d61e5f8e032e1547 = v; });\nvar $f70f6ed8aa0167f4$export$1ee2ee71de083e4d;\nvar $f70f6ed8aa0167f4$export$b7e3ae3d7c15e42e;\nvar $f70f6ed8aa0167f4$export$a8ecead220dd38a6;\nvar $f70f6ed8aa0167f4$export$64cbebf88d5f7b08;\nvar $f70f6ed8aa0167f4$export$d61e5f8e032e1547;\n$f70f6ed8aa0167f4$export$1ee2ee71de083e4d = `hBGgUq_emphasized`;\n$f70f6ed8aa0167f4$export$b7e3ae3d7c15e42e = `hBGgUq_input`;\n$f70f6ed8aa0167f4$export$a8ecead220dd38a6 = `hBGgUq_message`;\n$f70f6ed8aa0167f4$export$64cbebf88d5f7b08 = `hBGgUq_scrollTarget`;\n$f70f6ed8aa0167f4$export$d61e5f8e032e1547 = `hBGgUq_subheader`;\n\n\nfunction $ae4b80531b5b7eb5$export$2e2bcd8739ae039({ style: style, text: text }) {\n const defaultContent = /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"span\", {\n className: [\n $f70f6ed8aa0167f4$exports.message,\n $f70f6ed8aa0167f4$exports[style]\n ].join(\" \"),\n children: text\n });\n return ({\n grid: text?.length > 0 ? /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n children: text\n }) : /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"br\", {}),\n input: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"span\", {\n className: [\n $f70f6ed8aa0167f4$exports.message,\n $f70f6ed8aa0167f4$exports.input\n ].join(\" \"),\n children: [\n \"> \",\n text\n ]\n }),\n subheader: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"strong\", {\n className: [\n $f70f6ed8aa0167f4$exports.message,\n $f70f6ed8aa0167f4$exports.subheader\n ].join(\" \"),\n children: text\n }),\n emphasized: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"em\", {\n className: [\n $f70f6ed8aa0167f4$exports.message,\n $f70f6ed8aa0167f4$exports.emphasized\n ].join(\" \"),\n children: text\n }),\n scrollTarget: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $f70f6ed8aa0167f4$exports.scrollTarget,\n style\n ].join(\" \")\n }),\n endOfLine: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"br\", {})\n })[style] || defaultContent;\n}\n\n\nvar $e3c97f2521259165$export$ab1029bcae9ddb4a;\nvar $e3c97f2521259165$export$d7f0ba9e5e132b36;\nvar $e3c97f2521259165$export$347a3a46df242257;\nvar $e3c97f2521259165$export$c789db2c85949867;\nvar $e3c97f2521259165$export$6181eef8f2dfdf3c;\n$e3c97f2521259165$export$ab1029bcae9ddb4a = `PwGQsW_buffer`;\n$e3c97f2521259165$export$d7f0ba9e5e132b36 = `PwGQsW_elseifplayer`;\n$e3c97f2521259165$export$347a3a46df242257 = `PwGQsW_gridBuffer`;\n$e3c97f2521259165$export$c789db2c85949867 = `PwGQsW_output`;\n$e3c97f2521259165$export$6181eef8f2dfdf3c = `PwGQsW_textBuffer`;\n\n\nconst $62a526398d9e890e$var$eol = {\n style: \"endOfLine\"\n};\nconst $62a526398d9e890e$var$scrollTarget = {\n style: \"scrollTarget\"\n};\nconst $62a526398d9e890e$var$isFakeStatus = (w)=>w.height < 5;\nconst $62a526398d9e890e$var$trimInputPrompt = (messages)=>messages.length < 1 ? messages : messages.slice(-1)[0].text === \">\" ? messages.slice(0, messages.length - 1) : messages;\nconst $62a526398d9e890e$var$parseInbox = (inbox, currentWindow)=>{\n const currentInbox = inbox.find(({ id: id })=>id === currentWindow.id);\n if (!currentInbox) return {\n clear: false,\n incoming: [\n $62a526398d9e890e$var$scrollTarget\n ]\n };\n const { text: inboxMessagesRaw } = currentInbox;\n const incoming = inboxMessagesRaw/* Normalize. */ .map(({ content: content })=>content ? [\n ...$62a526398d9e890e$var$trimInputPrompt(content),\n $62a526398d9e890e$var$eol\n ] : [\n $62a526398d9e890e$var$eol\n ])/* Flatten. */ .reduce((acc, x)=>acc.concat(x), [\n $62a526398d9e890e$var$scrollTarget\n ]);\n return {\n incoming: incoming,\n clear: $62a526398d9e890e$var$isFakeStatus(currentWindow) ? true : currentInbox.clear\n };\n};\nfunction $62a526398d9e890e$export$2e2bcd8739ae039({ inbox: inbox, currentWindow: currentWindow }) {\n const [messages, setMessages] = (0, $70db777e8f6135ab$export$60241385465d0a34)([]);\n const textBufferEl = (0, $70db777e8f6135ab$export$b8f5890fc79d6aca)(null);\n (0, $70db777e8f6135ab$export$6d9c69b0de29b591)(()=>{\n const { incoming: incoming, clear: clear } = $62a526398d9e890e$var$parseInbox(inbox, currentWindow);\n setMessages((messages)=>clear ? incoming : messages.concat(incoming));\n setTimeout(()=>{\n const scrollTargets = textBufferEl.current.querySelectorAll(`.${$62a526398d9e890e$var$scrollTarget.style}`);\n const freshScrollTarget = scrollTargets[scrollTargets.length - 1];\n freshScrollTarget ? freshScrollTarget.scrollIntoView() : textBufferEl.current.scrollTo({\n top: textBufferEl.current.scrollHeight,\n behavior: \"smooth\"\n });\n }, 0);\n }, [\n currentWindow,\n inbox\n ]);\n const classes = ()=>[\n $e3c97f2521259165$export$ab1029bcae9ddb4a,\n $62a526398d9e890e$var$isFakeStatus(currentWindow) ? $e3c97f2521259165$export$347a3a46df242257 : $e3c97f2521259165$export$6181eef8f2dfdf3c\n ].join(\" \");\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n tabindex: \"0\",\n ref: textBufferEl,\n className: classes(),\n children: messages.map((0, $ae4b80531b5b7eb5$export$2e2bcd8739ae039))\n });\n}\n\n\n\n\n\n\nfunction $fc1a9d8e897a3f88$export$2e2bcd8739ae039({ inbox: inbox, currentWindow: currentWindow }) {\n const [prevMessages, setPrevMessages] = (0, $70db777e8f6135ab$export$60241385465d0a34)([]);\n const [messages, setMessages] = (0, $70db777e8f6135ab$export$60241385465d0a34)([]);\n (0, $70db777e8f6135ab$export$6d9c69b0de29b591)(()=>{\n const currentInboxObj = inbox.find(({ id: id })=>id === currentWindow.id);\n const currentInbox = currentInboxObj?.lines ?? [];\n const newOrPrev = (cur, prev)=>(i)=>{\n const byId = (list, i)=>list.find(({ line: line })=>line === i);\n return byId(cur, i) || byId(prev, i);\n };\n const rawMessages = Array(currentWindow.gridheight).fill(null).map((_, i)=>i).map(newOrPrev(currentInbox, prevMessages));\n /* */ const shouldUpdatePrev = (rawMessages, prevMessages)=>{\n const serialize = JSON.stringify;\n return serialize(rawMessages) !== serialize(prevMessages);\n };\n if (shouldUpdatePrev(rawMessages, prevMessages)) setPrevMessages(rawMessages);\n /* */ const rawMessagesContent = rawMessages.map((x)=>x.content).flat().map((message)=>({\n ...message,\n text: message.text.trim()\n }));\n const isEmpty = rawMessagesContent.map(({ text: text })=>text.length).every((l)=>l === 0);\n const getGridStyle = ({ style: style })=>{\n if ([\n \"alert\",\n \"normal\"\n ].includes(style)) return \"grid\";\n return style || \"grid\";\n };\n const messages = rawMessagesContent.map((message)=>({\n style: getGridStyle(message),\n text: message.text.replace(\" \", \" / \")\n }));\n setMessages(isEmpty ? [] : messages);\n }, [\n inbox,\n currentWindow,\n prevMessages\n ]);\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n className: [\n $e3c97f2521259165$export$ab1029bcae9ddb4a,\n $e3c97f2521259165$export$347a3a46df242257\n ].join(\" \"),\n children: messages.map((0, $ae4b80531b5b7eb5$export$2e2bcd8739ae039))\n });\n}\n\n\n\n\n\nvar $689588708ca7989d$export$2bacab2130704b28;\nvar $689588708ca7989d$export$8439e0443b88eae;\n$689588708ca7989d$export$2bacab2130704b28 = `gUkI1a_menuButton`;\n$689588708ca7989d$export$8439e0443b88eae = `gUkI1a_menuIcon`;\n\n\nfunction $522ef20c4411156f$export$2e2bcd8739ae039({ onClick: onClick }) {\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"button\", {\n \"aria-label\": \"Menu\",\n className: $689588708ca7989d$export$2bacab2130704b28,\n onClick: onClick,\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"svg\", {\n class: $689588708ca7989d$export$8439e0443b88eae,\n viewBox: \"0 0 28 32\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"rect\", {\n x: \"12\",\n y: \"4\",\n width: \"4\",\n height: \"4\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"rect\", {\n x: \"12\",\n y: \"14\",\n width: \"4\",\n height: \"4\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"rect\", {\n x: \"12\",\n y: \"24\",\n width: \"4\",\n height: \"4\"\n })\n ]\n })\n });\n}\n\n\nvar $8fe91735af38ec13$export$1d6e32fec5a4f082;\nvar $8fe91735af38ec13$export$4a36d31092c0d718;\n$8fe91735af38ec13$export$1d6e32fec5a4f082 = `LdLucW_inputBox`;\n$8fe91735af38ec13$export$4a36d31092c0d718 = `LdLucW_inputControls`;\n\n\n/* eslint-disable */ const $09c2ae0a56d4216f$var$keyCodes = {\n KEY_BACKSPACE: 8,\n KEY_TAB: 9,\n KEY_RETURN: 13,\n KEY_ESC: 27,\n KEY_PAGEUP: 33,\n KEY_PAGEDOWN: 34,\n KEY_END: 35,\n KEY_HOME: 36,\n KEY_LEFT: 37,\n KEY_UP: 38,\n KEY_RIGHT: 39,\n KEY_DOWN: 40\n};\nconst $09c2ae0a56d4216f$var$keyNames = {\n [$09c2ae0a56d4216f$var$keyCodes.KEY_BACKSPACE]: \"delete\",\n [$09c2ae0a56d4216f$var$keyCodes.KEY_TAB]: \"tab\",\n [$09c2ae0a56d4216f$var$keyCodes.KEY_RETURN]: \"return\",\n [$09c2ae0a56d4216f$var$keyCodes.KEY_ESC]: \"escape\",\n [$09c2ae0a56d4216f$var$keyCodes.KEY_PAGEUP]: \"pageup\",\n [$09c2ae0a56d4216f$var$keyCodes.KEY_PAGEDOWN]: \"pagedown\",\n [$09c2ae0a56d4216f$var$keyCodes.KEY_END]: \"end\",\n [$09c2ae0a56d4216f$var$keyCodes.KEY_HOME]: \"home\",\n [$09c2ae0a56d4216f$var$keyCodes.KEY_LEFT]: \"left\",\n [$09c2ae0a56d4216f$var$keyCodes.KEY_UP]: \"up\",\n [$09c2ae0a56d4216f$var$keyCodes.KEY_RIGHT]: \"right\",\n [$09c2ae0a56d4216f$var$keyCodes.KEY_DOWN]: \"down\"\n};\n/* eslint-enable */ const $09c2ae0a56d4216f$var$hasModifier = (event)=>{\n const modifiers = [\n event.altKey,\n event.ctrlKey,\n event.metaKey,\n event.shiftKey\n ];\n return modifiers.some((modifier)=>modifier === true);\n};\nfunction $09c2ae0a56d4216f$export$2e2bcd8739ae039({ inputType: inputType, windows: windows, currentWindowId: currentWindowId, sendMessage: sendMessage, onFullscreenRequest: onFullscreenRequest, setMenuOpen: setMenuOpen }) {\n const [targetWindow, setTargetWindow] = (0, $70db777e8f6135ab$export$60241385465d0a34)(null);\n const [inputText, setInputText] = (0, $70db777e8f6135ab$export$60241385465d0a34)(\"\");\n const [lastInput, setLastInput] = (0, $70db777e8f6135ab$export$60241385465d0a34)(\"\");\n const inputEl = (0, $70db777e8f6135ab$export$b8f5890fc79d6aca)(null);\n (0, $70db777e8f6135ab$export$6d9c69b0de29b591)(()=>{\n let setFocus = ()=>{\n inputEl.current && inputEl.current.focus();\n };\n setInputText(\"\");\n setFocus();\n document.addEventListener(\"fullscreenchange\", setFocus);\n return ()=>document.removeEventListener(\"fullscreenchange\", setFocus);\n }, [\n inputType\n ]);\n (0, $70db777e8f6135ab$export$6d9c69b0de29b591)(()=>{\n setTargetWindow(windows.find(({ id: id })=>id === currentWindowId));\n }, [\n currentWindowId,\n windows\n ]);\n const send = (message)=>{\n sendMessage(message, inputType, targetWindow);\n setLastInput(message);\n setInputText(\"\");\n };\n const charHandler = (event)=>(event.keyCode === 229 ? charHandlerMobile : charHandlerDefault)(event);\n const charHandlerDefault = (event)=>{\n if ($09c2ae0a56d4216f$var$hasModifier(event)) return undefined;\n event.preventDefault();\n const key = $09c2ae0a56d4216f$var$keyNames[event.keyCode] || event.key;\n send(key);\n };\n const charHandlerMobile = (event)=>setTimeout(()=>{\n send(event.target.value.slice(-1).toUpperCase());\n setInputText(\"\");\n });\n const lineHandler = ({ keyCode: keyCode, target: { value: value } })=>{\n if (keyCode === $09c2ae0a56d4216f$var$keyCodes.KEY_RETURN) send(value);\n };\n const lineArrowHandler = ({ keyCode: keyCode })=>{\n if (keyCode === $09c2ae0a56d4216f$var$keyCodes.KEY_UP) {\n setInputText(lastInput);\n setTimeout(()=>{\n const end = lastInput.length;\n inputEl.current.setSelectionRange(end, end);\n }, 0);\n }\n if (keyCode === $09c2ae0a56d4216f$var$keyCodes.KEY_DOWN) setInputText(\"\");\n };\n const inputHandlers = {\n char: {\n maxlength: \"1\",\n placeholder: \"Press any key here\",\n onKeyDown: charHandler\n },\n line: {\n placeholder: \" > \",\n onKeyDown: lineArrowHandler,\n onKeyPress: lineHandler\n },\n finished: {\n placeholder: \"The program has finished\",\n disabled: true\n }\n };\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n className: $8fe91735af38ec13$export$4a36d31092c0d718,\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"input\", {\n ...inputHandlers[inputType],\n className: $8fe91735af38ec13$export$1d6e32fec5a4f082,\n ref: inputEl,\n value: inputText,\n autofocus: true,\n autocomplete: \"off\",\n spellCheck: \"false\",\n autocapitalize: \"off\",\n autocorrect: \"off\",\n onDblClick: onFullscreenRequest,\n onInput: ({ target: { value: value } })=>setInputText(value),\n type: \"search\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $522ef20c4411156f$export$2e2bcd8739ae039), {\n onClick: ()=>setMenuOpen(true)\n })\n ]\n });\n}\n\n\n\n\nvar $7af367459ad7e190$export$cef8ff1a2814f0d7;\nvar $7af367459ad7e190$export$46c1c92549715335;\nvar $7af367459ad7e190$export$471f7ae5c4103ae1;\n$7af367459ad7e190$export$cef8ff1a2814f0d7 = `zi213q_dots0123`;\n$7af367459ad7e190$export$cef8ff1a2814f0d7;\n$7af367459ad7e190$export$46c1c92549715335 = `zi213q_loading`;\n$7af367459ad7e190$export$471f7ae5c4103ae1 = `zi213q_status`;\n\n\nconst $3f6f728901b29270$var$fail = (details)=>/*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $7af367459ad7e190$export$471f7ae5c4103ae1\n ].join(\" \"),\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"h1\", {\n children: \"Error\"\n }),\n details.map((x)=>/*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"p\", {\n children: x\n }, x)),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"hr\", {}),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$a6c7ac8248d6e38a), {\n href: \"/\",\n children: \"Home\"\n }),\n \"|\",\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://github.com/He4eT/elseifplayer/issues\",\n children: \"Report bug\"\n })\n ]\n });\nconst $3f6f728901b29270$var$loading = (details)=>/*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $7af367459ad7e190$export$471f7ae5c4103ae1,\n $7af367459ad7e190$export$46c1c92549715335\n ].join(\" \"),\n children: details.map((x)=>/*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n children: x\n }, x))\n });\nvar $3f6f728901b29270$export$2e2bcd8739ae039 = ({ stage: stage, details: details })=>({\n fail: $3f6f728901b29270$var$fail,\n loading: $3f6f728901b29270$var$loading\n })[stage](details);\n\n\n/**\r\n Base32768 is a binary-to-text encoding optimised for UTF-16-encoded text.\r\n (e.g. Windows, Java, JavaScript)\r\n*/ // Z is a number, usually a uint15 but sometimes a uint7\nconst $5dd12ecabd972271$var$BITS_PER_CHAR = 15 // Base32768 is a 15-bit encoding\n;\nconst $5dd12ecabd972271$var$BITS_PER_BYTE = 8;\nconst $5dd12ecabd972271$var$pairStrings = [\n \"ҠҿԀԟڀڿݠޟ߀ߟကဟႠႿᄀᅟᆀᆟᇠሿበቿዠዿጠጿᎠᏟᐠᙟᚠᛟកសᠠᡟᣀᣟᦀᦟ᧠᧿ᨠᨿᯀᯟᰀᰟᴀᴟ⇠⇿⋀⋟⍀⏟␀␟─❟➀➿⠀⥿⦠⦿⨠⩟⪀⪿⫠⭟ⰀⰟⲀⳟⴀⴟⵀⵟ⺠⻟㇀㇟㐀䶟䷀龿ꀀꑿ꒠꒿ꔀꗿꙀꙟꚠꛟ꜀ꝟꞀꞟꡀꡟ\",\n \"ƀƟɀʟ\"\n];\nconst $5dd12ecabd972271$var$lookupE = {};\nconst $5dd12ecabd972271$var$lookupD = {};\n$5dd12ecabd972271$var$pairStrings.forEach((pairString, r)=>{\n // Decompression\n const encodeRepertoire = [];\n pairString.match(/../gu).forEach((pair)=>{\n const first = pair.codePointAt(0);\n const last = pair.codePointAt(1);\n for(let codePoint = first; codePoint <= last; codePoint++)encodeRepertoire.push(String.fromCodePoint(codePoint));\n });\n const numZBits = $5dd12ecabd972271$var$BITS_PER_CHAR - $5dd12ecabd972271$var$BITS_PER_BYTE * r // 0 -> 15, 1 -> 7\n ;\n $5dd12ecabd972271$var$lookupE[numZBits] = encodeRepertoire;\n encodeRepertoire.forEach((chr, z)=>{\n $5dd12ecabd972271$var$lookupD[chr] = [\n numZBits,\n z\n ];\n });\n});\nconst $5dd12ecabd972271$export$c564cdbbe6da493 = (uint8Array)=>{\n const length = uint8Array.length;\n let str = \"\";\n let z = 0;\n let numZBits = 0;\n for(let i = 0; i < length; i++){\n const uint8 = uint8Array[i];\n // Take most significant bit first\n for(let j = $5dd12ecabd972271$var$BITS_PER_BYTE - 1; j >= 0; j--){\n const bit = uint8 >> j & 1;\n z = (z << 1) + bit;\n numZBits++;\n if (numZBits === $5dd12ecabd972271$var$BITS_PER_CHAR) {\n str += $5dd12ecabd972271$var$lookupE[numZBits][z];\n z = 0;\n numZBits = 0;\n }\n }\n }\n if (numZBits !== 0) {\n // Final bits require special treatment.\n // z = bbbbbbcccccccc, numZBits = 14, padBits = 1\n // z = bbbbbcccccccc, numZBits = 13, padBits = 2\n // z = bbbbcccccccc, numZBits = 12, padBits = 3\n // z = bbbcccccccc, numZBits = 11, padBits = 4\n // z = bbcccccccc, numZBits = 10, padBits = 5\n // z = bcccccccc, numZBits = 9, padBits = 6\n // z = cccccccc, numZBits = 8, padBits = 7\n // => Pad `z` out to 15 bits using 1s, then encode as normal (r = 0)\n // z = ccccccc, numZBits = 7, padBits = 0\n // z = cccccc, numZBits = 6, padBits = 1\n // z = ccccc, numZBits = 5, padBits = 2\n // z = cccc, numZBits = 4, padBits = 3\n // z = ccc, numZBits = 3, padBits = 4\n // z = cc, numZBits = 2, padBits = 5\n // z = c, numZBits = 1, padBits = 6\n // => Pad `z` out to 7 bits using 1s, then encode specially (r = 1)\n while(!(numZBits in $5dd12ecabd972271$var$lookupE)){\n z = (z << 1) + 1;\n numZBits++;\n }\n str += $5dd12ecabd972271$var$lookupE[numZBits][z];\n }\n return str;\n};\nconst $5dd12ecabd972271$export$2f872c0f2117be69 = (str)=>{\n const length = str.length;\n // This length is a guess. There's a chance we allocate one more byte here\n // than we actually need. But we can count and slice it off later\n const uint8Array = new Uint8Array(Math.floor(length * $5dd12ecabd972271$var$BITS_PER_CHAR / $5dd12ecabd972271$var$BITS_PER_BYTE));\n let numUint8s = 0;\n let uint8 = 0;\n let numUint8Bits = 0;\n for(let i = 0; i < length; i++){\n const chr = str.charAt(i);\n if (!(chr in $5dd12ecabd972271$var$lookupD)) throw new Error(`Unrecognised Base32768 character: ${chr}`);\n const [numZBits, z] = $5dd12ecabd972271$var$lookupD[chr];\n if (numZBits !== $5dd12ecabd972271$var$BITS_PER_CHAR && i !== length - 1) throw new Error(\"Secondary character found before end of input at position \" + String(i));\n // Take most significant bit first\n for(let j = numZBits - 1; j >= 0; j--){\n const bit = z >> j & 1;\n uint8 = (uint8 << 1) + bit;\n numUint8Bits++;\n if (numUint8Bits === $5dd12ecabd972271$var$BITS_PER_BYTE) {\n uint8Array[numUint8s] = uint8;\n numUint8s++;\n uint8 = 0;\n numUint8Bits = 0;\n }\n }\n }\n // Final padding bits! Requires special consideration!\n // Remember how we always pad with 1s?\n // Note: there could be 0 such bits, check still works though\n if (uint8 !== (1 << numUint8Bits) - 1) throw new Error(\"Padding mismatch\");\n return new Uint8Array(uint8Array.buffer, 0, numUint8s);\n};\n\n\nconst $d19a0378e1073758$export$fe1040197752eb59 = ({ setStatus: setStatus, setWindows: setWindows, setCurrentWindowId: setCurrentWindowId, setInputType: setInputType, setInbox: setInbox })=>({\n onInit: ()=>{\n setStatus({\n stage: \"ready\"\n });\n },\n /* */ onUpdateWindows: (windows)=>{\n setWindows(windows);\n },\n onUpdateInputs: (data)=>{\n if (data.length === 0) return null;\n const { type: type, id: id } = data[0];\n setCurrentWindowId(id);\n setInputType(type);\n },\n onUpdateContent: (inbox)=>{\n setInbox(inbox);\n },\n onDisable: ()=>{\n setInputType(null);\n },\n /* */ onFileNameRequest: (_tosave, usage, _gameId, setFileName)=>{\n setFileName({\n usage: usage,\n filename: prompt(\"Enter the filename\")\n });\n },\n onFileRead: ({ filename: filename })=>{\n const content = localStorage.getItem(`fake-fs/${filename}`);\n return (0, $5dd12ecabd972271$export$2f872c0f2117be69)(content);\n },\n onFileWrite: ({ filename: filename }, content)=>{\n localStorage.setItem(`fake-fs/${filename}`, (0, $5dd12ecabd972271$export$c564cdbbe6da493)(content));\n },\n /* */ onExit: ()=>{\n setInputType(\"finished\");\n }\n });\nconst $d19a0378e1073758$export$877ebb39146e6928 = (onExit)=>(event)=>{\n if (event.reason.name === \"ExitStatus\" || event.reason.message === \"Program terminated with exit(0)\") onExit();\n else console.error(\"Unhandled rejection (promise: \", event.promise, \", reason: \", event.reason, \").\");\n event.preventDefault();\n };\n\n\n\nconst $bb36c7040b61e80d$var$INITIAL_STATUS = {\n stage: \"loading\",\n details: [\n \"Preparing\"\n ]\n};\nconst $bb36c7040b61e80d$var$runMachine = ({ engine: Engine, wasmBinary: wasmBinary, storyfile: storyfile, handlers: handlers })=>{\n const { Dialog: Dialog, GlkOte: GlkOte, send: send } = (0, $f4aad693a7eb1cab$export$2e2bcd8739ae039)(handlers);\n const instance = new Engine();\n instance.init(storyfile, {\n Dialog: Dialog,\n GlkOte: GlkOte,\n Glk: {},\n wasmBinary: wasmBinary,\n arguments: [\n \"storyfile\"\n ]\n });\n instance.start();\n return {\n send: send,\n instance: instance\n };\n};\nfunction $bb36c7040b61e80d$export$2e2bcd8739ae039({ vmParts: { storyfile: storyfile, engine: engine, wasmBinary: wasmBinary }, onFullscreenRequest: onFullscreenRequest, setMenuOpen: setMenuOpen, singleWindow: singleWindow }) {\n const [status, setStatus] = (0, $70db777e8f6135ab$export$60241385465d0a34)($bb36c7040b61e80d$var$INITIAL_STATUS);\n const [windows, setWindows] = (0, $70db777e8f6135ab$export$60241385465d0a34)([]);\n const [currentWindowId, setCurrentWindowId] = (0, $70db777e8f6135ab$export$60241385465d0a34)(null);\n const [inputType, setInputType] = (0, $70db777e8f6135ab$export$60241385465d0a34)(null);\n const [inbox, setInbox] = (0, $70db777e8f6135ab$export$60241385465d0a34)([]);\n const [vm, setVm] = (0, $70db777e8f6135ab$export$60241385465d0a34)(null);\n const [sendMessage, setSendMessage] = (0, $70db777e8f6135ab$export$60241385465d0a34)(null);\n (0, $70db777e8f6135ab$export$6d9c69b0de29b591)(()=>{\n const handlers = (0, $d19a0378e1073758$export$fe1040197752eb59)({\n setStatus: setStatus,\n setWindows: setWindows,\n setCurrentWindowId: setCurrentWindowId,\n setInputType: setInputType,\n setInbox: setInbox\n });\n setVm($bb36c7040b61e80d$var$runMachine({\n engine: engine,\n wasmBinary: wasmBinary,\n storyfile: storyfile,\n handlers: handlers\n }));\n const rejectionHandler = (0, $d19a0378e1073758$export$877ebb39146e6928)(handlers.onExit);\n window.addEventListener(\"unhandledrejection\", rejectionHandler);\n return ()=>{\n setVm(null);\n window.removeEventListener(\"unhandledrejection\", rejectionHandler);\n };\n }, [\n storyfile,\n engine,\n wasmBinary\n ]);\n (0, $70db777e8f6135ab$export$6d9c69b0de29b591)(()=>{\n setSendMessage(()=>vm ? vm.send : null);\n return ()=>setSendMessage(null);\n }, [\n vm\n ]);\n const textWindow = (inbox)=>(currentWindow)=>{\n const props = {\n inbox: inbox,\n currentWindow: currentWindow\n };\n return ({\n buffer: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $62a526398d9e890e$export$2e2bcd8739ae039), {\n ...props\n }),\n grid: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $fc1a9d8e897a3f88$export$2e2bcd8739ae039), {\n ...props\n })\n })[currentWindow.type];\n };\n const byTop = (a, b)=>a.top - b.top;\n return status.stage !== \"ready\" ? /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $3f6f728901b29270$export$2e2bcd8739ae039), {\n ...status\n }) : /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n className: $e3c97f2521259165$export$d7f0ba9e5e132b36,\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n className: $e3c97f2521259165$export$c789db2c85949867,\n children: windows.sort(byTop).filter(singleWindow ? ({ id: id })=>id === currentWindowId : ()=>true).map(textWindow(inbox))\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $09c2ae0a56d4216f$export$2e2bcd8739ae039), {\n inputType: inputType,\n windows: windows,\n currentWindowId: currentWindowId,\n sendMessage: sendMessage,\n onFullscreenRequest: onFullscreenRequest,\n setMenuOpen: setMenuOpen\n })\n ]\n });\n}\n\n\n\nconst $f70ed90b8b4541bd$var$INITIAL_STATUS = {\n stage: \"loading\",\n details: [\n \"Loading\"\n ]\n};\nconst $f70ed90b8b4541bd$var$prepareVM = ({ url: url, setStatus: setStatus, setParts: setParts })=>{\n const st = (stage, details)=>(args)=>{\n setStatus({\n stage: stage,\n details: [\n details\n ]\n });\n return args;\n };\n const cleanUrl = (url)=>url.startsWith(\"blob:\") ? url.replace(/#(.*)$/g, \"\") : url;\n const fetchWasm = (wasmBinaryName)=>fetch(wasmBinaryName).then((response)=>response.arrayBuffer());\n const checkResponse = (response)=>{\n if (response.ok) return response;\n throw new Error(response.statusText);\n };\n return Promise.resolve(url).then(st(\"loading\", \"Downloading file\")).then(cleanUrl).then(fetch).then(checkResponse).then(st(\"loading\", \"Processing file\")).then((response)=>response.arrayBuffer()).then((arrayBuffer)=>new Uint8Array(arrayBuffer)).then(st(\"loading\", \"Downloading engine\")).then((storyfile)=>{\n let parts = (0, $f81570ea977e655c$export$1784a1ff765207b7)(url);\n return [\n storyfile,\n parts.engine,\n parts.wasmBinaryName\n ];\n }).then(([storyfile, engine, wasmBinaryName])=>Promise.all([\n storyfile,\n engine,\n fetchWasm(wasmBinaryName)\n ])).then(([storyfile, engine, wasmBinary])=>setParts({\n storyfile: storyfile,\n engine: engine,\n wasmBinary: wasmBinary\n })).then(st(\"loading\", \"Running\")).catch((e)=>{\n console.error(e);\n setStatus({\n stage: \"fail\",\n details: [\n e.message,\n url\n ]\n });\n });\n};\nfunction $f70ed90b8b4541bd$export$2e2bcd8739ae039({ url: url, singleWindow: singleWindow, onFullscreenRequest: onFullscreenRequest, setMenuOpen: setMenuOpen }) {\n const [status, setStatus] = (0, $70db777e8f6135ab$export$60241385465d0a34)($f70ed90b8b4541bd$var$INITIAL_STATUS);\n const [vmParts, setParts] = (0, $70db777e8f6135ab$export$60241385465d0a34)(null);\n (0, $70db777e8f6135ab$export$6d9c69b0de29b591)(()=>{\n setStatus($f70ed90b8b4541bd$var$INITIAL_STATUS);\n setParts(null);\n $f70ed90b8b4541bd$var$prepareVM({\n url: url,\n setStatus: setStatus,\n setParts: setParts\n });\n return ()=>setParts(null);\n }, [\n url\n ]);\n return vmParts ? /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $bb36c7040b61e80d$export$2e2bcd8739ae039), {\n vmParts: vmParts,\n onFullscreenRequest: onFullscreenRequest,\n setMenuOpen: setMenuOpen,\n singleWindow: singleWindow\n }) : /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $3f6f728901b29270$export$2e2bcd8739ae039), {\n ...status\n });\n}\n\n\n\n\n\n\nvar $121ad78bb5ad2711$export$d90360df408c8ceb;\nvar $121ad78bb5ad2711$export$b1e5508a851be14d;\nvar $121ad78bb5ad2711$export$428e7c787d57587d;\n$121ad78bb5ad2711$export$d90360df408c8ceb = `J9zJZG_appearance`;\n$121ad78bb5ad2711$export$b1e5508a851be14d = `J9zJZG_menu`;\n$121ad78bb5ad2711$export$428e7c787d57587d = `J9zJZG_navigation`;\n\n\nfunction $e1df641eca1adea7$export$2e2bcd8739ae039({ themeEngine: themeEngine, onFullscreenRequest: onFullscreenRequest, menuOpen: menuOpen, setMenuOpen: setMenuOpen }) {\n const dialog = (0, $70db777e8f6135ab$export$b8f5890fc79d6aca)(null);\n (0, $70db777e8f6135ab$export$6d9c69b0de29b591)(()=>{\n const dialogOpen = dialog.current.open;\n if (menuOpen && !dialogOpen) dialog.current.showModal();\n if (!menuOpen && dialogOpen) dialog.current.close();\n }, [\n menuOpen\n ]);\n (0, $70db777e8f6135ab$export$6d9c69b0de29b591)(()=>{\n const currentDialog = dialog.current;\n const closeHandler = ()=>{\n setMenuOpen(false);\n };\n currentDialog.addEventListener(\"close\", closeHandler);\n return ()=>currentDialog.removeEventListener(\"close\", closeHandler);\n }, [\n dialog,\n setMenuOpen\n ]);\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"dialog\", {\n ref: dialog,\n className: $121ad78bb5ad2711$export$b1e5508a851be14d,\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"section\", {\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"button\", {\n tabIndex: 0,\n onClick: ()=>dialog.current.close(),\n children: \"Close this menu\"\n })\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n className: $121ad78bb5ad2711$export$d90360df408c8ceb,\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"button\", {\n onClick: ()=>{\n dialog.current.close();\n onFullscreenRequest();\n },\n children: \"Full screen\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"button\", {\n onClick: ()=>themeEngine.setRandomTheme(),\n children: \"Set a random theme\"\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"label\", {\n children: [\n \"Current theme:\",\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $17b050a6c4860540$export$2e2bcd8739ae039), {\n themeEngine: themeEngine\n })\n ]\n })\n ]\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n className: $121ad78bb5ad2711$export$428e7c787d57587d,\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$a6c7ac8248d6e38a), {\n href: \"/\",\n tabIndex: 0,\n children: \"ElseIfPlayer\"\n })\n })\n ]\n })\n });\n}\n\n\nconst $5b1dbd57077ad108$var$decode = (encodedUrl)=>decodeURIComponent(encodedUrl);\nfunction $5b1dbd57077ad108$export$2e2bcd8739ae039({ theme: theme, themeEngine: themeEngine, encodedUrl: encodedUrl, singleWindow: singleWindow }) {\n (0, $70db777e8f6135ab$export$6d9c69b0de29b591)(()=>{\n themeEngine.setTheme(theme);\n }, [\n theme,\n themeEngine\n ]);\n const [targetUrl, setTargetUrl] = (0, $70db777e8f6135ab$export$60241385465d0a34)($5b1dbd57077ad108$var$decode(encodedUrl));\n (0, $70db777e8f6135ab$export$6d9c69b0de29b591)(()=>{\n setTargetUrl($5b1dbd57077ad108$var$decode(encodedUrl));\n }, [\n encodedUrl\n ]);\n const [menuOpen, setMenuOpen] = (0, $70db777e8f6135ab$export$60241385465d0a34)(false);\n const onFullscreenRequest = ()=>{\n document.documentElement.requestFullscreen();\n };\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"main\", {\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $e1df641eca1adea7$export$2e2bcd8739ae039), {\n themeEngine: themeEngine,\n onFullscreenRequest: onFullscreenRequest,\n menuOpen: menuOpen,\n setMenuOpen: setMenuOpen\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $f70ed90b8b4541bd$export$2e2bcd8739ae039), {\n url: targetUrl,\n onFullscreenRequest: onFullscreenRequest,\n setMenuOpen: setMenuOpen,\n singleWindow: singleWindow\n })\n ]\n });\n}\n\n\n\n\nfunction $30aba6731c147baf$export$2e2bcd8739ae039() {\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"main\", {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $3f6f728901b29270$export$2e2bcd8739ae039), {\n stage: \"fail\",\n details: [\n \"404\",\n \"Page Not Found\"\n ]\n })\n });\n}\n\n\nvar $765ad9f902f48a5c$exports = {};\n\n$parcel$export($765ad9f902f48a5c$exports, \"app\", function () { return $765ad9f902f48a5c$export$729c8b7179294ba; }, function (v) { return $765ad9f902f48a5c$export$729c8b7179294ba = v; });\n$parcel$export($765ad9f902f48a5c$exports, \"focus\", function () { return $765ad9f902f48a5c$export$d7ddd398f22d79ef; }, function (v) { return $765ad9f902f48a5c$export$d7ddd398f22d79ef = v; });\n$parcel$export($765ad9f902f48a5c$exports, \"games\", function () { return $765ad9f902f48a5c$export$79863f625c4e57; }, function (v) { return $765ad9f902f48a5c$export$79863f625c4e57 = v; });\n$parcel$export($765ad9f902f48a5c$exports, \"home\", function () { return $765ad9f902f48a5c$export$d12a05a2da93ee73; }, function (v) { return $765ad9f902f48a5c$export$d12a05a2da93ee73 = v; });\n$parcel$export($765ad9f902f48a5c$exports, \"play\", function () { return $765ad9f902f48a5c$export$899fbdb5fa08b653; }, function (v) { return $765ad9f902f48a5c$export$899fbdb5fa08b653 = v; });\n$parcel$export($765ad9f902f48a5c$exports, \"themes\", function () { return $765ad9f902f48a5c$export$d9a33280f07116d9; }, function (v) { return $765ad9f902f48a5c$export$d9a33280f07116d9 = v; });\nvar $765ad9f902f48a5c$export$729c8b7179294ba;\nvar $765ad9f902f48a5c$export$d7ddd398f22d79ef;\nvar $765ad9f902f48a5c$export$79863f625c4e57;\nvar $765ad9f902f48a5c$export$d12a05a2da93ee73;\nvar $765ad9f902f48a5c$export$899fbdb5fa08b653;\nvar $765ad9f902f48a5c$export$d9a33280f07116d9;\n$765ad9f902f48a5c$export$729c8b7179294ba = `X8uEDW_app`;\n$765ad9f902f48a5c$export$d7ddd398f22d79ef = `X8uEDW_focus`;\n$765ad9f902f48a5c$export$79863f625c4e57 = `X8uEDW_games`;\n$765ad9f902f48a5c$export$d12a05a2da93ee73 = `X8uEDW_home`;\n$765ad9f902f48a5c$export$899fbdb5fa08b653 = `X8uEDW_play`;\n$765ad9f902f48a5c$export$d9a33280f07116d9 = `X8uEDW_themes`;\n\n\nfunction $ba9f671985dcb1a6$export$2e2bcd8739ae039() {\n const themeEngine = (0, $31f868e32fe83e3e$export$818080cba8053148)();\n const [currentLocation] = (0, $a43cd3da5e11dd79$export$b37f3f4c9f6562f7)();\n const playerView = (themeEngine, singleWindow)=>function view(params) {\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $5b1dbd57077ad108$export$2e2bcd8739ae039), {\n themeEngine: themeEngine,\n singleWindow: singleWindow,\n ...params\n });\n };\n return /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$55185c17a0fcbe46), {\n hook: (0, $a43cd3da5e11dd79$export$b37f3f4c9f6562f7),\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $765ad9f902f48a5c$exports.app,\n $765ad9f902f48a5c$exports[(0, $a43cd3da5e11dd79$export$4fac2eeccfa4a8ca)(currentLocation)],\n themeEngine.currentTheme\n ].join(\" \"),\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$b5d5cf8927ab7262), {\n children: [\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$e7b0ac011bb776c6), {\n path: \"/\",\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $bf3b722837e02a56$export$2e2bcd8739ae039), {\n themeEngine: themeEngine\n })\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$e7b0ac011bb776c6), {\n path: \"/games/\",\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $82438f79b880153d$export$2e2bcd8739ae039), {})\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$e7b0ac011bb776c6), {\n path: \"/themes/\",\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $1d6a41ed2b8e0680$export$2e2bcd8739ae039), {\n themeEngine: themeEngine\n })\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$e7b0ac011bb776c6), {\n path: \"/play/:encodedUrl\",\n children: playerView(themeEngine, false)\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$e7b0ac011bb776c6), {\n path: \"/play/:encodedUrl/:theme\",\n children: playerView(themeEngine, false)\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$e7b0ac011bb776c6), {\n path: \"/focus/:encodedUrl\",\n children: playerView(themeEngine, true)\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$e7b0ac011bb776c6), {\n path: \"/focus/:encodedUrl/:theme\",\n children: playerView(themeEngine, true)\n }),\n /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $43f4290c2e1c8c6c$export$e7b0ac011bb776c6), {\n children: /*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $30aba6731c147baf$export$2e2bcd8739ae039), {})\n })\n ]\n })\n })\n });\n}\n\n\n(0, $adfd32792a864deb$export$b3890eb0ae9dca99)(/*#__PURE__*/ (0, $80ca9f09fe72d4b7$export$34b9dba7ce09269b)((0, $ba9f671985dcb1a6$export$2e2bcd8739ae039), {}), document.getElementById(\"root\"));\n\n\n//# sourceMappingURL=index.4a5edb74.js.map\n","import { render } from 'preact'\n\nimport '@fontsource/open-sans'\n\nimport './style/base.scss'\nimport './style/controls.scss'\n\nimport App from './App'\n\nrender(, document.getElementById('root'))\n","import{options as r}from\"preact\";export{Fragment}from\"preact\";var _=0;function o(o,e,n,t,f,l){var s,u,a={};for(u in e)\"ref\"==u?s=e[u]:a[u]=e[u];var i={type:o,props:a,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--_,__source:f,__self:l};if(\"function\"==typeof o&&(s=o.defaultProps))for(u in s)void 0===a[u]&&(a[u]=s[u]);return r.vnode&&r.vnode(i),i}export{o as jsx,o as jsxDEV,o as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import { options, Fragment } from 'preact';\n\n/** @typedef {import('preact').VNode} VNode */\n\nlet vnodeId = 0;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = {},\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'ref') {\n\t\t\tref = props[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (typeof normalizedProps[i] === 'undefined') {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment\n};\n","var n,l,u,i,t,o,r,f,e,c={},s=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,v=Array.isArray;function h(n,l){for(var u in l)n[u]=l[u];return n}function p(n){var l=n.parentNode;l&&l.removeChild(n)}function y(l,u,i){var t,o,r,f={};for(r in u)\"key\"==r?t=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return d(l,f,t,o,null)}function d(n,i,t,o,r){var f={type:n,props:i,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u:r};return null==r&&null!=l.vnode&&l.vnode(f),f}function _(){return{current:null}}function k(n){return n.children}function b(n,l){this.props=n,this.context=l}function g(n,l){if(null==l)return n.__?g(n.__,n.__.__k.indexOf(n)+1):null;for(var u;ll&&t.sort(f));x.__r=0}function P(n,l,u,i,t,o,r,f,e,a){var h,p,y,_,b,m,w,x=i&&i.__k||s,P=x.length;for(u.__k=[],h=0;h0?d(_.type,_.props,_.key,_.ref?_.ref:null,_.__v):_)){if(_.__=u,_.__b=u.__b+1,null===(y=x[h])||y&&_.key==y.key&&_.type===y.type)x[h]=void 0;else for(p=0;p=0;l--)if((u=n.__k[l])&&(i=A(u)))return i;return null}function H(n,l,u,i,t){var o;for(o in u)\"children\"===o||\"key\"===o||o in l||T(n,o,null,u[o],i);for(o in l)t&&\"function\"!=typeof l[o]||\"children\"===o||\"key\"===o||\"value\"===o||\"checked\"===o||u[o]===l[o]||T(n,o,l[o],u[o],i)}function I(n,l,u){\"-\"===l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||a.test(l)?u:u+\"px\"}function T(n,l,u,i,t){var o;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof i&&(n.style.cssText=i=\"\"),i)for(l in i)u&&l in u||I(n.style,l,\"\");if(u)for(l in u)i&&u[l]===i[l]||I(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])o=l!==(l=l.replace(/Capture$/,\"\")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?i||n.addEventListener(l,o?z:j,o):n.removeEventListener(l,o?z:j,o);else if(\"dangerouslySetInnerHTML\"!==l){if(t)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!==l&&\"height\"!==l&&\"href\"!==l&&\"list\"!==l&&\"form\"!==l&&\"tabIndex\"!==l&&\"download\"!==l&&\"rowSpan\"!==l&&\"colSpan\"!==l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!==l[4]?n.removeAttribute(l):n.setAttribute(l,u))}}function j(n){return this.l[n.type+!1](l.event?l.event(n):n)}function z(n){return this.l[n.type+!0](l.event?l.event(n):n)}function L(n,u,i,t,o,r,f,e,c){var s,a,p,y,d,_,g,m,w,x,C,S,$,A,H,I=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,r=[e]),(s=l.__b)&&s(u);try{n:if(\"function\"==typeof I){if(m=u.props,w=(s=I.contextType)&&t[s.__c],x=s?w?w.props.value:s.__:t,i.__c?g=(a=u.__c=i.__c).__=a.__E:(\"prototype\"in I&&I.prototype.render?u.__c=a=new I(m,x):(u.__c=a=new b(m,x),a.constructor=I,a.render=B),w&&w.sub(a),a.props=m,a.state||(a.state={}),a.context=x,a.__n=t,p=a.__d=!0,a.__h=[],a._sb=[]),null==a.__s&&(a.__s=a.state),null!=I.getDerivedStateFromProps&&(a.__s==a.state&&(a.__s=h({},a.__s)),h(a.__s,I.getDerivedStateFromProps(m,a.__s))),y=a.props,d=a.state,a.__v=u,p)null==I.getDerivedStateFromProps&&null!=a.componentWillMount&&a.componentWillMount(),null!=a.componentDidMount&&a.__h.push(a.componentDidMount);else{if(null==I.getDerivedStateFromProps&&m!==y&&null!=a.componentWillReceiveProps&&a.componentWillReceiveProps(m,x),!a.__e&&null!=a.shouldComponentUpdate&&!1===a.shouldComponentUpdate(m,a.__s,x)||u.__v===i.__v){for(u.__v!==i.__v&&(a.props=m,a.state=a.__s,a.__d=!1),a.__e=!1,u.__e=i.__e,u.__k=i.__k,u.__k.forEach(function(n){n&&(n.__=u)}),C=0;C2&&(e.children=arguments.length>3?n.call(arguments,2):i),d(l.type,e,t||l.key,o||l.ref,null)}function G(n,l){var u={__c:l=\"__cC\"+e++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,w(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s.slice,l={__e:function(n,l,u,i){for(var t,o,r;l=l.__;)if((t=l.__c)&&!t.__)try{if((o=t.constructor)&&null!=o.getDerivedStateFromError&&(t.setState(o.getDerivedStateFromError(n)),r=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),r=t.__d),r)return t.__E=t}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},b.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=h({},this.state),\"function\"==typeof n&&(n=n(h({},u),this.props)),n&&h(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),w(this))},b.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),w(this))},b.prototype.render=k,t=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},x.__r=0,e=0;export{b as Component,k as Fragment,F as cloneElement,G as createContext,y as createElement,_ as createRef,y as h,E as hydrate,i as isValidElement,l as options,D as render,S as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { getDomSibling } from '../component';\nimport { isArray } from '../util';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g.
{reuse}{reuse}
) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse =
\n\t\t\t//
{reuse}{reuse}
\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\tchildVNode._children === oldVNode._children\n\t\t\t) {\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldDom,\n\t\t\t\t\tparentDom\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\toldChildren,\n\t\t\t\t\tnewDom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\t\t\t\tnewParentVNode._nextDom = getLastDom(oldParentVNode).nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode, vnode, c, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\toldVNode == null ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j= 0; i--) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child) {\n\t\t\t\tlet lastDom = getLastDom(child);\n\t\t\t\tif (lastDom) {\n\t\t\t\t\treturn lastDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname !== 'rowSpan' &&\n\t\t\tname !== 'colSpan' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\treturn this._listeners[e.type + false](options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// In cases of bailing due to strict-equality we have to reset force as well\n\t\t\t\t\tc._force = false;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the -element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix \n )\n}\n","import { Link } from 'wouter-preact'\n\nimport GameEntry from\n '~/src/components/GameEntry/GameEntry'\n\nimport top2019 from './top2019'\n\nimport * as s from './GamesView.module.scss'\n\nconst tutorialGame = {\n name: 'The Dreamhold',\n ifdb: 'https://ifdb.org/viewgame?id=3myqnrs64nbtwdaz',\n url: 'https://mirror.ifarchive.org/if-archive/games/zcode/dreamhold.z8',\n}\n\nexport default function GamesView () {\n return (\n
\n

\n \n IFDB\n Games\n

\n\n

\n Choose one or \n go back.\n

\n\n
\n

\n Tutorial\n

\n\n

\n If you are not familiar with Interactive Fiction,\n you should start with this tutorial game\n by Andrew Plotkin:\n

\n\n
    \n
  • \n \n
  • \n
\n
\n\n

\n Interactive Fiction Top 50 of All Time\n

\n\n

\n \n Every four years , Victor Gijsbers puts\n together a list of the top 50 IF games of all time.\n\n Here is an almost complete and slightly rearranged version of the \n list from 2019:\n

\n\n
    \n {top2019.map((game) => (\n
  1. \n \n
  2. \n ))}\n
\n\n
\n )\n}\n","import { Link } from 'wouter-preact'\n\nimport {\n buildPlayLinkHref,\n} from '~/src/routing'\n\nexport default function GameEntry ({ name, ifdb, url }) {\n return (\n
\n

{name}

\n \n IFDB page\n \n | \n \n Play\n \n
\n )\n}\n","export default [\n [\n 'Lost Pig',\n 'https://ifdb.org/viewgame?id=mohwfk47yjzii14w',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/LostPig.z8',\n ],\n [\n /* Check with cheap-glk */\n 'Counterfeit Monkey',\n 'https://ifdb.org/viewgame?id=aearuuxv83plclpl',\n 'https://mirror.ifarchive.org/if-archive/games/glulx/CounterfeitMonkey.gblorb',\n ],\n [\n /* Works. Check inputs */\n 'Anchorhead',\n 'https://ifdb.org/viewgame?id=op0uw1gn1tjqmjt7',\n 'https://ifarchive.org/if-archive/games/zcode/anchor.z8',\n ],\n /* [\n '80 DAYS',\n 'https://ifdb.org/viewgame?id=du51t0qrhjqlnbij',\n 'INKLEWRITER'\n ], */\n [\n 'Galatea',\n 'https://ifdb.org/viewgame?id=urxrv27t7qtu52lb',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/Galatea.zblorb',\n ],\n [\n /* Works. Check inputs */\n 'Photopia',\n 'https://ifdb.org/viewgame?id=ju778uv5xaswnlpl',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/photopia.z5',\n ],\n [\n 'Spider and Web',\n 'https://ifdb.org/viewgame?id=2xyccw3pe0uovfad',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/Tangle.z5',\n ],\n /* [\n 'Trinity',\n 'https://ifdb.org/viewgame?id=j18kjz80hxjtyayw',\n 'ZIP'\n ], */\n /* [\n 'Hadean Lands',\n 'https://ifdb.org/viewgame?id=u58d0mlbfwcorfi',\n 'COMMERCIAL'\n ], */\n /* [\n 'Superluminal Vagrant Twin',\n 'https://ifdb.org/viewgame?id=5xzoz5wimz4xxha',\n 'CORS https://v6p9d9t4.ssl.hwcdn.net/html/177384/Superluminal%20Vagrant%20Twin%20Webpage/files/Superluminal%20Vagrant%20Twin.gblorb'\n ], */\n /* [\n 'Birdland',\n 'https://ifdb.org/viewgame?id=ap1651hvjldbuugj',\n 'TWINE'\n ], */\n [\n 'Slouching Towards Bedlam',\n 'https://ifdb.org/viewgame?id=032krqe6bjn5au78',\n 'https://mirror.ifarchive.org/if-archive/games/competition2003/zcode/slouch/slouch.z5',\n ],\n [\n 'Curses!',\n 'https://ifdb.org/viewgame?id=plvzam05bmz3enh8',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/curses.z5',\n ],\n /* [\n 'howling dogs',\n 'https://ifdb.org/viewgame?id=mxj7xp4nffia9rbj',\n 'TWINE'\n ], */\n [\n 'Violet',\n 'https://ifdb.org/viewgame?id=4glrrfh7wrp9zz7b',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/Violet.zblorb',\n ],\n [\n 'The Wizard Sniffer',\n 'https://ifdb.org/viewgame?id=uq18rw9gt8j58da',\n 'https://ifarchive.org/if-archive/games/competition2017/The%20Wizard%20Sniffer/The_Wizard_Sniffer.gblorb',\n ],\n /* [\n 'Eat Me',\n 'https://ifdb.org/viewgame?id=yutkd9u0oeog4br1',\n 'ZIP https://ifarchive.org/if-archive/games/competition2017/Eat%20Me/Eat%20Me/Gblorb.zip'\n ], */\n /* [\n 'Horse Master',\n 'https://ifdb.org/viewgame?id=ogkcvv9l1q0aatpd',\n 'TWINE'\n ], */\n /* [\n 'Mentula Macanus: Apocolocyntosis',\n 'https://ifdb.org/viewgame?id=etul31tqgl3n22nl'\n 'ZIP'\n ], */\n [\n 'Shade',\n 'https://ifdb.org/viewgame?id=hsfc7fnl40k4a30q',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/shade.z5',\n ],\n [\n 'Vespers',\n 'https://ifdb.org/viewgame?id=6dj2vguyiagrhvc2',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/vespers.z8',\n ],\n /* [\n 'Will Not Let Me Go',\n 'https://ifdb.org/viewgame?id=67r2qc21m5nzexv1',\n 'TWINE'\n ], */\n /* [\n 'Bee',\n 'https://ifdb.org/viewgame?id=8pe83e92v4nvabic',\n 'VARYTALE'\n ], */\n /* [\n 'Creatures Such As We',\n 'https://ifdb.org/viewgame?id=8l9cdcd1tbt77hfl',\n 'TWINE'\n ], */\n /* [\n 'Kerkerkruip',\n 'https://ifdb.org/viewgame?id=f7zdhxmiraht53d1',\n 'CORS https://downloads.kerkerkruip.org/Kerkerkruip-latest.gblorb'\n ], */\n /* [\n 'Midnight. Swordfight.',\n 'https://ifdb.org/viewgame?id=2cuwjlvpybg8oaf0',\n 'CORS https://www.castleprincessdragon.com/InteractiveFiction/MS/MidnightSwordfight.gblorb'\n ], */\n [\n 'Savoir-Faire',\n 'https://ifdb.org/viewgame?id=p0cizeb3kiwzlm2p',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/Savoir-Faire.zblorb',\n ],\n /* [\n 'With Those We Love Alive',\n 'https://ifdb.org/viewgame?id=445d989vuwlh4cvz',\n 'TWINE'\n ], */\n [\n 'Aisle',\n 'https://ifdb.org/viewgame?id=j49crlvd62mhwuzu',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/Aisle.z5',\n ],\n /* [\n 'Blue Lacuna',\n 'https://ifdb.org/viewgame?id=ez2mcyx4zi98qlkh',\n 'ZIP'\n ], */\n [\n 'Gun Mute',\n 'https://ifdb.org/viewgame?id=xwedbibfksczn7eq',\n 'https://mirror.ifarchive.org/if-archive/games/tads/GunMute.t3',\n ],\n /* [\n 'The King of Shreds and Patches',\n 'https://ifdb.org/viewgame?id=9ntef9expou18abv',\n 'ZIP'\n ], */\n /* [\n 'A Mind Forever Voyaging',\n 'https://ifdb.org/viewgame?id=4h62dvooeg9ajtfa',\n 'CORS'\n ], */\n /* [\n 'SPY INTRIGUE',\n 'https://ifdb.org/viewgame?id=zz6i7irfr70nvp7a',\n 'TWINE'\n ], */\n /* [\n 'Wishbringer',\n 'https://ifdb.org/viewgame?id=z02joykzh66wfhcl',\n 'CORS'\n ], */\n [\n 'A Beauty Cold and Austere',\n 'https://ifdb.org/viewgame?id=y9y7jozi0l76bb82',\n 'https://ifarchive.org/if-archive/games/competition2017/A%20Beauty%20Cold%20and%20Austere/A_Beauty_Cold_and_Austere.gblorb',\n ],\n /* [\n 'Cactus Blue Motel',\n 'https://ifdb.org/viewgame?id=7e699ifb6u3767yr',\n 'TWINE'\n ], */\n [\n 'Coloratura',\n 'https://ifdb.org/viewgame?id=g0fl99ovcrq2sqzk',\n 'https://mirror.ifarchive.org/if-archive/games/competition2013/glulx/coloratura/Coloratura.gblorb',\n ],\n /* [\n 'Harmonia',\n 'https://ifdb.org/viewgame?id=bkyia4k48od1ila',\n 'TWINE'\n ], */\n [\n 'Lime Ergot',\n 'https://ifdb.org/viewgame?id=b8mb4fcwmf1hrxl',\n 'https://mirror.ifarchive.org/if-archive/games/glulx/Lime_Ergot.gblorb',\n ],\n [\n 'Rameses',\n 'https://ifdb.org/viewgame?id=0stz0hr7a98bp9mp',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/rameses.zblorb',\n ],\n /* [\n 'Spellbreaker',\n 'https://ifdb.org/viewgame?id=wqsmrahzozosu3r',\n 'CORS'\n ], */\n /* [\n 'Suspended',\n 'https://ifdb.org/viewgame?id=t47hei9uq10xoar8',\n 'CORS'\n ], */\n [\n 'The Wand',\n 'https://ifdb.org/viewgame?id=2jil5vbxmbv8riv1',\n 'https://ifarchive.org/if-archive/games/glulx/Wand.ulx',\n ],\n /* [\n 'Zork I',\n 'https://ifdb.org/viewgame?id=0dbnusxunq7fw5ro',\n 'ZIP'\n ], */\n [\n '1893: A World\\'s Fair Mystery',\n 'https://ifdb.org/viewgame?id=00e0t7swrris5pg6',\n 'https://mirror.ifarchive.org/if-archive/games/tads/1893.gam',\n ],\n [\n 'Adventure',\n 'https://ifdb.org/viewgame?id=fft6pu91j85y4acv',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/Advent.z5',\n ],\n [\n 'Alias \\'The Magpie\\'',\n 'https://ifdb.org/viewgame?id=yspn49v69hzc8rtb',\n 'https://ifarchive.org/if-archive/games/competition2018/Alias%20The%20Magpie/Alias%20%27The%20Magpie%27.gblorb',\n ],\n /* [\n 'De Baron',\n 'https://ifdb.org/viewgame?id=weac28l51hiqfzxz',\n 'ZIP'\n ], */\n /* [\n 'Bogeyman',\n 'https://ifdb.org/viewgame?id=ltwvgb2lubkx82yi',\n 'TWINE'\n ], */\n [\n 'Cragne Manor',\n 'https://ifdb.org/viewgame?id=4x7nltu8p851tn4x',\n 'https://mirror.ifarchive.org/if-archive/games/glulx/cragne.gblorb',\n ],\n [\n 'The Edifice',\n 'https://ifdb.org/viewgame?id=4tb9soabrb4apqzd',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/edifice.z5',\n ],\n [\n 'Endless, Nameless',\n 'https://ifdb.org/viewgame?id=7vtm1rq16hh3xch',\n 'https://ifarchive.org/if-archive/games/zcode/nameless.z8',\n ],\n [\n 'Everybody Dies',\n 'https://ifdb.org/viewgame?id=lyblvftb8xtlo0a1',\n 'https://mirror.ifarchive.org/if-archive/games/competition2008/glulx/everybodydies/EverybodyDies.gblorb',\n ],\n /* [\n 'Fallen London',\n 'https://ifdb.org/viewgame?id=y9m60ythcj2xn9r',\n 'STORYNEXUS'\n ], */\n [\n 'Foo Foo',\n 'https://ifdb.org/viewgame?id=ec6x9y8qcmsrxob9',\n 'https://ifarchive.org/if-archive/games/springthing/2016/FooFoo.gblorb',\n ],\n [\n 'The Gostak',\n 'https://ifdb.org/viewgame?id=w5s3sv43s3p98v45',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/gostak.z5',\n ],\n /* [\n 'The Hitchhiker\\'s Guide to the Galaxy',\n 'https://ifdb.org/viewgame?id=ouv80gvsl32xlion',\n 'CORS https://www.douglasadams.com/creations/hhgg.z3'\n ], */\n /* [\n 'Hoist Sail for the Heliopause and Home',\n 'https://ifdb.org/viewgame?id=ykccumi5xc5rltev',\n 'CORS https://eblong.com/zarf/ftp/Heliopause.zblorb'\n ], */\n /* [\n 'Human Errors',\n 'https://ifdb.org/viewgame?id=14oexa2wyym73glu',\n 'TWINE'\n ], */\n [\n 'Inside the Facility',\n 'https://ifdb.org/viewgame?id=stsdri5zh7a4i5my',\n 'https://ifarchive.org/if-archive/games/competition2016/Inside%20the%20Facility/Facility.z8',\n ],\n /* [\n 'Junior Arithmancer',\n 'https://ifdb.org/viewgame?id=pw1rbjt1t4n4n87s',\n 'https://ifarchive.org/if-archive/games/competition2018/Junior%20Arithmancer/Junior_Arithmancer.gblorb',\n ], */\n [\n 'Make It Good',\n 'https://ifdb.org/viewgame?id=jdrbw1htq4ah8q57',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/MakeItGood.z8',\n ],\n [\n 'Sub Rosa',\n 'https://ifdb.org/viewgame?id=73nvz9yui87ub3sd',\n 'https://mirror.ifarchive.org/if-archive/games/glulx/Sub_Rosa.gblorb',\n ],\n [\n 'Suveh Nux',\n 'https://ifdb.org/viewgame?id=xkai23ry99qdxce3',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/suvehnux.z5',\n ],\n /* [\n 'their angelical understanding',\n 'https://ifdb.org/viewgame?id=zpmfvbgolvfwbid',\n 'TWINE'\n ], */\n /* [\n 'Toby\\'s Nose',\n 'https://ifdb.org/viewgame?id=xf5y04yekcrqtnc',\n 'CORS https://www.castleprincessdragon.com/InteractiveFiction/TobysNose/Toby\\'s%20Nose.gblorb'\n ], */\n [\n 'Varicella',\n 'https://ifdb.org/viewgame?id=ywwlr3tpxnktjasd',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/vgame.z8',\n ],\n].map(([name, ifdb, url]) => ({ name, ifdb, url }))\n",".games {\n .tutorial {\n margin-block: 64px;\n }\n\n h4 {\n margin: 0;\n }\n\n li {\n margin-bottom: 1em;\n }\n}\n","import { Link } from 'wouter-preact'\n\nimport * as s from './ThemesView.module.scss'\n\nconst Preview = (themeEngine, theme) =>\n
\n
\n
\n > look\n
\n

\n
\n {theme}\n
\n
\n Observe a vibrant demonstration of colors at work,\n showcasing their versatile usage right before your eyes.\n
\n

\n
\n \n
\n\nexport default function ThemesView ({ themeEngine }) {\n const themes = themeEngine\n .themes\n .map((theme) => Preview(themeEngine, theme))\n\n return (\n
\n

\n Themes Page\n

\n\n

\n Choose one or \n go back.\n

\n\n
\n

\n Current Theme\n

\n
\n
\n > look\n
\n

\n
\n Selected: {themeEngine.currentTheme}\n
\n
\n You can set random one with the button below\n or choose any theme from the list.\n
\n

\n
\n \n
\n\n

\n Theme List\n

\n
\n {themes}\n
\n
\n )\n}\n",".themes {\n --current-border: var(--main-color);\n\n .themePreview {\n border: 2px solid var(--current-border);\n padding: calc(2 * var(--inner-padding));\n margin-bottom: 32px;\n\n background-color: var(--bg-color);\n color: var(--main-color);\n\n &.current {\n padding: 0;\n border: none;\n margin-block: 64px;\n }\n\n .output {\n border: 2px solid var(--main-color);\n padding: var(--inner-padding);\n margin-bottom: 8px;\n\n .message.subheader {\n font-weight: bold;\n color: var(--accent-color);\n text-transform: capitalize;\n }\n\n .message.input {\n color: var(--input-color);\n }\n }\n\n button {\n width: 100%;\n }\n }\n}\n","import { useState, useEffect } from 'preact/hooks'\n\nimport UrlPlayer from '~/src/components/Player/UrlPlayer'\nimport MenuOverlay from '~/src/components/Player/MenuOverlay/MenuOverlay'\n\nconst decode = (encodedUrl) => decodeURIComponent(encodedUrl)\n\nexport default function PlayerView ({\n theme, themeEngine, encodedUrl, singleWindow,\n}) {\n useEffect(() => {\n themeEngine.setTheme(theme)\n }, [theme, themeEngine])\n\n const [targetUrl, setTargetUrl] = useState(decode(encodedUrl))\n\n useEffect(() => {\n setTargetUrl(decode(encodedUrl))\n }, [encodedUrl])\n\n const [menuOpen, setMenuOpen] = useState(false)\n\n const onFullscreenRequest = () => {\n document.documentElement.requestFullscreen()\n }\n\n return (\n
\n \n \n
\n )\n}\n","import { useState, useEffect } from 'preact/hooks'\n\nimport { engineByFilename } from './common/engines'\n\nimport Player from './Player'\nimport Status from './Status/Status'\n\nconst INITIAL_STATUS = {\n stage: 'loading',\n details: ['Loading'],\n}\n\nconst prepareVM = ({ url, setStatus, setParts }) => {\n const st = (stage, details) => (args) => {\n setStatus({ stage, details: [details] })\n return args\n }\n\n const cleanUrl = (url) =>\n url.startsWith('blob:')\n ? url.replace(/#(.*)$/g, '')\n : url\n\n const fetchWasm = (wasmBinaryName) =>\n fetch(wasmBinaryName)\n .then((response) => response.arrayBuffer())\n\n const checkResponse = (response) => {\n if (response.ok) return response\n throw new Error(response.statusText)\n }\n\n return Promise.resolve(url)\n .then(st('loading', 'Downloading file'))\n .then(cleanUrl)\n .then(fetch)\n .then(checkResponse)\n .then(st('loading', 'Processing file'))\n .then((response) => response.arrayBuffer())\n .then((arrayBuffer) => new Uint8Array(arrayBuffer))\n .then(st('loading', 'Downloading engine'))\n .then((storyfile) => {\n let parts = engineByFilename(url)\n return [storyfile, parts.engine, parts.wasmBinaryName]\n })\n .then(([storyfile, engine, wasmBinaryName]) => Promise.all([\n storyfile, engine, fetchWasm(wasmBinaryName),\n ]))\n .then(([storyfile, engine, wasmBinary]) => setParts({\n storyfile, engine, wasmBinary,\n }))\n .then(st('loading', 'Running'))\n .catch((e) => {\n console.error(e)\n setStatus({ stage: 'fail', details: [e.message, url] })\n })\n}\n\nexport default function UrlPlayer ({\n url, singleWindow, onFullscreenRequest, setMenuOpen,\n}) {\n const [status, setStatus] = useState(INITIAL_STATUS)\n const [vmParts, setParts] = useState(null)\n\n useEffect(() => {\n setStatus(INITIAL_STATUS)\n setParts(null)\n\n prepareVM({ url, setStatus, setParts })\n\n return () => setParts(null)\n }, [url])\n\n return vmParts\n ? ()\n : ()\n}\n","import bocfel from 'emglken/src/bocfel.js'\nimport git from 'emglken/src/git.js'\nimport hugo from 'emglken/src/hugo.js'\nimport tads from 'emglken/src/tads.js'\nimport scare from 'emglken/src/scare.js'\n\nconst formats = [\n {\n id: 'bocfel',\n extensions: /z([3458]|blorb)$/,\n engine: bocfel,\n },\n {\n id: 'git',\n extensions: /(gblorb|ulx)$/,\n engine: git,\n },\n {\n id: 'hugo',\n extensions: /hex$/,\n engine: hugo,\n },\n {\n id: 'scare',\n extensions: /taf$/,\n engine: scare,\n },\n {\n id: 'tads',\n extensions: /(gam|t3)$/,\n engine: tads,\n },\n]\n\nexport const engineByFilename = (filename) => {\n const format = formats.find((x) =>\n x.extensions.test(filename))\n\n if (format) {\n return {\n ...format,\n /* @see staticFiles in package.json */\n wasmBinaryName: `emglken/${format.id}-core.wasm`,\n }\n }\n throw new Error('Unsupported file type')\n}\n","/*\n\nEmglken port of Bocfel\n======================\n\nCopyright (c) 2021 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nimport EmglkenVM from './vm.js'\nimport BocfelCore from '../build/bocfel-core.js'\n\nexport default class Bocfel extends EmglkenVM\n{\n default_options()\n {\n return {\n vmcore: BocfelCore,\n }\n }\n}","/*\n\nEmglken VM\n==========\n\nCopyright (c) 2022 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nimport EmglkenFS from './emglkenfs.js'\n\nconst base_options = {\n arguments: ['storyfile'],\n}\n\nexport default class EmglkenVM\n{\n // Store the data and options\n init(data, options)\n {\n this.data = data\n this.options = Object.assign({}, base_options, this.default_options(), options)\n }\n\n // Start GlkOte and the vmcore\n async start()\n {\n const encoder = new TextEncoder()\n let buffer = ''\n\n const Module = {\n arguments: this.options.show_help ? ['-help'] : this.options.arguments,\n emglken_stdin_buffers: [],\n emglken_stdin_ready() {},\n // Fake locateFile so that Lectrote doesn't get tripped up on import.meta.url not being handled in CJS properly\n locateFile() {},\n print: data =>\n {\n if (buffer === '' && data !== '' && !data.startsWith('{'))\n {\n console.log(data)\n }\n else\n {\n buffer += data\n if (data.endsWith('}'))\n {\n let obj\n try { obj = JSON.parse(buffer) } catch (e) {}\n if (obj) {\n buffer = ''\n // Store the usage of a fileref prompt request\n if (obj.specialinput && obj.specialinput.type === 'fileref_prompt')\n {\n this.last_fr_usage = obj.specialinput.filetype\n }\n this.options.GlkOte.update(obj)\n }\n }\n }\n },\n preRun: () =>\n {\n const FS = Module.FS\n this.EFS = new EmglkenFS(this)\n FS.mkdir('/emglken')\n FS.mount(this.EFS, {}, '/emglken')\n FS.chdir('/emglken')\n },\n wasmBinary: this.options.wasmBinary,\n }\n this.Module = Module\n\n this.options.accept = data => {\n if (data.type === 'specialresponse' && data.response === 'fileref_prompt' && data.value)\n {\n // electrofs.js returns a full path, so register it with EmglkenFS, and return a fake filename\n if (this.EFS.streaming)\n {\n data.value = this.EFS.register_filename(data.value.filename, this.last_fr_usage)\n }\n // Convert a dialog.js provided fileref into something Remglk can understand\n else\n {\n data.value = data.value.filename\n }\n }\n\n const json_data = JSON.stringify(data)\n const buffer = encoder.encode(json_data)\n Module.emglken_stdin_buffers.push(buffer)\n Module.emglken_stdin_ready()\n }\n\n await this.options.vmcore(Module)\n this.options.GlkOte.init(this.options)\n }\n}","/*\n\nEmglken File System\n===================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nconst DIR_MODE = 16895 // 040777\nconst FILE_MODE = 33206 // 100666\nconst SEEK_SET = 0\nconst SEEK_CUR = 1\nconst SEEK_END = 2\n\n// WASI error codes\n// See https://github.com/WebAssembly/wasi-libc/blob/master/libc-bottom-half/headers/public/wasi/api.h\nconst EINVAL = 28\nconst ENOENT = 44\n\n// Convert Linux flags to Glk flags\nconst filemode_Write = 1\nconst filemode_Read = 2\nconst filemode_ReadWrite = 3\nconst filemode_WriteAppend = 5\nfunction convert_flags(flags)\n{\n // O_APPEND => filemode_WriteAppend\n if (flags & 0x400)\n {\n return filemode_WriteAppend\n }\n // O_WRONLY => filemode_Write\n if (flags & 1)\n {\n return filemode_Write\n }\n // O_RDWR => filemode_ReadWrite\n if (flags & 2)\n {\n return filemode_ReadWrite\n }\n // O_RDONLY => filemode_Read\n return filemode_Read\n}\n\nexport default class EmglkenFS\n{\n constructor(VM)\n {\n this.dialog = VM.options.Dialog\n this.streaming = this.dialog.streaming\n this.FS = VM.Module.FS\n this.VM = VM\n\n this.filename_map = {}\n this.filename_counter = 0\n }\n\n close(stream)\n {\n if (stream.name === 'storyfile')\n {}\n else\n {\n if (this.streaming)\n {\n stream.fstream.fclose()\n }\n else\n {\n if (stream.fmode !== filemode_Read)\n {\n this.dialog.file_write(stream.fref, stream.data)\n }\n }\n }\n }\n\n createNode(parent, name, mode/*, dev*/)\n {\n const FS = this.FS\n if (!FS.isDir(mode) && !FS.isFile(mode))\n {\n throw new FS.ErrnoError(EINVAL)\n }\n const node = FS.createNode(parent, name, mode)\n node.node_ops = this\n node.stream_ops = this\n node.timestamp = Date.now()\n return node\n }\n\n getattr(node)\n {\n // At present only the size of the storyfile will be returned, as needed by Bocfel\n const size = node.name === 'storyfile' ? this.VM.data.length : 0\n\n // Not sure what to return here, so only return stuff some of it\n return {\n atime: new Date(node.timestamp),\n ctime: new Date(node.timestamp),\n dev: 1,\n gid: 0,\n ino: node.id,\n mode: node.mode,\n mtime: new Date(node.timestamp),\n nlink: 1,\n rdev: node.rdev,\n size,\n uid: 0,\n }\n }\n\n // Get a Dialog ref for non-streaming Dialogs\n get_dialog_ref(filename)\n {\n let [name, usage] = filename.split('.')\n\n // RemGlk sends usages starting with 'glk', but Dialog wants them without\n usage = usage.replace('glk', '')\n\n // Retrieve the game ID if opening a savefile\n let gameid = ''\n if (usage === 'save')\n {\n gameid = this.VM.Module.AsciiToString(this.VM.Module._gidispatch_get_game_id())\n }\n\n return this.dialog.file_construct_ref(name, usage, gameid)\n }\n\n llseek(stream, offset, whence)\n {\n let position = offset\n if (whence === SEEK_CUR)\n {\n position += stream.position\n }\n else if (whence === SEEK_END)\n {\n if (stream.name === 'storyfile')\n {\n position += stream.data.length\n }\n else\n {\n if (this.streaming)\n {\n const curpos = stream.fstream.ftell()\n stream.fstream.fseek(0, SEEK_END)\n position += stream.fstream.ftell()\n stream.fstream.fseek(curpos, SEEK_SET)\n }\n else\n {\n position += stream.data.length\n }\n }\n }\n if (position < 0)\n {\n throw new this.FS.ErrnoError(EINVAL)\n }\n return position\n }\n\n lookup(parent, name)\n {\n if (name !== 'storyfile')\n {\n const realname = this.filename_map[name] || name\n if (!this.dialog.file_ref_exists(this.streaming ? {filename: realname} : this.get_dialog_ref(realname)))\n {\n throw new this.FS.ErrnoError(ENOENT)\n }\n }\n return this.createNode(parent, name, FILE_MODE)\n }\n\n mknod(parent, name, mode/*, dev*/)\n {\n return this.createNode(parent, name, mode)\n }\n\n mmap()\n {\n throw new Error('EmglkenFS.mmap')\n }\n\n mount()\n {\n return this.createNode(null, '/', DIR_MODE, 0)\n }\n\n msync()\n {\n throw new Error('EmglkenFS.msync')\n }\n\n open(stream)\n {\n stream.name = stream.node.name\n if (stream.name === 'storyfile')\n {\n stream.data = this.VM.data\n }\n else\n {\n const fmode = convert_flags(stream.flags)\n const realname = this.filename_map[stream.name] || stream.name\n if (this.streaming)\n {\n stream.fstream = this.dialog.file_fopen(fmode, {filename: realname})\n }\n else\n {\n stream.fref = this.get_dialog_ref(realname)\n stream.fmode = fmode\n\n // Read the content if not overwriting\n stream.data = null\n if (fmode !== filemode_Write)\n {\n stream.data = this.dialog.file_read(stream.fref)\n }\n\n // If no file and not reading, create a blank file\n if (stream.data == null) {\n stream.data = new Uint8Array(0)\n if (fmode !== filemode_Read)\n {\n this.dialog.file_write(stream.fref, '', true)\n }\n }\n //stream.position = fmode === filemode_WriteAppend ? data.length : 0\n }\n }\n }\n\n read(stream, buffer, offset, length, position)\n {\n if (length === 0)\n {\n return 0\n }\n if (stream.name === 'storyfile')\n {\n const size = Math.min(stream.data.length - position, length)\n buffer.set(stream.data.subarray(position, position + size), offset)\n return size\n }\n else\n {\n if (this.streaming)\n {\n stream.fstream.fseek(position, SEEK_SET)\n const buf = stream.fstream.BufferClass.from(buffer.buffer, offset, length)\n return stream.fstream.fread(buf, length)\n }\n else\n {\n const size = Math.min(stream.data.length - position, length)\n buffer.set(stream.data.subarray(position, position + size), offset)\n return size\n }\n }\n }\n\n readdir()\n {\n throw new Error('EmglkenFS.readdir')\n }\n\n readlink()\n {\n throw new this.FS.ErrnoError(EINVAL)\n }\n\n // electrofs.js will give a full system path, which we can't handle. So store the full path and return a fake file name\n register_filename(filename, usage)\n {\n const suffix = usage === 'save' ? '.glksave' : (usage === 'data' ? '.glkdata' : '.txt')\n if (!/\\.(glkdata|glksave|txt)$/.test(filename))\n {\n filename = filename + suffix\n }\n\n if (this.filename_map[filename])\n {\n return this.filename_map[filename]\n }\n\n const fakename = 'emglken_fake_file_' + this.filename_counter++\n this.filename_map[filename] = fakename\n this.filename_map[fakename + suffix] = filename\n return fakename\n }\n\n rename()\n {\n throw new Error('EmglkenFS.rename')\n }\n\n rmdir()\n {\n throw new Error('EmglkenFS.rmdir')\n }\n\n setattr(/*node, attr*/)\n {\n // I don't think we need to do anything here?\n // Maybe truncate a file?\n }\n\n symlink()\n {\n throw new Error('EmglkenFS.symlink')\n }\n\n unlink(parent, name)\n {\n const realname = this.filename_map[name] || name\n this.dialog.file_remove_ref(this.get_dialog_ref(realname))\n }\n\n write(stream, buffer, offset, length, position)\n {\n if (stream.name === 'storyfile')\n {\n throw new Error('EmglkenFS.write: cannot write to storyfile')\n }\n if (this.streaming)\n {\n stream.fstream.fseek(position, SEEK_SET)\n const buf = stream.fstream.BufferClass.from(buffer).subarray(offset, offset + length)\n return stream.fstream.fwrite(buf, length)\n }\n else\n {\n position = position || stream.position\n const end_of_write = length + position\n if (end_of_write > stream.data.length)\n {\n const old_data = stream.data\n stream.data = new Uint8Array(end_of_write)\n stream.data.set(old_data)\n }\n stream.data.set(buffer.subarray(offset, offset + length), position)\n return length\n }\n }\n}","\nvar Module = (() => {\n var _scriptDir = import.meta.url;\n \n return (\nfunction(Module = {}) {\n\nvar Module = typeof Module != \"undefined\" ? Module : {};\n\nvar readyPromiseResolve, readyPromiseReject;\n\nModule[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n});\n\nvar moduleOverrides = Object.assign({}, Module);\n\nvar arguments_ = [];\n\nvar thisProgram = \"./this.program\";\n\nvar quit_ = (status, toThrow) => {\n throw toThrow;\n};\n\nvar ENVIRONMENT_IS_WEB = true;\n\nvar ENVIRONMENT_IS_WORKER = false;\n\nvar scriptDirectory = \"\";\n\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n}\n\nvar read_, readAsync, readBinary, setWindowTitle;\n\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = title => document.title = title;\n} else {}\n\nvar out = Module[\"print\"] || console.log.bind(console);\n\nvar err = Module[\"printErr\"] || console.warn.bind(console);\n\nObject.assign(Module, moduleOverrides);\n\nmoduleOverrides = null;\n\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\n\nvar wasmBinary;\n\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\nvar noExitRuntime = Module[\"noExitRuntime\"] || false;\n\nif (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n}\n\nvar wasmMemory;\n\nvar ABORT = false;\n\nvar EXITSTATUS;\n\nfunction assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n}\n\nvar UTF8Decoder = new TextDecoder(\"utf8\");\n\nfunction UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n}\n\nfunction UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n}\n\nfunction stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n}\n\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\n\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n}\n\nvar HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n}\n\nvar wasmTable;\n\nvar __ATPRERUN__ = [];\n\nvar __ATINIT__ = [];\n\nvar __ATMAIN__ = [];\n\nvar __ATEXIT__ = [];\n\nvar __ATPOSTRUN__ = [];\n\nvar runtimeInitialized = false;\n\nvar runtimeExited = false;\n\nvar runtimeKeepaliveCounter = 0;\n\nfunction keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n}\n\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [ Module[\"preRun\"] ];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\n\nfunction initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n}\n\nfunction preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n}\n\nfunction exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n}\n\nfunction postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [ Module[\"postRun\"] ];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\n\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\n\nfunction addOnInit(cb) {\n __ATINIT__.unshift(cb);\n}\n\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\n\nvar runDependencies = 0;\n\nvar runDependencyWatcher = null;\n\nvar dependenciesFulfilled = null;\n\nfunction getUniqueRunDependency(id) {\n return id;\n}\n\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n}\n\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\n\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n}\n\nvar dataURIPrefix = \"data:application/octet-stream;base64,\";\n\nfunction isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n}\n\nvar wasmBinaryFile;\n\nif (Module[\"locateFile\"]) {\n wasmBinaryFile = \"bocfel-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n} else {\n wasmBinaryFile = new URL(\"bocfel-core.wasm\", import.meta.url).href;\n}\n\nfunction getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n}\n\nfunction getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n}\n\nfunction instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n}\n\nfunction instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n } else {\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n}\n\nfunction createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"da\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"na\"];\n addOnInit(Module[\"asm\"][\"ea\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n}\n\nvar tempDouble;\n\nvar tempI64;\n\nfunction __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async () => {\n if (!Module.emglken_stdin_buffers.length) {\n await new Promise(resolve => {\n Module.emglken_stdin_ready = resolve;\n });\n }\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) {\n HEAPU8.set(input, buffer);\n } else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n}\n\nfunction ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n}\n\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n}\n\nvar exceptionCaught = [];\n\nfunction exception_addRef(info) {\n info.add_ref();\n}\n\nvar uncaughtExceptionCount = 0;\n\nfunction ___cxa_begin_catch(ptr) {\n var info = new ExceptionInfo(ptr);\n if (!info.get_caught()) {\n info.set_caught(true);\n uncaughtExceptionCount--;\n }\n info.set_rethrown(false);\n exceptionCaught.push(info);\n exception_addRef(info);\n return info.get_exception_ptr();\n}\n\nvar exceptionLast = 0;\n\nfunction exception_decRef(info) {\n if (info.release_ref() && !info.get_rethrown()) {\n var destructor = info.get_destructor();\n if (destructor) {\n (a1 => dynCall_ii.apply(null, [ destructor, a1 ]))(info.excPtr);\n }\n ___cxa_free_exception(info.excPtr);\n }\n}\n\nfunction ___cxa_end_catch() {\n _setThrew(0);\n var info = exceptionCaught.pop();\n exception_decRef(info);\n exceptionLast = 0;\n}\n\nfunction ExceptionInfo(excPtr) {\n this.excPtr = excPtr;\n this.ptr = excPtr - 24;\n this.set_type = function(type) {\n HEAPU32[this.ptr + 4 >> 2] = type;\n };\n this.get_type = function() {\n return HEAPU32[this.ptr + 4 >> 2];\n };\n this.set_destructor = function(destructor) {\n HEAPU32[this.ptr + 8 >> 2] = destructor;\n };\n this.get_destructor = function() {\n return HEAPU32[this.ptr + 8 >> 2];\n };\n this.set_refcount = function(refcount) {\n HEAP32[this.ptr >> 2] = refcount;\n };\n this.set_caught = function(caught) {\n caught = caught ? 1 : 0;\n HEAP8[this.ptr + 12 >> 0] = caught;\n };\n this.get_caught = function() {\n return HEAP8[this.ptr + 12 >> 0] != 0;\n };\n this.set_rethrown = function(rethrown) {\n rethrown = rethrown ? 1 : 0;\n HEAP8[this.ptr + 13 >> 0] = rethrown;\n };\n this.get_rethrown = function() {\n return HEAP8[this.ptr + 13 >> 0] != 0;\n };\n this.init = function(type, destructor) {\n this.set_adjusted_ptr(0);\n this.set_type(type);\n this.set_destructor(destructor);\n this.set_refcount(0);\n this.set_caught(false);\n this.set_rethrown(false);\n };\n this.add_ref = function() {\n var value = HEAP32[this.ptr >> 2];\n HEAP32[this.ptr >> 2] = value + 1;\n };\n this.release_ref = function() {\n var prev = HEAP32[this.ptr >> 2];\n HEAP32[this.ptr >> 2] = prev - 1;\n return prev === 1;\n };\n this.set_adjusted_ptr = function(adjustedPtr) {\n HEAPU32[this.ptr + 16 >> 2] = adjustedPtr;\n };\n this.get_adjusted_ptr = function() {\n return HEAPU32[this.ptr + 16 >> 2];\n };\n this.get_exception_ptr = function() {\n var isPointer = ___cxa_is_pointer_type(this.get_type());\n if (isPointer) {\n return HEAPU32[this.excPtr >> 2];\n }\n var adjusted = this.get_adjusted_ptr();\n if (adjusted !== 0) return adjusted;\n return this.excPtr;\n };\n}\n\nfunction ___resumeException(ptr) {\n if (!exceptionLast) {\n exceptionLast = ptr;\n }\n throw ptr;\n}\n\nfunction ___cxa_find_matching_catch() {\n var thrown = exceptionLast;\n if (!thrown) {\n setTempRet0(0);\n return 0;\n }\n var info = new ExceptionInfo(thrown);\n info.set_adjusted_ptr(thrown);\n var thrownType = info.get_type();\n if (!thrownType) {\n setTempRet0(0);\n return thrown;\n }\n for (var i = 0; i < arguments.length; i++) {\n var caughtType = arguments[i];\n if (caughtType === 0 || caughtType === thrownType) {\n break;\n }\n var adjusted_ptr_addr = info.ptr + 16;\n if (___cxa_can_catch(caughtType, thrownType, adjusted_ptr_addr)) {\n setTempRet0(caughtType);\n return thrown;\n }\n }\n setTempRet0(thrownType);\n return thrown;\n}\n\nvar ___cxa_find_matching_catch_2 = ___cxa_find_matching_catch;\n\nvar ___cxa_find_matching_catch_3 = ___cxa_find_matching_catch;\n\nvar ___cxa_find_matching_catch_4 = ___cxa_find_matching_catch;\n\nvar ___cxa_find_matching_catch_5 = ___cxa_find_matching_catch;\n\nvar ___cxa_find_matching_catch_6 = ___cxa_find_matching_catch;\n\nvar ___cxa_find_matching_catch_7 = ___cxa_find_matching_catch;\n\nfunction ___cxa_rethrow() {\n var info = exceptionCaught.pop();\n if (!info) {\n abort(\"no exception to throw\");\n }\n var ptr = info.excPtr;\n if (!info.get_rethrown()) {\n exceptionCaught.push(info);\n info.set_rethrown(true);\n info.set_caught(false);\n uncaughtExceptionCount++;\n }\n exceptionLast = ptr;\n throw ptr;\n}\n\nfunction ___cxa_throw(ptr, type, destructor) {\n var info = new ExceptionInfo(ptr);\n info.init(type, destructor);\n exceptionLast = ptr;\n uncaughtExceptionCount++;\n throw ptr;\n}\n\nfunction ___cxa_uncaught_exceptions() {\n return uncaughtExceptionCount;\n}\n\nvar PATH = {\n isAbs: path => path.charAt(0) === \"/\",\n splitPath: filename => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (;up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n },\n normalize: path => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter(p => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: path => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: path => {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r) => {\n return PATH.normalize(l + \"/\" + r);\n }\n};\n\nfunction getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return () => {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return () => abort(\"randomDevice\");\n}\n\nvar PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(p => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to) => {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (;start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (;end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n};\n\nfunction intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n}\n\nvar TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n};\n\nfunction mmapAlloc(size) {\n abort();\n}\n\nvar MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [ \".\", \"..\" ];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n } else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n};\n\nfunction asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, arrayBuffer => {\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, event => {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n });\n if (dep) addRunDependency(dep);\n}\n\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {}) => {\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = path.split(\"/\").filter(p => !!p);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: node => {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name) => {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name) => {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev) => {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: node => {\n FS.hashRemoveNode(node);\n },\n isRoot: node => {\n return node === node.parent;\n },\n isMountpoint: node => {\n return !!node.mounted;\n },\n isFile: mode => {\n return (mode & 61440) === 32768;\n },\n isDir: mode => {\n return (mode & 61440) === 16384;\n },\n isLink: mode => {\n return (mode & 61440) === 40960;\n },\n isChrdev: mode => {\n return (mode & 61440) === 8192;\n },\n isBlkdev: mode => {\n return (mode & 61440) === 24576;\n },\n isFIFO: mode => {\n return (mode & 61440) === 4096;\n },\n isSocket: mode => {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: str => {\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n },\n flagsToPermissionString: flag => {\n var perms = [ \"r\", \"w\", \"rw\" ][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n },\n nodePermissions: (node, perms) => {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes(\"r\") && !(node.mode & 292)) {\n return 2;\n } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n return 2;\n } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n },\n mayLookup: dir => {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name) => {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir) => {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n },\n mayOpen: (node, flags) => {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => {\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n },\n getStream: fd => FS.streams[fd],\n createStream: (stream, fd_start, fd_end) => {\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: fd => {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: stream => {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: () => {\n throw new FS.ErrnoError(70);\n }\n },\n major: dev => dev >> 8,\n minor: dev => dev & 255,\n makedev: (ma, mi) => ma << 8 | mi,\n registerDevice: (dev, ops) => {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: dev => FS.devices[dev],\n getMounts: mount => {\n var mounts = [];\n var check = [ mount ];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback) => {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(mount => {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint) => {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n },\n unmount: mountpoint => {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(hash => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name) => {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev) => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode) => {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode) => {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode) => {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev) => {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath) => {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path) => {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n },\n rmdir: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n },\n unlink: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: path => {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow) => {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n },\n lstat: path => {\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode) => {\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid) => {\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len) => {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime) => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode) => {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path == \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512 && !created) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n }\n }\n return stream;\n },\n close: stream => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: stream => {\n return stream.fd === null;\n },\n llseek: (stream, offset, whence) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags) => {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags) => {\n if (!stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: stream => 0,\n ioctl: (stream, cmd, arg) => {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {}) => {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {}) => {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n },\n cwd: () => FS.currentPath,\n chdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: () => {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: () => {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: () => 0,\n write: (stream, buffer, offset, length, pos) => length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: () => {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: () => {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: (parent, name) => {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: () => stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: () => {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: () => {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [ 44 ].forEach(code => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: () => {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error) => {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: () => {\n FS.init.initialized = false;\n _fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink) => {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink) => {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite) => {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn) => {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: stream => {\n stream.seekable = false;\n },\n close: stream => {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: (stream, buffer, offset, length, pos) => {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos) => {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: obj => {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n },\n createLazyFile: (parent, name, url, canRead, canWrite) => {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to) => {\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n }\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter(chunkNum => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(key => {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => {\n if (onerror) onerror();\n removeRunDependency(dep);\n })) {\n return;\n }\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n asyncLoad(url, byteArray => processData(byteArray), onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: () => {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: () => {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = () => {\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = () => {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var getRequest = files.get(path);\n getRequest.onsuccess = () => {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n};\n\nvar SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (flags & 2) {\n return 0;\n }\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n};\n\nfunction ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & ~7) {\n return -28;\n }\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) {\n return -44;\n }\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n}\n\nfunction ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n }\n\n case 1:\n case 2:\n return 0;\n\n case 3:\n return stream.flags;\n\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n\n case 5:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n\n case 6:\n case 7:\n return 0;\n\n case 16:\n case 8:\n return -28;\n\n case 9:\n setErrNo(28);\n return -1;\n\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n case 21505:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21519:\n {\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n\n case 21520:\n {\n if (!stream.tty) return -59;\n return -28;\n }\n\n case 21531:\n {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n\n case 21523:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21524:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nvar nowIsMonotonic = true;\n\nfunction __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n}\n\nfunction readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n}\n\nfunction __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nvar __MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ];\n\nvar __MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ];\n\nfunction __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n}\n\nfunction __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n}\n\nfunction allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n}\n\nfunction _abort() {\n abort(\"\");\n}\n\nfunction _emscripten_date_now() {\n return Date.now();\n}\n\nvar _emscripten_get_now;\n\n_emscripten_get_now = () => performance.now();\n\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n}\n\nfunction getHeapMax() {\n return 2147483648;\n}\n\nfunction emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n}\n\nfunction _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n}\n\nvar ENV = {};\n\nfunction getExecutableName() {\n return thisProgram || \"./this.program\";\n}\n\nfunction getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": lang,\n \"_\": getExecutableName()\n };\n for (var x in ENV) {\n if (ENV[x] === undefined) delete env[x]; else env[x] = ENV[x];\n }\n var strings = [];\n for (var x in env) {\n strings.push(x + \"=\" + env[x]);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n}\n\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n}\n\nfunction _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function(string, i) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n}\n\nfunction _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function(string) {\n bufSize += string.length + 1;\n });\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n}\n\nfunction _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n}\n\nfunction exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) {\n exitRuntime();\n }\n _proc_exit(status);\n}\n\nvar _exit = exitJS;\n\nfunction _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n}\n\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction _llvm_eh_typeid_for(type) {\n return type;\n}\n\nfunction __arraySum(array, index) {\n var sum = 0;\n for (var i = 0; i <= index; sum += array[i++]) {}\n return sum;\n}\n\nvar __MONTH_DAYS_LEAP = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nvar __MONTH_DAYS_REGULAR = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nfunction __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while (days > 0) {\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) {\n newDate.setMonth(currentMonth + 1);\n } else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n}\n\nfunction writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n}\n\nfunction _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\"\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for (var rule in EXPANSION_RULES_1) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n }\n var WEEKDAYS = [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ];\n var MONTHS = [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ];\n function leadingSomething(value, digits, character) {\n var str = typeof value == \"number\" ? value.toString() : value || \"\";\n while (str.length < digits) {\n str = character[0] + str;\n }\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {\n compare = sgn(date1.getDate() - date2.getDate());\n }\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch (janFourth.getDay()) {\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n\n case 1:\n return janFourth;\n\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {\n return thisDate.getFullYear() + 1;\n }\n return thisDate.getFullYear();\n }\n return thisDate.getFullYear() - 1;\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function(date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function(date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function(date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function(date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function(date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n \"%d\": function(date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function(date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function(date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function(date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function(date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function(date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function(date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n \"%m\": function(date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function(date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function() {\n return \"\\n\";\n },\n \"%p\": function(date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) {\n return \"AM\";\n }\n return \"PM\";\n },\n \"%S\": function(date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function() {\n return \"\\t\";\n },\n \"%u\": function(date) {\n return date.tm_wday || 7;\n },\n \"%U\": function(date) {\n var days = date.tm_yday + 7 - date.tm_wday;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%V\": function(date) {\n var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7);\n if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) {\n val++;\n }\n if (!val) {\n val = 52;\n var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;\n if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) {\n val++;\n }\n } else if (val == 53) {\n var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;\n if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1;\n }\n return leadingNulls(val, 2);\n },\n \"%w\": function(date) {\n return date.tm_wday;\n },\n \"%W\": function(date) {\n var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%y\": function(date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function(date) {\n return date.tm_year + 1900;\n },\n \"%z\": function(date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function(date) {\n return date.tm_zone;\n },\n \"%%\": function() {\n return \"%\";\n }\n };\n pattern = pattern.replace(/%%/g, \"\\0\\0\");\n for (var rule in EXPANSION_RULES_2) {\n if (pattern.includes(rule)) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_2[rule](date));\n }\n }\n pattern = pattern.replace(/\\0\\0/g, \"%\");\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) {\n return 0;\n }\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n}\n\nfunction _strftime_l(s, maxsize, format, tm, loc) {\n return _strftime(s, maxsize, format, tm);\n}\n\nfunction handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n}\n\nfunction allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n}\n\nfunction maybeExit() {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n}\n\nfunction callUserCallback(func) {\n if (runtimeExited || ABORT) {\n return;\n }\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n}\n\nfunction runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n}\n\nfunction runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n}\n\nvar Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [ \"invoke_*\", \"emscripten_sleep\", \"emscripten_wget\", \"emscripten_wget_data\", \"emscripten_idb_load\", \"emscripten_idb_store\", \"emscripten_idb_delete\", \"emscripten_idb_exists\", \"emscripten_idb_load_blob\", \"emscripten_idb_store_blob\", \"SDL_Delay\", \"emscripten_scan_registers\", \"emscripten_lazy_load_code\", \"emscripten_fiber_swap\", \"__load_secondary_module\", \"fd_sync\", \"__wasi_fd_sync\", \"_emval_await\", \"_dlopen_js\", \"__asyncjs__*\" ];\n for (var x in imports) {\n (function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") {\n var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n }\n })(x);\n }\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for (var x in exports) {\n (function(x) {\n var original = exports[x];\n if (typeof original == \"function\") {\n ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally {\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n } else {\n ret[x] = original;\n }\n })(x);\n }\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") {\n Fibers.trampoline();\n }\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject) => {\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0) => {\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) {\n return;\n }\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.resume();\n }\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) {\n throw asyncWasmReturnValue;\n }\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.pause();\n }\n runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach(func => callUserCallback(func));\n } else {\n abort(\"invalid state: \" + Asyncify.state);\n }\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep(wakeUp => {\n startAsync().then(wakeUp);\n });\n }\n};\n\nfunction AsciiToString(ptr) {\n var str = \"\";\n while (1) {\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n}\n\nvar FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n};\n\nvar readMode = 292 | 73;\n\nvar writeMode = 146;\n\nObject.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n});\n\nFS.FSNode = FSNode;\n\nFS.staticInit();\n\nvar wasmImports = {\n \"S\": __asyncjs__emglken_fill_stdin_buffer,\n \"k\": ___cxa_begin_catch,\n \"n\": ___cxa_end_catch,\n \"a\": ___cxa_find_matching_catch_2,\n \"d\": ___cxa_find_matching_catch_3,\n \"m\": ___cxa_find_matching_catch_4,\n \"s\": ___cxa_find_matching_catch_5,\n \"x\": ___cxa_find_matching_catch_6,\n \"ca\": ___cxa_find_matching_catch_7,\n \"K\": ___cxa_rethrow,\n \"o\": ___cxa_throw,\n \"ba\": ___cxa_uncaught_exceptions,\n \"g\": ___resumeException,\n \"aa\": ___syscall_faccessat,\n \"J\": ___syscall_fcntl64,\n \"$\": ___syscall_getcwd,\n \"_\": ___syscall_ioctl,\n \"Z\": ___syscall_openat,\n \"V\": __emscripten_get_now_is_monotonic,\n \"U\": __localtime_js,\n \"T\": __tzset_js,\n \"D\": _abort,\n \"B\": _emscripten_date_now,\n \"R\": _emscripten_memcpy_big,\n \"Q\": _emscripten_resize_heap,\n \"Y\": _environ_get,\n \"X\": _environ_sizes_get,\n \"C\": _exit,\n \"I\": _fd_close,\n \"W\": _fd_read,\n \"P\": _fd_seek,\n \"H\": _fd_write,\n \"G\": invoke_diii,\n \"F\": invoke_fiii,\n \"q\": invoke_i,\n \"b\": invoke_ii,\n \"c\": invoke_iii,\n \"e\": invoke_iiii,\n \"p\": invoke_iiiii,\n \"u\": invoke_iiiiii,\n \"w\": invoke_iiiiiii,\n \"E\": invoke_iiiiiiii,\n \"A\": invoke_iiiiiiiiiiii,\n \"O\": invoke_ji,\n \"N\": invoke_jiiii,\n \"h\": invoke_v,\n \"i\": invoke_vi,\n \"f\": invoke_vii,\n \"j\": invoke_viii,\n \"r\": invoke_viiii,\n \"t\": invoke_viiiii,\n \"v\": invoke_viiiiiii,\n \"y\": invoke_viiiiiiiiii,\n \"z\": invoke_viiiiiiiiiiiiiii,\n \"l\": _llvm_eh_typeid_for,\n \"M\": _strftime,\n \"L\": _strftime_l\n};\n\nvar asm = createWasm();\n\nvar ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"ea\"]).apply(null, arguments);\n};\n\nvar ___cxa_free_exception = function() {\n return (___cxa_free_exception = Module[\"asm\"][\"fa\"]).apply(null, arguments);\n};\n\nvar _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"ga\"]).apply(null, arguments);\n};\n\nvar ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"ha\"]).apply(null, arguments);\n};\n\nvar _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"ia\"]).apply(null, arguments);\n};\n\nvar _malloc = function() {\n return (_malloc = Module[\"asm\"][\"ja\"]).apply(null, arguments);\n};\n\nvar _free = function() {\n return (_free = Module[\"asm\"][\"ka\"]).apply(null, arguments);\n};\n\nvar _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"la\"]).apply(null, arguments);\n};\n\nvar ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"ma\"]).apply(null, arguments);\n};\n\nvar _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"oa\"]).apply(null, arguments);\n};\n\nvar setTempRet0 = function() {\n return (setTempRet0 = Module[\"asm\"][\"pa\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n};\n\nvar stackSave = function() {\n return (stackSave = Module[\"asm\"][\"qa\"]).apply(null, arguments);\n};\n\nvar stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"ra\"]).apply(null, arguments);\n};\n\nvar stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"sa\"]).apply(null, arguments);\n};\n\nvar ___cxa_can_catch = function() {\n return (___cxa_can_catch = Module[\"asm\"][\"ta\"]).apply(null, arguments);\n};\n\nvar ___cxa_is_pointer_type = function() {\n return (___cxa_is_pointer_type = Module[\"asm\"][\"ua\"]).apply(null, arguments);\n};\n\nvar dynCall_ii = Module[\"dynCall_ii\"] = function() {\n return (dynCall_ii = Module[\"dynCall_ii\"] = Module[\"asm\"][\"va\"]).apply(null, arguments);\n};\n\nvar dynCall_iiii = Module[\"dynCall_iiii\"] = function() {\n return (dynCall_iiii = Module[\"dynCall_iiii\"] = Module[\"asm\"][\"wa\"]).apply(null, arguments);\n};\n\nvar dynCall_viii = Module[\"dynCall_viii\"] = function() {\n return (dynCall_viii = Module[\"dynCall_viii\"] = Module[\"asm\"][\"xa\"]).apply(null, arguments);\n};\n\nvar dynCall_v = Module[\"dynCall_v\"] = function() {\n return (dynCall_v = Module[\"dynCall_v\"] = Module[\"asm\"][\"ya\"]).apply(null, arguments);\n};\n\nvar dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"za\"]).apply(null, arguments);\n};\n\nvar dynCall_iii = Module[\"dynCall_iii\"] = function() {\n return (dynCall_iii = Module[\"dynCall_iii\"] = Module[\"asm\"][\"Aa\"]).apply(null, arguments);\n};\n\nvar dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"Ba\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = function() {\n return (dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = Module[\"asm\"][\"Ca\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() {\n return (dynCall_iiiii = Module[\"dynCall_iiiii\"] = Module[\"asm\"][\"Da\"]).apply(null, arguments);\n};\n\nvar dynCall_i = Module[\"dynCall_i\"] = function() {\n return (dynCall_i = Module[\"dynCall_i\"] = Module[\"asm\"][\"Ea\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = function() {\n return (dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = Module[\"asm\"][\"Fa\"]).apply(null, arguments);\n};\n\nvar dynCall_viiii = Module[\"dynCall_viiii\"] = function() {\n return (dynCall_viiii = Module[\"dynCall_viiii\"] = Module[\"asm\"][\"Ga\"]).apply(null, arguments);\n};\n\nvar dynCall_ji = Module[\"dynCall_ji\"] = function() {\n return (dynCall_ji = Module[\"dynCall_ji\"] = Module[\"asm\"][\"Ha\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiii = Module[\"dynCall_viiiii\"] = function() {\n return (dynCall_viiiii = Module[\"dynCall_viiiii\"] = Module[\"asm\"][\"Ia\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = function() {\n return (dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = Module[\"asm\"][\"Ja\"]).apply(null, arguments);\n};\n\nvar dynCall_jiiii = Module[\"dynCall_jiiii\"] = function() {\n return (dynCall_jiiii = Module[\"dynCall_jiiii\"] = Module[\"asm\"][\"Ka\"]).apply(null, arguments);\n};\n\nvar dynCall_fiii = Module[\"dynCall_fiii\"] = function() {\n return (dynCall_fiii = Module[\"dynCall_fiii\"] = Module[\"asm\"][\"La\"]).apply(null, arguments);\n};\n\nvar dynCall_diii = Module[\"dynCall_diii\"] = function() {\n return (dynCall_diii = Module[\"dynCall_diii\"] = Module[\"asm\"][\"Ma\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = function() {\n return (dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = Module[\"asm\"][\"Na\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = Module[\"asm\"][\"Oa\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiiiiii = Module[\"dynCall_viiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiii = Module[\"dynCall_viiiiiiiiii\"] = Module[\"asm\"][\"Pa\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Qa\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"Ra\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"Sa\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"Ta\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"Ua\"]).apply(null, arguments);\n};\n\nvar ___start_em_js = Module[\"___start_em_js\"] = 52440;\n\nvar ___stop_em_js = Module[\"___stop_em_js\"] = 55125;\n\nfunction invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iii(index, a1, a2) {\n var sp = stackSave();\n try {\n return dynCall_iii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n return dynCall_iiiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiii(index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n dynCall_viiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_fiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_fiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_diii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_diii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n dynCall_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_ji(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ji(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_jiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_jiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nModule[\"AsciiToString\"] = AsciiToString;\n\nModule[\"FS\"] = FS;\n\nvar calledRun;\n\ndependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n};\n\nfunction callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach(arg => {\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n}\n\nfunction run(args = arguments_) {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n}\n\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [ Module[\"preInit\"] ];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\n\nvar shouldRunNow = true;\n\nif (Module[\"noInitialRun\"]) shouldRunNow = false;\n\nrun();\n\n\n return Module.ready\n}\n\n);\n})();\nexport default Module;","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"4QCNJ\")).toString();","/*\n\nEmglken port of Git\n===================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nimport EmglkenVM from './vm.js'\nimport GitCore from '../build/git-core.js'\n\nexport default class Git extends EmglkenVM\n{\n default_options()\n {\n return {\n vmcore: GitCore,\n }\n }\n}","\nvar Module = (() => {\n var _scriptDir = import.meta.url;\n \n return (\nfunction(Module = {}) {\n\nvar Module = typeof Module != \"undefined\" ? Module : {};\n\nvar readyPromiseResolve, readyPromiseReject;\n\nModule[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n});\n\nvar moduleOverrides = Object.assign({}, Module);\n\nvar arguments_ = [];\n\nvar thisProgram = \"./this.program\";\n\nvar quit_ = (status, toThrow) => {\n throw toThrow;\n};\n\nvar ENVIRONMENT_IS_WEB = true;\n\nvar ENVIRONMENT_IS_WORKER = false;\n\nvar scriptDirectory = \"\";\n\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n}\n\nvar read_, readAsync, readBinary, setWindowTitle;\n\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = title => document.title = title;\n} else {}\n\nvar out = Module[\"print\"] || console.log.bind(console);\n\nvar err = Module[\"printErr\"] || console.warn.bind(console);\n\nObject.assign(Module, moduleOverrides);\n\nmoduleOverrides = null;\n\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\n\nvar wasmBinary;\n\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\nvar noExitRuntime = Module[\"noExitRuntime\"] || false;\n\nif (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n}\n\nvar wasmMemory;\n\nvar ABORT = false;\n\nvar EXITSTATUS;\n\nfunction assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n}\n\nvar UTF8Decoder = new TextDecoder(\"utf8\");\n\nfunction UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n}\n\nfunction UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n}\n\nfunction stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n}\n\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\n\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n}\n\nvar HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n}\n\nvar wasmTable;\n\nvar __ATPRERUN__ = [];\n\nvar __ATINIT__ = [];\n\nvar __ATMAIN__ = [];\n\nvar __ATEXIT__ = [];\n\nvar __ATPOSTRUN__ = [];\n\nvar runtimeInitialized = false;\n\nvar runtimeExited = false;\n\nvar runtimeKeepaliveCounter = 0;\n\nfunction keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n}\n\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [ Module[\"preRun\"] ];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\n\nfunction initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n}\n\nfunction preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n}\n\nfunction exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n}\n\nfunction postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [ Module[\"postRun\"] ];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\n\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\n\nfunction addOnInit(cb) {\n __ATINIT__.unshift(cb);\n}\n\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\n\nvar runDependencies = 0;\n\nvar runDependencyWatcher = null;\n\nvar dependenciesFulfilled = null;\n\nfunction getUniqueRunDependency(id) {\n return id;\n}\n\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n}\n\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\n\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n}\n\nvar dataURIPrefix = \"data:application/octet-stream;base64,\";\n\nfunction isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n}\n\nvar wasmBinaryFile;\n\nif (Module[\"locateFile\"]) {\n wasmBinaryFile = \"git-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n} else {\n wasmBinaryFile = new URL(\"git-core.wasm\", import.meta.url).href;\n}\n\nfunction getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n}\n\nfunction getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n}\n\nfunction instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n}\n\nfunction instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n } else {\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n}\n\nfunction createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"E\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"N\"];\n addOnInit(Module[\"asm\"][\"F\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n}\n\nvar tempDouble;\n\nvar tempI64;\n\nfunction emglken_common_buffer_transformer(buf, len, numchars, func, dont_reduce) {\n const index = buf >> 2;\n const utf32 = HEAPU32.subarray(index, index + numchars);\n const data = dont_reduce ? utf32 : utf32.reduce((prev, ch) => prev + String.fromCodePoint(ch), \"\");\n const new_str = func(data);\n const newbuf = Uint32Array.from(new_str, ch => ch.codePointAt(0));\n const newlen = newbuf.length;\n HEAPU32.set(newbuf.subarray(0, Math.min(len, newlen)), index);\n return newlen;\n}\n\nfunction glk_buffer_to_lower_case_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, str => str.toLowerCase());\n}\n\nfunction glk_buffer_to_upper_case_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, str => str.toUpperCase());\n}\n\nfunction glk_buffer_to_title_case_uni(buf, len, numchars, lowerrest) {\n return emglken_common_buffer_transformer(buf, len, numchars, utf32 => utf32.reduce((prev, ch, index) => {\n const special_cases = {\n \"ß\": \"Ss\",\n \"DŽ\": \"Dž\",\n \"Dž\": \"Dž\",\n \"dž\": \"Dž\",\n \"LJ\": \"Lj\",\n \"Lj\": \"Lj\",\n \"lj\": \"Lj\",\n \"NJ\": \"Nj\",\n \"Nj\": \"Nj\",\n \"nj\": \"Nj\",\n \"DZ\": \"Dz\",\n \"Dz\": \"Dz\",\n \"dz\": \"Dz\",\n \"և\": \"Եւ\",\n \"ᾲ\": \"Ὰͅ\",\n \"ᾳ\": \"ᾼ\",\n \"ᾴ\": \"Άͅ\",\n \"ᾷ\": \"ᾼ͂\",\n \"ᾼ\": \"ᾼ\",\n \"ῂ\": \"Ὴͅ\",\n \"ῃ\": \"ῌ\",\n \"ῄ\": \"Ήͅ\",\n \"ῇ\": \"ῌ͂\",\n \"ῌ\": \"ῌ\",\n \"ῲ\": \"Ὼͅ\",\n \"ῳ\": \"ῼ\",\n \"ῴ\": \"Ώͅ\",\n \"ῷ\": \"ῼ͂\",\n \"ῼ\": \"ῼ\",\n \"ff\": \"Ff\",\n \"fi\": \"Fi\",\n \"fl\": \"Fl\",\n \"ffi\": \"Ffi\",\n \"ffl\": \"Ffl\",\n \"ſt\": \"St\",\n \"st\": \"St\",\n \"ﬓ\": \"Մն\",\n \"ﬔ\": \"Մե\",\n \"ﬕ\": \"Մի\",\n \"ﬖ\": \"Վն\",\n \"ﬗ\": \"Մխ\"\n };\n const slightly_less_special_cases = [ \"ᾈᾉᾊᾋᾌᾍᾎᾏ\", \"ᾘᾙᾚᾛᾜᾝᾞᾟ\", \"ᾨᾩᾪᾫᾬᾭᾮᾯ\" ];\n let thischar = String.fromCodePoint(ch);\n if (index === 0) {\n if (special_cases[thischar]) {\n thischar = special_cases[thischar];\n } else if (ch >= 8064 && ch < 8112) {\n thischar = slightly_less_special_cases[(ch - 8064) / 16 | 0][ch % 8];\n } else {\n thischar = thischar.toUpperCase();\n }\n } else if (lowerrest) {\n thischar = thischar.toLowerCase();\n }\n return prev + thischar;\n }, \"\"), 1);\n}\n\nfunction glk_buffer_canon_decompose_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, str => str.normalize(\"NFD\"));\n}\n\nfunction glk_buffer_canon_normalize_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, str => str.normalize(\"NFC\"));\n}\n\nfunction __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async () => {\n if (!Module.emglken_stdin_buffers.length) {\n await new Promise(resolve => {\n Module.emglken_stdin_ready = resolve;\n });\n }\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) {\n HEAPU8.set(input, buffer);\n } else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n}\n\nfunction ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n}\n\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n}\n\nvar PATH = {\n isAbs: path => path.charAt(0) === \"/\",\n splitPath: filename => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (;up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n },\n normalize: path => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter(p => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: path => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: path => {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r) => {\n return PATH.normalize(l + \"/\" + r);\n }\n};\n\nfunction getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return () => {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return () => abort(\"randomDevice\");\n}\n\nvar PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(p => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to) => {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (;start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (;end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n};\n\nfunction intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n}\n\nvar TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n};\n\nfunction mmapAlloc(size) {\n abort();\n}\n\nvar MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [ \".\", \"..\" ];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n } else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n};\n\nfunction asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, arrayBuffer => {\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, event => {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n });\n if (dep) addRunDependency(dep);\n}\n\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {}) => {\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = path.split(\"/\").filter(p => !!p);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: node => {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name) => {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name) => {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev) => {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: node => {\n FS.hashRemoveNode(node);\n },\n isRoot: node => {\n return node === node.parent;\n },\n isMountpoint: node => {\n return !!node.mounted;\n },\n isFile: mode => {\n return (mode & 61440) === 32768;\n },\n isDir: mode => {\n return (mode & 61440) === 16384;\n },\n isLink: mode => {\n return (mode & 61440) === 40960;\n },\n isChrdev: mode => {\n return (mode & 61440) === 8192;\n },\n isBlkdev: mode => {\n return (mode & 61440) === 24576;\n },\n isFIFO: mode => {\n return (mode & 61440) === 4096;\n },\n isSocket: mode => {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: str => {\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n },\n flagsToPermissionString: flag => {\n var perms = [ \"r\", \"w\", \"rw\" ][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n },\n nodePermissions: (node, perms) => {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes(\"r\") && !(node.mode & 292)) {\n return 2;\n } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n return 2;\n } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n },\n mayLookup: dir => {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name) => {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir) => {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n },\n mayOpen: (node, flags) => {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => {\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n },\n getStream: fd => FS.streams[fd],\n createStream: (stream, fd_start, fd_end) => {\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: fd => {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: stream => {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: () => {\n throw new FS.ErrnoError(70);\n }\n },\n major: dev => dev >> 8,\n minor: dev => dev & 255,\n makedev: (ma, mi) => ma << 8 | mi,\n registerDevice: (dev, ops) => {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: dev => FS.devices[dev],\n getMounts: mount => {\n var mounts = [];\n var check = [ mount ];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback) => {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(mount => {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint) => {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n },\n unmount: mountpoint => {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(hash => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name) => {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev) => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode) => {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode) => {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode) => {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev) => {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath) => {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path) => {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n },\n rmdir: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n },\n unlink: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: path => {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow) => {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n },\n lstat: path => {\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode) => {\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid) => {\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len) => {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime) => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode) => {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path == \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512 && !created) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n }\n }\n return stream;\n },\n close: stream => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: stream => {\n return stream.fd === null;\n },\n llseek: (stream, offset, whence) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags) => {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags) => {\n if (!stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: stream => 0,\n ioctl: (stream, cmd, arg) => {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {}) => {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {}) => {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n },\n cwd: () => FS.currentPath,\n chdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: () => {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: () => {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: () => 0,\n write: (stream, buffer, offset, length, pos) => length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: () => {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: () => {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: (parent, name) => {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: () => stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: () => {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: () => {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [ 44 ].forEach(code => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: () => {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error) => {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: () => {\n FS.init.initialized = false;\n _fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink) => {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink) => {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite) => {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn) => {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: stream => {\n stream.seekable = false;\n },\n close: stream => {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: (stream, buffer, offset, length, pos) => {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos) => {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: obj => {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n },\n createLazyFile: (parent, name, url, canRead, canWrite) => {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to) => {\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n }\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter(chunkNum => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(key => {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => {\n if (onerror) onerror();\n removeRunDependency(dep);\n })) {\n return;\n }\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n asyncLoad(url, byteArray => processData(byteArray), onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: () => {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: () => {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = () => {\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = () => {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var getRequest = files.get(path);\n getRequest.onsuccess = () => {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n};\n\nvar SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (flags & 2) {\n return 0;\n }\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n};\n\nfunction ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & ~7) {\n return -28;\n }\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) {\n return -44;\n }\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n}\n\nfunction ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n }\n\n case 1:\n case 2:\n return 0;\n\n case 3:\n return stream.flags;\n\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n\n case 5:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n\n case 6:\n case 7:\n return 0;\n\n case 16:\n case 8:\n return -28;\n\n case 9:\n setErrNo(28);\n return -1;\n\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n case 21505:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21519:\n {\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n\n case 21520:\n {\n if (!stream.tty) return -59;\n return -28;\n }\n\n case 21531:\n {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n\n case 21523:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21524:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_unlinkat(dirfd, path, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (flags === 0) {\n FS.unlink(path);\n } else if (flags === 512) {\n FS.rmdir(path);\n } else {\n abort(\"Invalid flags passed to unlinkat\");\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nvar nowIsMonotonic = true;\n\nfunction __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n}\n\nfunction __emscripten_throw_longjmp() {\n throw Infinity;\n}\n\nfunction readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n}\n\nfunction __gmtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getUTCSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getUTCHours();\n HEAP32[tmPtr + 12 >> 2] = date.getUTCDate();\n HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n}\n\nfunction __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nvar __MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ];\n\nvar __MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ];\n\nfunction __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n}\n\nfunction __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n}\n\nfunction __mktime_js(tmPtr) {\n var date = new Date(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0);\n var dst = HEAP32[tmPtr + 32 >> 2];\n var guessedOffset = date.getTimezoneOffset();\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dstOffset = Math.min(winterOffset, summerOffset);\n if (dst < 0) {\n HEAP32[tmPtr + 32 >> 2] = Number(summerOffset != winterOffset && dstOffset == guessedOffset);\n } else if (dst > 0 != (dstOffset == guessedOffset)) {\n var nonDstOffset = Math.max(winterOffset, summerOffset);\n var trueOffset = dst > 0 ? dstOffset : nonDstOffset;\n date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4);\n }\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getYear();\n return date.getTime() / 1e3 | 0;\n}\n\nfunction __timegm_js(tmPtr) {\n var time = Date.UTC(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0);\n var date = new Date(time);\n HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n return date.getTime() / 1e3 | 0;\n}\n\nfunction allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n}\n\nfunction _emscripten_date_now() {\n return Date.now();\n}\n\nvar _emscripten_get_now;\n\n_emscripten_get_now = () => performance.now();\n\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n}\n\nfunction getHeapMax() {\n return 2147483648;\n}\n\nfunction emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n}\n\nfunction _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n}\n\nfunction _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n}\n\nfunction exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) {\n exitRuntime();\n }\n _proc_exit(status);\n}\n\nvar _exit = exitJS;\n\nfunction _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n}\n\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n}\n\nfunction allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n}\n\nfunction maybeExit() {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n}\n\nfunction callUserCallback(func) {\n if (runtimeExited || ABORT) {\n return;\n }\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n}\n\nfunction runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n}\n\nfunction runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n}\n\nvar Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [ \"emscripten_sleep\", \"emscripten_wget\", \"emscripten_wget_data\", \"emscripten_idb_load\", \"emscripten_idb_store\", \"emscripten_idb_delete\", \"emscripten_idb_exists\", \"emscripten_idb_load_blob\", \"emscripten_idb_store_blob\", \"SDL_Delay\", \"emscripten_scan_registers\", \"emscripten_lazy_load_code\", \"emscripten_fiber_swap\", \"__load_secondary_module\", \"fd_sync\", \"__wasi_fd_sync\", \"_emval_await\", \"_dlopen_js\", \"__asyncjs__*\" ];\n for (var x in imports) {\n (function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") {\n var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n }\n })(x);\n }\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for (var x in exports) {\n (function(x) {\n var original = exports[x];\n if (typeof original == \"function\") {\n ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally {\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n } else {\n ret[x] = original;\n }\n })(x);\n }\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") {\n Fibers.trampoline();\n }\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject) => {\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0) => {\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) {\n return;\n }\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.resume();\n }\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) {\n throw asyncWasmReturnValue;\n }\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.pause();\n }\n runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach(func => callUserCallback(func));\n } else {\n abort(\"invalid state: \" + Asyncify.state);\n }\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep(wakeUp => {\n startAsync().then(wakeUp);\n });\n }\n};\n\nfunction AsciiToString(ptr) {\n var str = \"\";\n while (1) {\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n}\n\nvar FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n};\n\nvar readMode = 292 | 73;\n\nvar writeMode = 146;\n\nObject.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n});\n\nFS.FSNode = FSNode;\n\nFS.staticInit();\n\nvar wasmImports = {\n \"q\": __asyncjs__emglken_fill_stdin_buffer,\n \"D\": ___syscall_faccessat,\n \"l\": ___syscall_fcntl64,\n \"C\": ___syscall_getcwd,\n \"B\": ___syscall_ioctl,\n \"k\": ___syscall_openat,\n \"A\": ___syscall_stat64,\n \"z\": ___syscall_unlinkat,\n \"x\": __emscripten_get_now_is_monotonic,\n \"w\": __emscripten_throw_longjmp,\n \"v\": __gmtime_js,\n \"u\": __localtime_js,\n \"t\": __mktime_js,\n \"s\": __timegm_js,\n \"r\": __tzset_js,\n \"i\": _emscripten_date_now,\n \"p\": _emscripten_memcpy_big,\n \"o\": _emscripten_resize_heap,\n \"a\": _exit,\n \"c\": _fd_close,\n \"y\": _fd_read,\n \"m\": _fd_seek,\n \"j\": _fd_write,\n \"h\": glk_buffer_canon_decompose_uni,\n \"g\": glk_buffer_canon_normalize_uni,\n \"f\": glk_buffer_to_lower_case_uni,\n \"e\": glk_buffer_to_title_case_uni,\n \"d\": glk_buffer_to_upper_case_uni,\n \"n\": invoke_vi,\n \"b\": invoke_vii\n};\n\nvar asm = createWasm();\n\nvar ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"F\"]).apply(null, arguments);\n};\n\nvar _malloc = function() {\n return (_malloc = Module[\"asm\"][\"G\"]).apply(null, arguments);\n};\n\nvar _free = function() {\n return (_free = Module[\"asm\"][\"H\"]).apply(null, arguments);\n};\n\nvar _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"I\"]).apply(null, arguments);\n};\n\nvar _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"J\"]).apply(null, arguments);\n};\n\nvar _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"K\"]).apply(null, arguments);\n};\n\nvar ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"L\"]).apply(null, arguments);\n};\n\nvar ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"M\"]).apply(null, arguments);\n};\n\nvar _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"O\"]).apply(null, arguments);\n};\n\nvar _saveSetjmp = function() {\n return (_saveSetjmp = Module[\"asm\"][\"saveSetjmp\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n};\n\nvar stackSave = function() {\n return (stackSave = Module[\"asm\"][\"P\"]).apply(null, arguments);\n};\n\nvar stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"Q\"]).apply(null, arguments);\n};\n\nvar stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"R\"]).apply(null, arguments);\n};\n\nvar dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"S\"]).apply(null, arguments);\n};\n\nvar dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"T\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"U\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"V\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"W\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"X\"]).apply(null, arguments);\n};\n\nvar ___start_em_js = Module[\"___start_em_js\"] = 33568;\n\nvar ___stop_em_js = Module[\"___stop_em_js\"] = 36253;\n\nfunction invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nModule[\"AsciiToString\"] = AsciiToString;\n\nModule[\"FS\"] = FS;\n\nvar calledRun;\n\ndependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n};\n\nfunction callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach(arg => {\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n}\n\nfunction run(args = arguments_) {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n}\n\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [ Module[\"preInit\"] ];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\n\nvar shouldRunNow = true;\n\nif (Module[\"noInitialRun\"]) shouldRunNow = false;\n\nrun();\n\n\n return Module.ready\n}\n\n);\n})();\nexport default Module;","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"kBXOE\")).toString();","/*\n\nEmglken port of Hugo\n====================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nimport EmglkenVM from './vm.js'\nimport HugoCore from '../build/hugo-core.js'\n\nexport default class Hugo extends EmglkenVM\n{\n default_options()\n {\n return {\n vmcore: HugoCore,\n }\n }\n}","\nvar Module = (() => {\n var _scriptDir = import.meta.url;\n \n return (\nfunction(Module = {}) {\n\nvar Module = typeof Module != \"undefined\" ? Module : {};\n\nvar readyPromiseResolve, readyPromiseReject;\n\nModule[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n});\n\nvar moduleOverrides = Object.assign({}, Module);\n\nvar arguments_ = [];\n\nvar thisProgram = \"./this.program\";\n\nvar quit_ = (status, toThrow) => {\n throw toThrow;\n};\n\nvar ENVIRONMENT_IS_WEB = true;\n\nvar ENVIRONMENT_IS_WORKER = false;\n\nvar scriptDirectory = \"\";\n\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n}\n\nvar read_, readAsync, readBinary, setWindowTitle;\n\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = title => document.title = title;\n} else {}\n\nvar out = Module[\"print\"] || console.log.bind(console);\n\nvar err = Module[\"printErr\"] || console.warn.bind(console);\n\nObject.assign(Module, moduleOverrides);\n\nmoduleOverrides = null;\n\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\n\nvar wasmBinary;\n\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\nvar noExitRuntime = Module[\"noExitRuntime\"] || false;\n\nif (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n}\n\nvar wasmMemory;\n\nvar ABORT = false;\n\nvar EXITSTATUS;\n\nfunction assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n}\n\nvar UTF8Decoder = new TextDecoder(\"utf8\");\n\nfunction UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n}\n\nfunction UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n}\n\nfunction stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n}\n\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\n\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n}\n\nvar HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n}\n\nvar wasmTable;\n\nvar __ATPRERUN__ = [];\n\nvar __ATINIT__ = [];\n\nvar __ATMAIN__ = [];\n\nvar __ATEXIT__ = [];\n\nvar __ATPOSTRUN__ = [];\n\nvar runtimeInitialized = false;\n\nvar runtimeExited = false;\n\nvar runtimeKeepaliveCounter = 0;\n\nfunction keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n}\n\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [ Module[\"preRun\"] ];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\n\nfunction initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n}\n\nfunction preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n}\n\nfunction exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n}\n\nfunction postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [ Module[\"postRun\"] ];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\n\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\n\nfunction addOnInit(cb) {\n __ATINIT__.unshift(cb);\n}\n\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\n\nvar runDependencies = 0;\n\nvar runDependencyWatcher = null;\n\nvar dependenciesFulfilled = null;\n\nfunction getUniqueRunDependency(id) {\n return id;\n}\n\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n}\n\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\n\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n}\n\nvar dataURIPrefix = \"data:application/octet-stream;base64,\";\n\nfunction isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n}\n\nvar wasmBinaryFile;\n\nif (Module[\"locateFile\"]) {\n wasmBinaryFile = \"hugo-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n} else {\n wasmBinaryFile = new URL(\"hugo-core.wasm\", import.meta.url).href;\n}\n\nfunction getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n}\n\nfunction getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n}\n\nfunction instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n}\n\nfunction instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n } else {\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n}\n\nfunction createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"t\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"C\"];\n addOnInit(Module[\"asm\"][\"u\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n}\n\nvar tempDouble;\n\nvar tempI64;\n\nfunction __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async () => {\n if (!Module.emglken_stdin_buffers.length) {\n await new Promise(resolve => {\n Module.emglken_stdin_ready = resolve;\n });\n }\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) {\n HEAPU8.set(input, buffer);\n } else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n}\n\nfunction ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n}\n\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n}\n\nvar PATH = {\n isAbs: path => path.charAt(0) === \"/\",\n splitPath: filename => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (;up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n },\n normalize: path => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter(p => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: path => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: path => {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r) => {\n return PATH.normalize(l + \"/\" + r);\n }\n};\n\nfunction getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return () => {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return () => abort(\"randomDevice\");\n}\n\nvar PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(p => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to) => {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (;start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (;end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n};\n\nfunction intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n}\n\nvar TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n};\n\nfunction mmapAlloc(size) {\n abort();\n}\n\nvar MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [ \".\", \"..\" ];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n } else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n};\n\nfunction asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, arrayBuffer => {\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, event => {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n });\n if (dep) addRunDependency(dep);\n}\n\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {}) => {\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = path.split(\"/\").filter(p => !!p);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: node => {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name) => {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name) => {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev) => {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: node => {\n FS.hashRemoveNode(node);\n },\n isRoot: node => {\n return node === node.parent;\n },\n isMountpoint: node => {\n return !!node.mounted;\n },\n isFile: mode => {\n return (mode & 61440) === 32768;\n },\n isDir: mode => {\n return (mode & 61440) === 16384;\n },\n isLink: mode => {\n return (mode & 61440) === 40960;\n },\n isChrdev: mode => {\n return (mode & 61440) === 8192;\n },\n isBlkdev: mode => {\n return (mode & 61440) === 24576;\n },\n isFIFO: mode => {\n return (mode & 61440) === 4096;\n },\n isSocket: mode => {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: str => {\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n },\n flagsToPermissionString: flag => {\n var perms = [ \"r\", \"w\", \"rw\" ][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n },\n nodePermissions: (node, perms) => {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes(\"r\") && !(node.mode & 292)) {\n return 2;\n } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n return 2;\n } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n },\n mayLookup: dir => {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name) => {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir) => {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n },\n mayOpen: (node, flags) => {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => {\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n },\n getStream: fd => FS.streams[fd],\n createStream: (stream, fd_start, fd_end) => {\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: fd => {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: stream => {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: () => {\n throw new FS.ErrnoError(70);\n }\n },\n major: dev => dev >> 8,\n minor: dev => dev & 255,\n makedev: (ma, mi) => ma << 8 | mi,\n registerDevice: (dev, ops) => {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: dev => FS.devices[dev],\n getMounts: mount => {\n var mounts = [];\n var check = [ mount ];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback) => {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(mount => {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint) => {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n },\n unmount: mountpoint => {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(hash => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name) => {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev) => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode) => {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode) => {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode) => {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev) => {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath) => {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path) => {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n },\n rmdir: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n },\n unlink: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: path => {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow) => {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n },\n lstat: path => {\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode) => {\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid) => {\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len) => {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime) => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode) => {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path == \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512 && !created) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n }\n }\n return stream;\n },\n close: stream => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: stream => {\n return stream.fd === null;\n },\n llseek: (stream, offset, whence) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags) => {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags) => {\n if (!stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: stream => 0,\n ioctl: (stream, cmd, arg) => {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {}) => {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {}) => {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n },\n cwd: () => FS.currentPath,\n chdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: () => {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: () => {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: () => 0,\n write: (stream, buffer, offset, length, pos) => length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: () => {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: () => {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: (parent, name) => {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: () => stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: () => {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: () => {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [ 44 ].forEach(code => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: () => {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error) => {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: () => {\n FS.init.initialized = false;\n _fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink) => {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink) => {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite) => {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn) => {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: stream => {\n stream.seekable = false;\n },\n close: stream => {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: (stream, buffer, offset, length, pos) => {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos) => {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: obj => {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n },\n createLazyFile: (parent, name, url, canRead, canWrite) => {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to) => {\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n }\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter(chunkNum => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(key => {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => {\n if (onerror) onerror();\n removeRunDependency(dep);\n })) {\n return;\n }\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n asyncLoad(url, byteArray => processData(byteArray), onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: () => {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: () => {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = () => {\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = () => {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var getRequest = files.get(path);\n getRequest.onsuccess = () => {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n};\n\nvar SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (flags & 2) {\n return 0;\n }\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n};\n\nfunction ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & ~7) {\n return -28;\n }\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) {\n return -44;\n }\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n}\n\nfunction ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n }\n\n case 1:\n case 2:\n return 0;\n\n case 3:\n return stream.flags;\n\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n\n case 5:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n\n case 6:\n case 7:\n return 0;\n\n case 16:\n case 8:\n return -28;\n\n case 9:\n setErrNo(28);\n return -1;\n\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n case 21505:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21519:\n {\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n\n case 21520:\n {\n if (!stream.tty) return -59;\n return -28;\n }\n\n case 21531:\n {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n\n case 21523:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21524:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nvar nowIsMonotonic = true;\n\nfunction __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n}\n\nfunction readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n}\n\nfunction __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nvar __MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ];\n\nvar __MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ];\n\nfunction __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n}\n\nfunction __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n}\n\nfunction allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n}\n\nfunction _emscripten_date_now() {\n return Date.now();\n}\n\nvar _emscripten_get_now;\n\n_emscripten_get_now = () => performance.now();\n\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n}\n\nfunction getHeapMax() {\n return 2147483648;\n}\n\nfunction emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n}\n\nfunction _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n}\n\nfunction _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n}\n\nfunction exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) {\n exitRuntime();\n }\n _proc_exit(status);\n}\n\nvar _exit = exitJS;\n\nfunction _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n}\n\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction __arraySum(array, index) {\n var sum = 0;\n for (var i = 0; i <= index; sum += array[i++]) {}\n return sum;\n}\n\nvar __MONTH_DAYS_LEAP = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nvar __MONTH_DAYS_REGULAR = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nfunction __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while (days > 0) {\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) {\n newDate.setMonth(currentMonth + 1);\n } else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n}\n\nfunction writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n}\n\nfunction _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\"\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for (var rule in EXPANSION_RULES_1) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n }\n var WEEKDAYS = [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ];\n var MONTHS = [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ];\n function leadingSomething(value, digits, character) {\n var str = typeof value == \"number\" ? value.toString() : value || \"\";\n while (str.length < digits) {\n str = character[0] + str;\n }\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {\n compare = sgn(date1.getDate() - date2.getDate());\n }\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch (janFourth.getDay()) {\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n\n case 1:\n return janFourth;\n\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {\n return thisDate.getFullYear() + 1;\n }\n return thisDate.getFullYear();\n }\n return thisDate.getFullYear() - 1;\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function(date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function(date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function(date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function(date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function(date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n \"%d\": function(date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function(date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function(date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function(date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function(date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function(date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function(date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n \"%m\": function(date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function(date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function() {\n return \"\\n\";\n },\n \"%p\": function(date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) {\n return \"AM\";\n }\n return \"PM\";\n },\n \"%S\": function(date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function() {\n return \"\\t\";\n },\n \"%u\": function(date) {\n return date.tm_wday || 7;\n },\n \"%U\": function(date) {\n var days = date.tm_yday + 7 - date.tm_wday;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%V\": function(date) {\n var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7);\n if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) {\n val++;\n }\n if (!val) {\n val = 52;\n var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;\n if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) {\n val++;\n }\n } else if (val == 53) {\n var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;\n if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1;\n }\n return leadingNulls(val, 2);\n },\n \"%w\": function(date) {\n return date.tm_wday;\n },\n \"%W\": function(date) {\n var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%y\": function(date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function(date) {\n return date.tm_year + 1900;\n },\n \"%z\": function(date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function(date) {\n return date.tm_zone;\n },\n \"%%\": function() {\n return \"%\";\n }\n };\n pattern = pattern.replace(/%%/g, \"\\0\\0\");\n for (var rule in EXPANSION_RULES_2) {\n if (pattern.includes(rule)) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_2[rule](date));\n }\n }\n pattern = pattern.replace(/\\0\\0/g, \"%\");\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) {\n return 0;\n }\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n}\n\nfunction handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n}\n\nfunction allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n}\n\nfunction maybeExit() {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n}\n\nfunction callUserCallback(func) {\n if (runtimeExited || ABORT) {\n return;\n }\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n}\n\nfunction runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n}\n\nfunction runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n}\n\nvar Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [ \"emscripten_sleep\", \"emscripten_wget\", \"emscripten_wget_data\", \"emscripten_idb_load\", \"emscripten_idb_store\", \"emscripten_idb_delete\", \"emscripten_idb_exists\", \"emscripten_idb_load_blob\", \"emscripten_idb_store_blob\", \"SDL_Delay\", \"emscripten_scan_registers\", \"emscripten_lazy_load_code\", \"emscripten_fiber_swap\", \"__load_secondary_module\", \"fd_sync\", \"__wasi_fd_sync\", \"_emval_await\", \"_dlopen_js\", \"__asyncjs__*\" ];\n for (var x in imports) {\n (function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") {\n var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n }\n })(x);\n }\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for (var x in exports) {\n (function(x) {\n var original = exports[x];\n if (typeof original == \"function\") {\n ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally {\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n } else {\n ret[x] = original;\n }\n })(x);\n }\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") {\n Fibers.trampoline();\n }\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject) => {\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0) => {\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) {\n return;\n }\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.resume();\n }\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) {\n throw asyncWasmReturnValue;\n }\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.pause();\n }\n runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach(func => callUserCallback(func));\n } else {\n abort(\"invalid state: \" + Asyncify.state);\n }\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep(wakeUp => {\n startAsync().then(wakeUp);\n });\n }\n};\n\nfunction AsciiToString(ptr) {\n var str = \"\";\n while (1) {\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n}\n\nvar FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n};\n\nvar readMode = 292 | 73;\n\nvar writeMode = 146;\n\nObject.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n});\n\nFS.FSNode = FSNode;\n\nFS.staticInit();\n\nvar wasmImports = {\n \"j\": __asyncjs__emglken_fill_stdin_buffer,\n \"s\": ___syscall_faccessat,\n \"e\": ___syscall_fcntl64,\n \"r\": ___syscall_getcwd,\n \"q\": ___syscall_ioctl,\n \"p\": ___syscall_openat,\n \"o\": ___syscall_stat64,\n \"m\": __emscripten_get_now_is_monotonic,\n \"l\": __localtime_js,\n \"k\": __tzset_js,\n \"b\": _emscripten_date_now,\n \"i\": _emscripten_memcpy_big,\n \"h\": _emscripten_resize_heap,\n \"a\": _exit,\n \"d\": _fd_close,\n \"n\": _fd_read,\n \"g\": _fd_seek,\n \"c\": _fd_write,\n \"f\": _strftime\n};\n\nvar asm = createWasm();\n\nvar ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"u\"]).apply(null, arguments);\n};\n\nvar _malloc = function() {\n return (_malloc = Module[\"asm\"][\"v\"]).apply(null, arguments);\n};\n\nvar _free = function() {\n return (_free = Module[\"asm\"][\"w\"]).apply(null, arguments);\n};\n\nvar _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"x\"]).apply(null, arguments);\n};\n\nvar _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"y\"]).apply(null, arguments);\n};\n\nvar _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"z\"]).apply(null, arguments);\n};\n\nvar ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"A\"]).apply(null, arguments);\n};\n\nvar ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"B\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n};\n\nvar stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"D\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"E\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"F\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"G\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"H\"]).apply(null, arguments);\n};\n\nvar ___start_em_js = Module[\"___start_em_js\"] = 18128;\n\nvar ___stop_em_js = Module[\"___stop_em_js\"] = 20813;\n\nModule[\"AsciiToString\"] = AsciiToString;\n\nModule[\"FS\"] = FS;\n\nvar calledRun;\n\ndependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n};\n\nfunction callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach(arg => {\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n}\n\nfunction run(args = arguments_) {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n}\n\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [ Module[\"preInit\"] ];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\n\nvar shouldRunNow = true;\n\nif (Module[\"noInitialRun\"]) shouldRunNow = false;\n\nrun();\n\n\n return Module.ready\n}\n\n);\n})();\nexport default Module;","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"ida9s\")).toString();","/*\n\nEmglken port of TADS\n====================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nimport EmglkenVM from './vm.js'\nimport TADSCore from '../build/tads-core.js'\n\nexport default class TADS extends EmglkenVM\n{\n default_options()\n {\n return {\n vmcore: TADSCore,\n }\n }\n}","\nvar Module = (() => {\n var _scriptDir = import.meta.url;\n \n return (\nfunction(Module = {}) {\n\nvar Module = typeof Module != \"undefined\" ? Module : {};\n\nvar readyPromiseResolve, readyPromiseReject;\n\nModule[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n});\n\nvar moduleOverrides = Object.assign({}, Module);\n\nvar arguments_ = [];\n\nvar thisProgram = \"./this.program\";\n\nvar quit_ = (status, toThrow) => {\n throw toThrow;\n};\n\nvar ENVIRONMENT_IS_WEB = true;\n\nvar ENVIRONMENT_IS_WORKER = false;\n\nvar scriptDirectory = \"\";\n\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n}\n\nvar read_, readAsync, readBinary, setWindowTitle;\n\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = title => document.title = title;\n} else {}\n\nvar out = Module[\"print\"] || console.log.bind(console);\n\nvar err = Module[\"printErr\"] || console.warn.bind(console);\n\nObject.assign(Module, moduleOverrides);\n\nmoduleOverrides = null;\n\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\n\nvar wasmBinary;\n\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\nvar noExitRuntime = Module[\"noExitRuntime\"] || false;\n\nif (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n}\n\nvar wasmMemory;\n\nvar ABORT = false;\n\nvar EXITSTATUS;\n\nfunction assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n}\n\nvar UTF8Decoder = new TextDecoder(\"utf8\");\n\nfunction UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n}\n\nfunction UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n}\n\nfunction stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n}\n\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\n\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n}\n\nvar HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n}\n\nvar wasmTable;\n\nvar __ATPRERUN__ = [];\n\nvar __ATINIT__ = [];\n\nvar __ATMAIN__ = [];\n\nvar __ATEXIT__ = [];\n\nvar __ATPOSTRUN__ = [];\n\nvar runtimeInitialized = false;\n\nvar runtimeExited = false;\n\nvar runtimeKeepaliveCounter = 0;\n\nfunction keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n}\n\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [ Module[\"preRun\"] ];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\n\nfunction initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n}\n\nfunction preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n}\n\nfunction exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n}\n\nfunction postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [ Module[\"postRun\"] ];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\n\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\n\nfunction addOnInit(cb) {\n __ATINIT__.unshift(cb);\n}\n\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\n\nvar runDependencies = 0;\n\nvar runDependencyWatcher = null;\n\nvar dependenciesFulfilled = null;\n\nfunction getUniqueRunDependency(id) {\n return id;\n}\n\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n}\n\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\n\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n}\n\nvar dataURIPrefix = \"data:application/octet-stream;base64,\";\n\nfunction isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n}\n\nvar wasmBinaryFile;\n\nif (Module[\"locateFile\"]) {\n wasmBinaryFile = \"tads-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n} else {\n wasmBinaryFile = new URL(\"tads-core.wasm\", import.meta.url).href;\n}\n\nfunction getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n}\n\nfunction getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n}\n\nfunction instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n}\n\nfunction instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n } else {\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n}\n\nfunction createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"ha\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"qa\"];\n addOnInit(Module[\"asm\"][\"ia\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n}\n\nvar tempDouble;\n\nvar tempI64;\n\nfunction __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async () => {\n if (!Module.emglken_stdin_buffers.length) {\n await new Promise(resolve => {\n Module.emglken_stdin_ready = resolve;\n });\n }\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) {\n HEAPU8.set(input, buffer);\n } else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n}\n\nfunction ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n}\n\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n}\n\nvar PATH = {\n isAbs: path => path.charAt(0) === \"/\",\n splitPath: filename => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (;up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n },\n normalize: path => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter(p => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: path => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: path => {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r) => {\n return PATH.normalize(l + \"/\" + r);\n }\n};\n\nfunction getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return () => {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return () => abort(\"randomDevice\");\n}\n\nvar PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(p => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to) => {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (;start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (;end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n};\n\nfunction intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n}\n\nvar TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n};\n\nfunction mmapAlloc(size) {\n abort();\n}\n\nvar MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [ \".\", \"..\" ];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n } else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n};\n\nfunction asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, arrayBuffer => {\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, event => {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n });\n if (dep) addRunDependency(dep);\n}\n\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {}) => {\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = path.split(\"/\").filter(p => !!p);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: node => {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name) => {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name) => {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev) => {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: node => {\n FS.hashRemoveNode(node);\n },\n isRoot: node => {\n return node === node.parent;\n },\n isMountpoint: node => {\n return !!node.mounted;\n },\n isFile: mode => {\n return (mode & 61440) === 32768;\n },\n isDir: mode => {\n return (mode & 61440) === 16384;\n },\n isLink: mode => {\n return (mode & 61440) === 40960;\n },\n isChrdev: mode => {\n return (mode & 61440) === 8192;\n },\n isBlkdev: mode => {\n return (mode & 61440) === 24576;\n },\n isFIFO: mode => {\n return (mode & 61440) === 4096;\n },\n isSocket: mode => {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: str => {\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n },\n flagsToPermissionString: flag => {\n var perms = [ \"r\", \"w\", \"rw\" ][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n },\n nodePermissions: (node, perms) => {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes(\"r\") && !(node.mode & 292)) {\n return 2;\n } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n return 2;\n } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n },\n mayLookup: dir => {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name) => {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir) => {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n },\n mayOpen: (node, flags) => {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => {\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n },\n getStream: fd => FS.streams[fd],\n createStream: (stream, fd_start, fd_end) => {\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: fd => {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: stream => {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: () => {\n throw new FS.ErrnoError(70);\n }\n },\n major: dev => dev >> 8,\n minor: dev => dev & 255,\n makedev: (ma, mi) => ma << 8 | mi,\n registerDevice: (dev, ops) => {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: dev => FS.devices[dev],\n getMounts: mount => {\n var mounts = [];\n var check = [ mount ];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback) => {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(mount => {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint) => {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n },\n unmount: mountpoint => {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(hash => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name) => {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev) => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode) => {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode) => {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode) => {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev) => {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath) => {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path) => {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n },\n rmdir: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n },\n unlink: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: path => {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow) => {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n },\n lstat: path => {\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode) => {\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid) => {\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len) => {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime) => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode) => {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path == \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512 && !created) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n }\n }\n return stream;\n },\n close: stream => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: stream => {\n return stream.fd === null;\n },\n llseek: (stream, offset, whence) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags) => {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags) => {\n if (!stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: stream => 0,\n ioctl: (stream, cmd, arg) => {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {}) => {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {}) => {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n },\n cwd: () => FS.currentPath,\n chdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: () => {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: () => {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: () => 0,\n write: (stream, buffer, offset, length, pos) => length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: () => {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: () => {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: (parent, name) => {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: () => stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: () => {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: () => {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [ 44 ].forEach(code => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: () => {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error) => {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: () => {\n FS.init.initialized = false;\n _fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink) => {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink) => {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite) => {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn) => {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: stream => {\n stream.seekable = false;\n },\n close: stream => {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: (stream, buffer, offset, length, pos) => {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos) => {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: obj => {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n },\n createLazyFile: (parent, name, url, canRead, canWrite) => {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to) => {\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n }\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter(chunkNum => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(key => {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => {\n if (onerror) onerror();\n removeRunDependency(dep);\n })) {\n return;\n }\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n asyncLoad(url, byteArray => processData(byteArray), onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: () => {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: () => {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = () => {\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = () => {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var getRequest = files.get(path);\n getRequest.onsuccess = () => {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n};\n\nvar SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (flags & 2) {\n return 0;\n }\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n};\n\nfunction ___syscall_dup(fd) {\n try {\n var old = SYSCALLS.getStreamFromFD(fd);\n return FS.createStream(old, 0).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & ~7) {\n return -28;\n }\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) {\n return -44;\n }\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n}\n\nfunction ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n }\n\n case 1:\n case 2:\n return 0;\n\n case 3:\n return stream.flags;\n\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n\n case 5:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n\n case 6:\n case 7:\n return 0;\n\n case 16:\n case 8:\n return -28;\n\n case 9:\n setErrNo(28);\n return -1;\n\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_getdents64(fd, dirp, count) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n if (!stream.getdents) {\n stream.getdents = FS.readdir(stream.path);\n }\n var struct_size = 280;\n var pos = 0;\n var off = FS.llseek(stream, 0, 1);\n var idx = Math.floor(off / struct_size);\n while (idx < stream.getdents.length && pos + struct_size <= count) {\n var id;\n var type;\n var name = stream.getdents[idx];\n if (name === \".\") {\n id = stream.node.id;\n type = 4;\n } else if (name === \"..\") {\n var lookup = FS.lookupPath(stream.path, {\n parent: true\n });\n id = lookup.node.id;\n type = 4;\n } else {\n var child = FS.lookupNode(stream.node, name);\n id = child.id;\n type = FS.isChrdev(child.mode) ? 2 : FS.isDir(child.mode) ? 4 : FS.isLink(child.mode) ? 10 : 8;\n }\n tempI64 = [ id >>> 0, (tempDouble = id, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[dirp + pos >> 2] = tempI64[0], HEAP32[dirp + pos + 4 >> 2] = tempI64[1];\n tempI64 = [ (idx + 1) * struct_size >>> 0, (tempDouble = (idx + 1) * struct_size, \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[dirp + pos + 8 >> 2] = tempI64[0], HEAP32[dirp + pos + 12 >> 2] = tempI64[1];\n HEAP16[dirp + pos + 16 >> 1] = 280;\n HEAP8[dirp + pos + 18 >> 0] = type;\n stringToUTF8(name, dirp + pos + 19, 256);\n pos += struct_size;\n idx += 1;\n }\n FS.llseek(stream, idx * struct_size, 0);\n return pos;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n case 21505:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21519:\n {\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n\n case 21520:\n {\n if (!stream.tty) return -59;\n return -28;\n }\n\n case 21531:\n {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n\n case 21523:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21524:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_lstat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.lstat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_mkdirat(dirfd, path, mode) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n path = PATH.normalize(path);\n if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\n FS.mkdir(path, mode, 0);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_newfstatat(dirfd, path, buf, flags) {\n try {\n path = SYSCALLS.getStr(path);\n var nofollow = flags & 256;\n var allowEmpty = flags & 4096;\n flags = flags & ~6400;\n path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);\n return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_readlinkat(dirfd, path, buf, bufsize) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (bufsize <= 0) return -28;\n var ret = FS.readlink(path);\n var len = Math.min(bufsize, lengthBytesUTF8(ret));\n var endChar = HEAP8[buf + len];\n stringToUTF8(ret, buf, bufsize + 1);\n HEAP8[buf + len] = endChar;\n return len;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_renameat(olddirfd, oldpath, newdirfd, newpath) {\n try {\n oldpath = SYSCALLS.getStr(oldpath);\n newpath = SYSCALLS.getStr(newpath);\n oldpath = SYSCALLS.calculateAt(olddirfd, oldpath);\n newpath = SYSCALLS.calculateAt(newdirfd, newpath);\n FS.rename(oldpath, newpath);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_rmdir(path) {\n try {\n path = SYSCALLS.getStr(path);\n FS.rmdir(path);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_unlinkat(dirfd, path, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (flags === 0) {\n FS.unlink(path);\n } else if (flags === 512) {\n FS.rmdir(path);\n } else {\n abort(\"Invalid flags passed to unlinkat\");\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nvar nowIsMonotonic = true;\n\nfunction __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n}\n\nfunction __emscripten_throw_longjmp() {\n throw Infinity;\n}\n\nfunction readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n}\n\nfunction __gmtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getUTCSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getUTCHours();\n HEAP32[tmPtr + 12 >> 2] = date.getUTCDate();\n HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n}\n\nfunction __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nvar __MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ];\n\nvar __MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ];\n\nfunction __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n}\n\nfunction __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n}\n\nfunction allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n}\n\nfunction _abort() {\n abort(\"\");\n}\n\nfunction _emscripten_date_now() {\n return Date.now();\n}\n\nvar _emscripten_get_now;\n\n_emscripten_get_now = () => performance.now();\n\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n}\n\nfunction getHeapMax() {\n return 2147483648;\n}\n\nfunction emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n}\n\nfunction _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n}\n\nvar ENV = {};\n\nfunction getExecutableName() {\n return thisProgram || \"./this.program\";\n}\n\nfunction getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": lang,\n \"_\": getExecutableName()\n };\n for (var x in ENV) {\n if (ENV[x] === undefined) delete env[x]; else env[x] = ENV[x];\n }\n var strings = [];\n for (var x in env) {\n strings.push(x + \"=\" + env[x]);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n}\n\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n}\n\nfunction _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function(string, i) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n}\n\nfunction _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function(string) {\n bufSize += string.length + 1;\n });\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n}\n\nfunction _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n}\n\nfunction exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) {\n exitRuntime();\n }\n _proc_exit(status);\n}\n\nvar _exit = exitJS;\n\nfunction _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n}\n\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction __arraySum(array, index) {\n var sum = 0;\n for (var i = 0; i <= index; sum += array[i++]) {}\n return sum;\n}\n\nvar __MONTH_DAYS_LEAP = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nvar __MONTH_DAYS_REGULAR = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nfunction __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while (days > 0) {\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) {\n newDate.setMonth(currentMonth + 1);\n } else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n}\n\nfunction writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n}\n\nfunction _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\"\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for (var rule in EXPANSION_RULES_1) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n }\n var WEEKDAYS = [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ];\n var MONTHS = [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ];\n function leadingSomething(value, digits, character) {\n var str = typeof value == \"number\" ? value.toString() : value || \"\";\n while (str.length < digits) {\n str = character[0] + str;\n }\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {\n compare = sgn(date1.getDate() - date2.getDate());\n }\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch (janFourth.getDay()) {\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n\n case 1:\n return janFourth;\n\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {\n return thisDate.getFullYear() + 1;\n }\n return thisDate.getFullYear();\n }\n return thisDate.getFullYear() - 1;\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function(date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function(date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function(date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function(date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function(date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n \"%d\": function(date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function(date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function(date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function(date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function(date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function(date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function(date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n \"%m\": function(date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function(date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function() {\n return \"\\n\";\n },\n \"%p\": function(date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) {\n return \"AM\";\n }\n return \"PM\";\n },\n \"%S\": function(date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function() {\n return \"\\t\";\n },\n \"%u\": function(date) {\n return date.tm_wday || 7;\n },\n \"%U\": function(date) {\n var days = date.tm_yday + 7 - date.tm_wday;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%V\": function(date) {\n var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7);\n if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) {\n val++;\n }\n if (!val) {\n val = 52;\n var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;\n if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) {\n val++;\n }\n } else if (val == 53) {\n var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;\n if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1;\n }\n return leadingNulls(val, 2);\n },\n \"%w\": function(date) {\n return date.tm_wday;\n },\n \"%W\": function(date) {\n var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%y\": function(date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function(date) {\n return date.tm_year + 1900;\n },\n \"%z\": function(date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function(date) {\n return date.tm_zone;\n },\n \"%%\": function() {\n return \"%\";\n }\n };\n pattern = pattern.replace(/%%/g, \"\\0\\0\");\n for (var rule in EXPANSION_RULES_2) {\n if (pattern.includes(rule)) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_2[rule](date));\n }\n }\n pattern = pattern.replace(/\\0\\0/g, \"%\");\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) {\n return 0;\n }\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n}\n\nfunction handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n}\n\nfunction allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n}\n\nfunction maybeExit() {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n}\n\nfunction callUserCallback(func) {\n if (runtimeExited || ABORT) {\n return;\n }\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n}\n\nfunction runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n}\n\nfunction runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n}\n\nvar Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [ \"invoke_*\", \"emscripten_sleep\", \"emscripten_wget\", \"emscripten_wget_data\", \"emscripten_idb_load\", \"emscripten_idb_store\", \"emscripten_idb_delete\", \"emscripten_idb_exists\", \"emscripten_idb_load_blob\", \"emscripten_idb_store_blob\", \"SDL_Delay\", \"emscripten_scan_registers\", \"emscripten_lazy_load_code\", \"emscripten_fiber_swap\", \"__load_secondary_module\", \"fd_sync\", \"__wasi_fd_sync\", \"_emval_await\", \"_dlopen_js\", \"__asyncjs__*\" ];\n for (var x in imports) {\n (function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") {\n var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n }\n })(x);\n }\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for (var x in exports) {\n (function(x) {\n var original = exports[x];\n if (typeof original == \"function\") {\n ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally {\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n } else {\n ret[x] = original;\n }\n })(x);\n }\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") {\n Fibers.trampoline();\n }\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject) => {\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0) => {\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) {\n return;\n }\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.resume();\n }\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) {\n throw asyncWasmReturnValue;\n }\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.pause();\n }\n runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach(func => callUserCallback(func));\n } else {\n abort(\"invalid state: \" + Asyncify.state);\n }\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep(wakeUp => {\n startAsync().then(wakeUp);\n });\n }\n};\n\nfunction AsciiToString(ptr) {\n var str = \"\";\n while (1) {\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n}\n\nvar FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n};\n\nvar readMode = 292 | 73;\n\nvar writeMode = 146;\n\nObject.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n});\n\nFS.FSNode = FSNode;\n\nFS.staticInit();\n\nvar wasmImports = {\n \"O\": __asyncjs__emglken_fill_stdin_buffer,\n \"ga\": ___syscall_dup,\n \"fa\": ___syscall_faccessat,\n \"G\": ___syscall_fcntl64,\n \"ea\": ___syscall_getcwd,\n \"da\": ___syscall_getdents64,\n \"ca\": ___syscall_ioctl,\n \"ba\": ___syscall_lstat64,\n \"aa\": ___syscall_mkdirat,\n \"$\": ___syscall_newfstatat,\n \"F\": ___syscall_openat,\n \"_\": ___syscall_readlinkat,\n \"Z\": ___syscall_renameat,\n \"E\": ___syscall_rmdir,\n \"Y\": ___syscall_stat64,\n \"X\": ___syscall_unlinkat,\n \"T\": __emscripten_get_now_is_monotonic,\n \"S\": __emscripten_throw_longjmp,\n \"R\": __gmtime_js,\n \"Q\": __localtime_js,\n \"P\": __tzset_js,\n \"C\": _abort,\n \"B\": _emscripten_date_now,\n \"A\": _emscripten_get_now,\n \"N\": _emscripten_memcpy_big,\n \"M\": _emscripten_resize_heap,\n \"W\": _environ_get,\n \"V\": _environ_sizes_get,\n \"y\": _exit,\n \"w\": _fd_close,\n \"U\": _fd_read,\n \"I\": _fd_seek,\n \"D\": _fd_write,\n \"L\": invoke_i,\n \"b\": invoke_ii,\n \"f\": invoke_iii,\n \"e\": invoke_iiii,\n \"c\": invoke_iiiii,\n \"j\": invoke_iiiiii,\n \"l\": invoke_iiiiiii,\n \"m\": invoke_iiiiiiii,\n \"s\": invoke_iiiiiiiii,\n \"t\": invoke_iiiiiiiiii,\n \"p\": invoke_iiiiiiiiiii,\n \"x\": invoke_iiiiiiiiiiii,\n \"q\": invoke_iiiiiiiiiiiiii,\n \"z\": invoke_iiiiiiiiiiiiiiii,\n \"v\": invoke_iiiiiiiiiiiiiiiiii,\n \"i\": invoke_v,\n \"h\": invoke_vi,\n \"d\": invoke_vii,\n \"a\": invoke_viii,\n \"g\": invoke_viiii,\n \"o\": invoke_viiiii,\n \"n\": invoke_viiiiii,\n \"K\": invoke_viiiiiii,\n \"r\": invoke_viiiiiiii,\n \"k\": invoke_viiiiiiiii,\n \"u\": invoke_viiiiiiiiiii,\n \"J\": invoke_viiiiiiiiiiiiiii,\n \"H\": _strftime\n};\n\nvar asm = createWasm();\n\nvar ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"ia\"]).apply(null, arguments);\n};\n\nvar _malloc = function() {\n return (_malloc = Module[\"asm\"][\"ja\"]).apply(null, arguments);\n};\n\nvar _free = function() {\n return (_free = Module[\"asm\"][\"ka\"]).apply(null, arguments);\n};\n\nvar _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"la\"]).apply(null, arguments);\n};\n\nvar _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"ma\"]).apply(null, arguments);\n};\n\nvar _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"na\"]).apply(null, arguments);\n};\n\nvar ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"oa\"]).apply(null, arguments);\n};\n\nvar ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"pa\"]).apply(null, arguments);\n};\n\nvar _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"ra\"]).apply(null, arguments);\n};\n\nvar _saveSetjmp = function() {\n return (_saveSetjmp = Module[\"asm\"][\"saveSetjmp\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n};\n\nvar stackSave = function() {\n return (stackSave = Module[\"asm\"][\"sa\"]).apply(null, arguments);\n};\n\nvar stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"ta\"]).apply(null, arguments);\n};\n\nvar stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"ua\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() {\n return (dynCall_iiiii = Module[\"dynCall_iiiii\"] = Module[\"asm\"][\"va\"]).apply(null, arguments);\n};\n\nvar dynCall_ii = Module[\"dynCall_ii\"] = function() {\n return (dynCall_ii = Module[\"dynCall_ii\"] = Module[\"asm\"][\"wa\"]).apply(null, arguments);\n};\n\nvar dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"xa\"]).apply(null, arguments);\n};\n\nvar dynCall_iii = Module[\"dynCall_iii\"] = function() {\n return (dynCall_iii = Module[\"dynCall_iii\"] = Module[\"asm\"][\"ya\"]).apply(null, arguments);\n};\n\nvar dynCall_viii = Module[\"dynCall_viii\"] = function() {\n return (dynCall_viii = Module[\"dynCall_viii\"] = Module[\"asm\"][\"za\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiiii = Module[\"dynCall_viiiiiiii\"] = function() {\n return (dynCall_viiiiiiii = Module[\"dynCall_viiiiiiii\"] = Module[\"asm\"][\"Aa\"]).apply(null, arguments);\n};\n\nvar dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"Ba\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiii = Module[\"dynCall_viiiii\"] = function() {\n return (dynCall_viiiii = Module[\"dynCall_viiiii\"] = Module[\"asm\"][\"Ca\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = function() {\n return (dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = Module[\"asm\"][\"Da\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = function() {\n return (dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = Module[\"asm\"][\"Ea\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiii = Module[\"dynCall_iiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiii = Module[\"dynCall_iiiiiiiii\"] = Module[\"asm\"][\"Fa\"]).apply(null, arguments);\n};\n\nvar dynCall_iiii = Module[\"dynCall_iiii\"] = function() {\n return (dynCall_iiii = Module[\"dynCall_iiii\"] = Module[\"asm\"][\"Ga\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiiiii = Module[\"dynCall_viiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiii = Module[\"dynCall_viiiiiiiii\"] = Module[\"asm\"][\"Ha\"]).apply(null, arguments);\n};\n\nvar dynCall_viiii = Module[\"dynCall_viiii\"] = function() {\n return (dynCall_viiii = Module[\"dynCall_viiii\"] = Module[\"asm\"][\"Ia\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = function() {\n return (dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = Module[\"asm\"][\"Ja\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiiiiiii = Module[\"dynCall_viiiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiiii = Module[\"dynCall_viiiiiiiiiii\"] = Module[\"asm\"][\"Ka\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiii = Module[\"dynCall_iiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiii = Module[\"dynCall_iiiiiiiiii\"] = Module[\"asm\"][\"La\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = function() {\n return (dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = Module[\"asm\"][\"Ma\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiiii = Module[\"dynCall_iiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiii = Module[\"dynCall_iiiiiiiiiii\"] = Module[\"asm\"][\"Na\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiii\"] = Module[\"asm\"][\"Oa\"]).apply(null, arguments);\n};\n\nvar dynCall_v = Module[\"dynCall_v\"] = function() {\n return (dynCall_v = Module[\"dynCall_v\"] = Module[\"asm\"][\"Pa\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Qa\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = function() {\n return (dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = Module[\"asm\"][\"Ra\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Sa\"]).apply(null, arguments);\n};\n\nvar dynCall_i = Module[\"dynCall_i\"] = function() {\n return (dynCall_i = Module[\"dynCall_i\"] = Module[\"asm\"][\"Ta\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = Module[\"asm\"][\"Ua\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Va\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"Wa\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"Xa\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"Ya\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"Za\"]).apply(null, arguments);\n};\n\nvar ___start_em_js = Module[\"___start_em_js\"] = 356528;\n\nvar ___stop_em_js = Module[\"___stop_em_js\"] = 359213;\n\nfunction invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n return dynCall_iiiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iii(index, a1, a2) {\n var sp = stackSave();\n try {\n return dynCall_iii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) {\n var sp = stackSave();\n try {\n dynCall_viiiiii(index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiii(index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n dynCall_viiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n dynCall_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nModule[\"AsciiToString\"] = AsciiToString;\n\nModule[\"FS\"] = FS;\n\nvar calledRun;\n\ndependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n};\n\nfunction callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach(arg => {\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n}\n\nfunction run(args = arguments_) {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n}\n\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [ Module[\"preInit\"] ];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\n\nvar shouldRunNow = true;\n\nif (Module[\"noInitialRun\"]) shouldRunNow = false;\n\nrun();\n\n\n return Module.ready\n}\n\n);\n})();\nexport default Module;","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"90qbH\")).toString();","/*\n\nEmglken port of Scare\n=====================\n\nCopyright (c) 2023 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nimport EmglkenVM from './vm.js'\nimport ScareCore from '../build/scare-core.js'\n\nexport default class Scare extends EmglkenVM\n{\n default_options()\n {\n return {\n vmcore: ScareCore,\n }\n }\n}","\nvar Module = (() => {\n var _scriptDir = import.meta.url;\n \n return (\nfunction(Module = {}) {\n\nvar Module = typeof Module != \"undefined\" ? Module : {};\n\nvar readyPromiseResolve, readyPromiseReject;\n\nModule[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n});\n\nvar moduleOverrides = Object.assign({}, Module);\n\nvar arguments_ = [];\n\nvar thisProgram = \"./this.program\";\n\nvar quit_ = (status, toThrow) => {\n throw toThrow;\n};\n\nvar ENVIRONMENT_IS_WEB = true;\n\nvar ENVIRONMENT_IS_WORKER = false;\n\nvar scriptDirectory = \"\";\n\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n}\n\nvar read_, readAsync, readBinary, setWindowTitle;\n\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = title => document.title = title;\n} else {}\n\nvar out = Module[\"print\"] || console.log.bind(console);\n\nvar err = Module[\"printErr\"] || console.warn.bind(console);\n\nObject.assign(Module, moduleOverrides);\n\nmoduleOverrides = null;\n\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\n\nvar wasmBinary;\n\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\nvar noExitRuntime = Module[\"noExitRuntime\"] || false;\n\nif (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n}\n\nvar wasmMemory;\n\nvar ABORT = false;\n\nvar EXITSTATUS;\n\nfunction assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n}\n\nvar UTF8Decoder = new TextDecoder(\"utf8\");\n\nfunction UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n}\n\nfunction UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n}\n\nfunction stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n}\n\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\n\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n}\n\nvar HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n}\n\nvar wasmTable;\n\nvar __ATPRERUN__ = [];\n\nvar __ATINIT__ = [];\n\nvar __ATMAIN__ = [];\n\nvar __ATEXIT__ = [];\n\nvar __ATPOSTRUN__ = [];\n\nvar runtimeInitialized = false;\n\nvar runtimeExited = false;\n\nvar runtimeKeepaliveCounter = 0;\n\nfunction keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n}\n\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [ Module[\"preRun\"] ];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\n\nfunction initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n}\n\nfunction preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n}\n\nfunction exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n}\n\nfunction postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [ Module[\"postRun\"] ];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\n\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\n\nfunction addOnInit(cb) {\n __ATINIT__.unshift(cb);\n}\n\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\n\nvar runDependencies = 0;\n\nvar runDependencyWatcher = null;\n\nvar dependenciesFulfilled = null;\n\nfunction getUniqueRunDependency(id) {\n return id;\n}\n\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n}\n\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\n\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n}\n\nvar dataURIPrefix = \"data:application/octet-stream;base64,\";\n\nfunction isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n}\n\nvar wasmBinaryFile;\n\nif (Module[\"locateFile\"]) {\n wasmBinaryFile = \"scare-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n} else {\n wasmBinaryFile = new URL(\"scare-core.wasm\", import.meta.url).href;\n}\n\nfunction getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n}\n\nfunction getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n}\n\nfunction instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n}\n\nfunction instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n } else {\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n}\n\nfunction createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"E\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"N\"];\n addOnInit(Module[\"asm\"][\"F\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n}\n\nvar tempDouble;\n\nvar tempI64;\n\nfunction __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async () => {\n if (!Module.emglken_stdin_buffers.length) {\n await new Promise(resolve => {\n Module.emglken_stdin_ready = resolve;\n });\n }\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) {\n HEAPU8.set(input, buffer);\n } else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n}\n\nfunction ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n}\n\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n}\n\nvar PATH = {\n isAbs: path => path.charAt(0) === \"/\",\n splitPath: filename => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (;up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n },\n normalize: path => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter(p => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: path => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: path => {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r) => {\n return PATH.normalize(l + \"/\" + r);\n }\n};\n\nfunction getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return () => {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return () => abort(\"randomDevice\");\n}\n\nvar PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(p => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to) => {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (;start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (;end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n};\n\nfunction intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n}\n\nvar TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n};\n\nfunction mmapAlloc(size) {\n abort();\n}\n\nvar MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [ \".\", \"..\" ];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n } else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n};\n\nfunction asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, arrayBuffer => {\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, event => {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n });\n if (dep) addRunDependency(dep);\n}\n\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {}) => {\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = path.split(\"/\").filter(p => !!p);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: node => {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name) => {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name) => {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev) => {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: node => {\n FS.hashRemoveNode(node);\n },\n isRoot: node => {\n return node === node.parent;\n },\n isMountpoint: node => {\n return !!node.mounted;\n },\n isFile: mode => {\n return (mode & 61440) === 32768;\n },\n isDir: mode => {\n return (mode & 61440) === 16384;\n },\n isLink: mode => {\n return (mode & 61440) === 40960;\n },\n isChrdev: mode => {\n return (mode & 61440) === 8192;\n },\n isBlkdev: mode => {\n return (mode & 61440) === 24576;\n },\n isFIFO: mode => {\n return (mode & 61440) === 4096;\n },\n isSocket: mode => {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: str => {\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n },\n flagsToPermissionString: flag => {\n var perms = [ \"r\", \"w\", \"rw\" ][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n },\n nodePermissions: (node, perms) => {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes(\"r\") && !(node.mode & 292)) {\n return 2;\n } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n return 2;\n } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n },\n mayLookup: dir => {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name) => {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir) => {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n },\n mayOpen: (node, flags) => {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => {\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n },\n getStream: fd => FS.streams[fd],\n createStream: (stream, fd_start, fd_end) => {\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: fd => {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: stream => {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: () => {\n throw new FS.ErrnoError(70);\n }\n },\n major: dev => dev >> 8,\n minor: dev => dev & 255,\n makedev: (ma, mi) => ma << 8 | mi,\n registerDevice: (dev, ops) => {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: dev => FS.devices[dev],\n getMounts: mount => {\n var mounts = [];\n var check = [ mount ];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback) => {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(mount => {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint) => {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n },\n unmount: mountpoint => {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(hash => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name) => {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev) => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode) => {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode) => {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode) => {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev) => {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath) => {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path) => {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n },\n rmdir: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n },\n unlink: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: path => {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow) => {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n },\n lstat: path => {\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode) => {\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid) => {\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len) => {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime) => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode) => {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path == \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512 && !created) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n }\n }\n return stream;\n },\n close: stream => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: stream => {\n return stream.fd === null;\n },\n llseek: (stream, offset, whence) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags) => {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags) => {\n if (!stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: stream => 0,\n ioctl: (stream, cmd, arg) => {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {}) => {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {}) => {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n },\n cwd: () => FS.currentPath,\n chdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: () => {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: () => {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: () => 0,\n write: (stream, buffer, offset, length, pos) => length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: () => {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: () => {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: (parent, name) => {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: () => stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: () => {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: () => {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [ 44 ].forEach(code => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: () => {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error) => {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: () => {\n FS.init.initialized = false;\n _fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink) => {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink) => {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite) => {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn) => {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: stream => {\n stream.seekable = false;\n },\n close: stream => {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: (stream, buffer, offset, length, pos) => {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos) => {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: obj => {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n },\n createLazyFile: (parent, name, url, canRead, canWrite) => {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to) => {\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n }\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter(chunkNum => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(key => {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => {\n if (onerror) onerror();\n removeRunDependency(dep);\n })) {\n return;\n }\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n asyncLoad(url, byteArray => processData(byteArray), onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: () => {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: () => {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = () => {\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = () => {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var getRequest = files.get(path);\n getRequest.onsuccess = () => {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n};\n\nvar SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (flags & 2) {\n return 0;\n }\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n};\n\nfunction ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & ~7) {\n return -28;\n }\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) {\n return -44;\n }\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n}\n\nfunction ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n }\n\n case 1:\n case 2:\n return 0;\n\n case 3:\n return stream.flags;\n\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n\n case 5:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n\n case 6:\n case 7:\n return 0;\n\n case 16:\n case 8:\n return -28;\n\n case 9:\n setErrNo(28);\n return -1;\n\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n case 21505:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21519:\n {\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n\n case 21520:\n {\n if (!stream.tty) return -59;\n return -28;\n }\n\n case 21531:\n {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n\n case 21523:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21524:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nvar nowIsMonotonic = true;\n\nfunction __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n}\n\nfunction __emscripten_throw_longjmp() {\n throw Infinity;\n}\n\nfunction _abort() {\n abort(\"\");\n}\n\nfunction _emscripten_date_now() {\n return Date.now();\n}\n\nvar _emscripten_get_now;\n\n_emscripten_get_now = () => performance.now();\n\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n}\n\nfunction getHeapMax() {\n return 2147483648;\n}\n\nfunction emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n}\n\nfunction _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n}\n\nvar ENV = {};\n\nfunction getExecutableName() {\n return thisProgram || \"./this.program\";\n}\n\nfunction getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": lang,\n \"_\": getExecutableName()\n };\n for (var x in ENV) {\n if (ENV[x] === undefined) delete env[x]; else env[x] = ENV[x];\n }\n var strings = [];\n for (var x in env) {\n strings.push(x + \"=\" + env[x]);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n}\n\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n}\n\nfunction _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function(string, i) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n}\n\nfunction _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function(string) {\n bufSize += string.length + 1;\n });\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n}\n\nfunction _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n}\n\nfunction exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) {\n exitRuntime();\n }\n _proc_exit(status);\n}\n\nvar _exit = exitJS;\n\nfunction _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n}\n\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n}\n\nfunction allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n}\n\nfunction maybeExit() {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n}\n\nfunction callUserCallback(func) {\n if (runtimeExited || ABORT) {\n return;\n }\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n}\n\nfunction runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n}\n\nfunction runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n}\n\nvar Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [ \"invoke_*\", \"emscripten_sleep\", \"emscripten_wget\", \"emscripten_wget_data\", \"emscripten_idb_load\", \"emscripten_idb_store\", \"emscripten_idb_delete\", \"emscripten_idb_exists\", \"emscripten_idb_load_blob\", \"emscripten_idb_store_blob\", \"SDL_Delay\", \"emscripten_scan_registers\", \"emscripten_lazy_load_code\", \"emscripten_fiber_swap\", \"__load_secondary_module\", \"fd_sync\", \"__wasi_fd_sync\", \"_emval_await\", \"_dlopen_js\", \"__asyncjs__*\" ];\n for (var x in imports) {\n (function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") {\n var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n }\n })(x);\n }\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for (var x in exports) {\n (function(x) {\n var original = exports[x];\n if (typeof original == \"function\") {\n ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally {\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n } else {\n ret[x] = original;\n }\n })(x);\n }\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") {\n Fibers.trampoline();\n }\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject) => {\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0) => {\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) {\n return;\n }\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.resume();\n }\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) {\n throw asyncWasmReturnValue;\n }\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.pause();\n }\n runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach(func => callUserCallback(func));\n } else {\n abort(\"invalid state: \" + Asyncify.state);\n }\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep(wakeUp => {\n startAsync().then(wakeUp);\n });\n }\n};\n\nfunction AsciiToString(ptr) {\n var str = \"\";\n while (1) {\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n}\n\nvar FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n};\n\nvar readMode = 292 | 73;\n\nvar writeMode = 146;\n\nObject.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n});\n\nFS.FSNode = FSNode;\n\nFS.staticInit();\n\nvar wasmImports = {\n \"s\": __asyncjs__emglken_fill_stdin_buffer,\n \"D\": ___syscall_faccessat,\n \"n\": ___syscall_fcntl64,\n \"C\": ___syscall_getcwd,\n \"B\": ___syscall_ioctl,\n \"A\": ___syscall_openat,\n \"z\": ___syscall_stat64,\n \"v\": __emscripten_get_now_is_monotonic,\n \"u\": __emscripten_throw_longjmp,\n \"t\": _abort,\n \"k\": _emscripten_date_now,\n \"r\": _emscripten_memcpy_big,\n \"q\": _emscripten_resize_heap,\n \"y\": _environ_get,\n \"x\": _environ_sizes_get,\n \"i\": _exit,\n \"m\": _fd_close,\n \"w\": _fd_read,\n \"p\": _fd_seek,\n \"l\": _fd_write,\n \"c\": invoke_i,\n \"g\": invoke_ii,\n \"f\": invoke_iiii,\n \"d\": invoke_iiiii,\n \"o\": invoke_ji,\n \"j\": invoke_v,\n \"b\": invoke_vi,\n \"a\": invoke_vii,\n \"h\": invoke_viii,\n \"e\": invoke_viiii\n};\n\nvar asm = createWasm();\n\nvar ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"F\"]).apply(null, arguments);\n};\n\nvar _free = function() {\n return (_free = Module[\"asm\"][\"G\"]).apply(null, arguments);\n};\n\nvar _malloc = function() {\n return (_malloc = Module[\"asm\"][\"H\"]).apply(null, arguments);\n};\n\nvar _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"I\"]).apply(null, arguments);\n};\n\nvar _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"J\"]).apply(null, arguments);\n};\n\nvar _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"K\"]).apply(null, arguments);\n};\n\nvar ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"L\"]).apply(null, arguments);\n};\n\nvar ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"M\"]).apply(null, arguments);\n};\n\nvar _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"O\"]).apply(null, arguments);\n};\n\nvar _saveSetjmp = function() {\n return (_saveSetjmp = Module[\"asm\"][\"saveSetjmp\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n};\n\nvar stackSave = function() {\n return (stackSave = Module[\"asm\"][\"P\"]).apply(null, arguments);\n};\n\nvar stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"Q\"]).apply(null, arguments);\n};\n\nvar stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"R\"]).apply(null, arguments);\n};\n\nvar dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"S\"]).apply(null, arguments);\n};\n\nvar dynCall_iiii = Module[\"dynCall_iiii\"] = function() {\n return (dynCall_iiii = Module[\"dynCall_iiii\"] = Module[\"asm\"][\"T\"]).apply(null, arguments);\n};\n\nvar dynCall_ii = Module[\"dynCall_ii\"] = function() {\n return (dynCall_ii = Module[\"dynCall_ii\"] = Module[\"asm\"][\"U\"]).apply(null, arguments);\n};\n\nvar dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"V\"]).apply(null, arguments);\n};\n\nvar dynCall_i = Module[\"dynCall_i\"] = function() {\n return (dynCall_i = Module[\"dynCall_i\"] = Module[\"asm\"][\"W\"]).apply(null, arguments);\n};\n\nvar dynCall_v = Module[\"dynCall_v\"] = function() {\n return (dynCall_v = Module[\"dynCall_v\"] = Module[\"asm\"][\"X\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() {\n return (dynCall_iiiii = Module[\"dynCall_iiiii\"] = Module[\"asm\"][\"Y\"]).apply(null, arguments);\n};\n\nvar dynCall_viii = Module[\"dynCall_viii\"] = function() {\n return (dynCall_viii = Module[\"dynCall_viii\"] = Module[\"asm\"][\"Z\"]).apply(null, arguments);\n};\n\nvar dynCall_viiii = Module[\"dynCall_viiii\"] = function() {\n return (dynCall_viiii = Module[\"dynCall_viiii\"] = Module[\"asm\"][\"_\"]).apply(null, arguments);\n};\n\nvar dynCall_ji = Module[\"dynCall_ji\"] = function() {\n return (dynCall_ji = Module[\"dynCall_ji\"] = Module[\"asm\"][\"$\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"aa\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"ba\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"ca\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"da\"]).apply(null, arguments);\n};\n\nvar ___start_em_js = Module[\"___start_em_js\"] = 107504;\n\nvar ___stop_em_js = Module[\"___stop_em_js\"] = 110189;\n\nfunction invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_ji(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ji(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nModule[\"AsciiToString\"] = AsciiToString;\n\nModule[\"FS\"] = FS;\n\nvar calledRun;\n\ndependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n};\n\nfunction callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach(arg => {\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n}\n\nfunction run(args = arguments_) {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n}\n\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [ Module[\"preInit\"] ];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\n\nvar shouldRunNow = true;\n\nif (Module[\"noInitialRun\"]) shouldRunNow = false;\n\nrun();\n\n\n return Module.ready\n}\n\n);\n})();\nexport default Module;","module.exports = new __parcel__URL__(require('./helpers/bundle-manifest').resolve(\"32xWV\")).toString();","import { useState, useEffect } from 'preact/hooks'\n\nimport CheapGlkOte from 'cheap-glkote'\n\nimport TextBuffer from './OutputBox/TextBuffer/TextBuffer'\nimport GridBuffer from './OutputBox/GridBuffer/GridBuffer'\n\nimport InputBox from './InputBox/InputBox'\nimport Status from './Status/Status'\n\nimport {\n Handlers,\n unhandledRejectionHandler,\n} from './common/playerHandlers'\n\nimport * as s from './Player.module.scss'\n\nconst INITIAL_STATUS = {\n stage: 'loading',\n details: ['Preparing'],\n}\n\nconst runMachine = ({ engine: Engine, wasmBinary, storyfile, handlers }) => {\n const { Dialog, GlkOte, send } = CheapGlkOte(handlers)\n const instance = new Engine()\n\n instance.init(storyfile, {\n Dialog,\n GlkOte,\n Glk: {},\n wasmBinary,\n arguments: ['storyfile'],\n })\n instance.start()\n\n return { send, instance }\n}\n\nexport default function Player ({\n vmParts: { storyfile, engine, wasmBinary },\n onFullscreenRequest,\n setMenuOpen,\n singleWindow,\n}) {\n const [status, setStatus] = useState(INITIAL_STATUS)\n\n const [windows, setWindows] = useState([])\n const [currentWindowId, setCurrentWindowId] = useState(null)\n const [inputType, setInputType] = useState(null)\n const [inbox, setInbox] = useState([])\n\n const [vm, setVm] = useState(null)\n const [sendMessage, setSendMessage] = useState(null)\n\n useEffect(() => {\n const handlers = Handlers({\n setStatus,\n setWindows,\n setCurrentWindowId,\n setInputType,\n setInbox,\n })\n\n setVm(runMachine({\n engine,\n wasmBinary,\n storyfile,\n handlers,\n }))\n\n const rejectionHandler =\n unhandledRejectionHandler(handlers.onExit)\n\n window.addEventListener('unhandledrejection', rejectionHandler)\n\n return () => {\n setVm(null)\n window.removeEventListener('unhandledrejection', rejectionHandler)\n }\n }, [storyfile, engine, wasmBinary])\n\n useEffect(() => {\n setSendMessage(() => vm\n ? vm.send\n : null)\n\n return () => setSendMessage(null)\n }, [vm])\n\n const textWindow = (inbox) => (currentWindow) => {\n const props = {\n inbox,\n currentWindow,\n }\n\n return ({\n buffer: ,\n grid: ,\n })[currentWindow.type]\n }\n\n const byTop = (a, b) =>\n a.top - b.top\n\n return status.stage !== 'ready'\n ? ()\n : (
\n
\n {\n windows\n .sort(byTop)\n .filter(singleWindow\n ? ({ id }) => id === currentWindowId\n : () => true)\n .map(textWindow(inbox))\n }\n
\n \n
)\n}\n","import FakeDialog from './fakeDialog.js'\nimport CheapGlkOte from './cheapGlkOte.js'\n\nconst noop = () => void null\n\nconst defaultHandlers = [\n 'onInit',\n 'onUpdateWindows',\n 'onUpdateInputs',\n 'onUpdateContent',\n 'onDisable',\n 'onFileNameRequest',\n 'onFileRead',\n 'onFileWrite',\n 'onExit',\n].reduce((acc, x) => ((acc[x] = noop), acc), {})\n\nconst defaultLoggers = {\n log: console.log,\n warning: console.warn,\n error: console.error,\n}\n\nconst defaultSize = {\n width: 80,\n height: 25,\n}\n\nexport default (handlers_, {loggers: loggers_, size: size_ } = {}) => {\n const handlers =\n Object.assign({}, defaultHandlers, handlers_)\n const loggers =\n Object.assign({}, defaultLoggers, loggers_)\n const size =\n Object.assign({}, defaultSize, size_)\n\n const Dialog = new FakeDialog(handlers, loggers)\n const GlkOte = new CheapGlkOte(handlers, loggers, size)\n\n const send = GlkOte.sendFn.bind(GlkOte)\n\n return {\n Dialog,\n GlkOte,\n send,\n }\n}\n","/**\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/glkote-dumb.js\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/electrofs.js\n */\n\nclass FakeDialog {\n constructor(handlers, loggers) {\n this.streaming = false\n this.handlers = handlers\n this.loggers = loggers\n }\n\n file_ref_exists({ usage }) {\n return usage === 'save'\n ? true\n : false\n }\n\n file_remove_ref () {\n return true\n }\n\n file_construct_ref(filename, usage) {\n return {\n filename,\n usage: usage || ''\n }\n }\n\n file_read(dirent, israw) {\n return this.handlers.onFileRead(dirent, israw)\n }\n\n file_write(dirent, content, israw) {\n if (content.length === 0) return (void null)\n this.handlers.onFileWrite(dirent, content, israw)\n }\n\n open(tosave, usage, gameid, callback) {\n this.handlers.onFileNameRequest(tosave, usage, gameid, callback)\n }\n\n log(message) {\n this.loggers.log(message)\n }\n\n warning(message) {\n this.loggers.warn(message)\n }\n\n error(message) {\n this.loggers.error(message)\n }\n}\n\nexport default FakeDialog\n","/**\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/glkote-dumb.js\n */\n\nimport GlkOte from './glkOte/glkote-term.js'\n\nclass CheapGlkOte extends GlkOte {\n constructor(handlers, loggers, size) {\n super(size)\n\n this.handlers = handlers\n this.loggers = loggers\n }\n\n sendFn (message, type, window) {\n this.send_response(\n type,\n window,\n message)\n }\n\n init (iface) {\n this.handlers.onInit()\n super.init(iface)\n }\n\n update_inputs (data) {\n if (!data.length) return []\n this.handlers.onUpdateInputs(data)\n }\n\n accept_specialinput (data) {\n if (data.type === 'fileref_prompt') {\n const callback = ref =>\n this.send_response(\n 'specialresponse', null, 'fileref_prompt', ref)\n\n this.interface.Dialog.open(\n data.filemode !== 'read',\n data.filetype,\n data.gameid,\n callback)\n } else {\n this.error(\n 'Request for unknown special input type: ' + data.type)\n }\n }\n\n update_content (messages) {\n this.handlers.onUpdateContent(messages)\n }\n\n exit () {\n this.handlers.onExit()\n super.exit()\n }\n\n cancel_inputs (data) {\n this.handlers.onUpdateInputs(data)\n }\n\n disable (data) {\n this.handlers.onDisable(data)\n }\n\n update_windows (windows) {\n this.handlers.onUpdateWindows(windows)\n }\n\n log (message) {\n this.loggers.log(message)\n }\n\n warning (message) {\n this.loggers.warn(message)\n }\n\n error (message) {\n this.loggers.error(message)\n }\n}\n\nexport default CheapGlkOte\n","/**\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/glkote-term.js\n */\n\nclass GlkOte {\n constructor({width, height}) {\n this.width = width\n this.height = height\n\n this.current_metrics = null\n this.disabled = false\n this.generation = 0\n this.interface = null\n this.version = '0.5.1'\n }\n\n measure_window() {\n return {\n width: this.width,\n height: this.height,\n buffercharheight: 1,\n buffercharwidth: 1,\n buffermarginx: 0,\n buffermarginy: 0,\n graphicsmarginx: 0,\n graphicsmarginy: 0,\n gridcharheight: 1,\n gridcharwidth: 1,\n gridmarginx: 0,\n gridmarginy: 0,\n inspacingx: 0,\n inspacingy: 0,\n outspacingx: 0,\n outspacingy: 0\n }\n }\n\n getinterface() {\n return this.interface\n }\n\n init(iface) {\n if (!iface) {\n this.error('No game interface object has been provided.')\n }\n if (!iface.accept) {\n this.error('The game interface object must have an accept() function.')\n }\n\n this.interface = iface\n this.current_metrics = this.measure_window()\n\n this.send_response('init', null, this.current_metrics)\n }\n\n update(data) {\n if (data.type === 'error') {\n this.error(data.message)\n }\n if (data.type === 'pass') {\n return\n }\n if (data.type !== 'update' && data.type !== 'exit') {\n this.log(`Ignoring unknown message type: ${data.type}`)\n return\n }\n if (data.gen === this.generation) {\n this.log(`Ignoring repeated generation number: ${data.gen}`)\n return\n }\n if (data.gen < this.generation) {\n this.log(\n `Ignoring out-of-order generation number: got ${data.gen}, currently at ${this.generation}`\n )\n return\n }\n this.generation = data.gen\n\n if (this.disabled) {\n this.disable(false)\n }\n\n /* Handle the update */\n if (data.input != null) {\n this.cancel_inputs(data.input)\n }\n if (data.windows != null) {\n this.update_windows(data.windows)\n }\n if (data.content != null && data.content.length) {\n this.update_content(data.content)\n }\n if (data.input != null) {\n this.update_inputs(data.input)\n }\n\n /* Disable everything if requested */\n this.disabled = false\n if (data.disabled || data.specialinput) {\n this.disable(true)\n }\n\n if (data.specialinput != null) {\n this.accept_specialinput(data.specialinput)\n }\n\n /* Detach all handlers and exit */\n if (data.type === 'exit') {\n this.exit()\n }\n }\n\n send_response(type, win, val, val2) {\n const res = {\n type: type,\n gen: this.generation,\n }\n\n if (win) {\n res.window = win.id\n }\n\n if (type === 'init' || type === 'arrange') {\n res.metrics = val\n }\n\n if (type === 'init') {\n res.support = this.support()\n }\n\n if (type === 'char') {\n res.value = val\n }\n\n if (type === 'line') {\n res.value = val\n }\n\n if (type === 'specialresponse') {\n res.response = val\n res.value = val2\n }\n\n this.interface.accept(res)\n }\n\n support() {\n return []\n }\n}\n\nexport default GlkOte\n","import { useEffect, useRef, useState } from 'preact/hooks'\n\nimport TextMessage from '../TextMessage/TextMessage'\n\nimport * as s from '../../Player.module.scss'\n\nconst eol = { style: 'endOfLine' }\nconst scrollTarget = { style: 'scrollTarget' }\n\nconst isFakeStatus = (w) =>\n w.height < 5\n\nconst trimInputPrompt = (messages) =>\n messages.length < 1\n ? messages\n : messages.slice(-1)[0].text === '>'\n ? messages.slice(0, messages.length - 1)\n : messages\n\nconst parseInbox = (inbox, currentWindow) => {\n const currentInbox =\n inbox.find(({ id }) =>\n id === currentWindow.id)\n\n if (!currentInbox) {\n return {\n clear: false,\n incoming: [scrollTarget],\n }\n }\n\n const { text: inboxMessagesRaw } =\n currentInbox\n\n const incoming =\n inboxMessagesRaw\n /* Normalize. */\n .map(({ content }) =>\n content\n ? [...trimInputPrompt(content), eol]\n : [eol])\n /* Flatten. */\n .reduce((acc, x) =>\n acc.concat(x), [scrollTarget])\n\n return {\n incoming,\n clear: isFakeStatus(currentWindow)\n ? true\n : currentInbox.clear,\n }\n}\n\nexport default function TextBuffer ({ inbox, currentWindow }) {\n const [messages, setMessages] = useState([])\n const textBufferEl = useRef(null)\n\n useEffect(() => {\n const { incoming, clear } =\n parseInbox(inbox, currentWindow)\n\n setMessages((messages) => clear\n ? incoming\n : messages.concat(incoming))\n\n setTimeout(() => {\n const scrollTargets =\n textBufferEl.current.querySelectorAll(`.${scrollTarget.style}`)\n const freshScrollTarget =\n scrollTargets[scrollTargets.length - 1]\n\n freshScrollTarget\n ? freshScrollTarget.scrollIntoView()\n : textBufferEl.current.scrollTo({\n top: textBufferEl.current.scrollHeight,\n behavior: 'smooth',\n })\n }, 0)\n }, [currentWindow, inbox])\n\n const classes = () => [\n s.buffer,\n isFakeStatus(currentWindow)\n ? s.gridBuffer\n : s.textBuffer,\n ].join(' ')\n\n return (\n \n {messages.map(TextMessage)}\n \n )\n}\n","import * as s from './TextMessage.module.scss'\n\nexport default function TextMessage ({ style, text }) {\n const defaultContent = (\n \n {text}\n )\n\n return ({\n grid:\n (text?.length > 0 ?
{text}
:
),\n input:\n (> {text}),\n subheader:\n ({text}),\n emphasized:\n ({text}),\n scrollTarget:\n (
),\n endOfLine:\n (
),\n })[style] || defaultContent\n}\n",".message {\n &.input {\n color: var(--input-color);\n }\n\n &.emphasized,\n &.subheader {\n color: var(--accent-color);\n }\n}\n\n.scrollTarget {\n scroll-margin-block-start: var(--inner-padding);\n}\n",".elseifplayer {\n height: 100%;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n\n background-color: var(--bg-color);\n color: var(--main-color);\n padding: var(--outer-padding);\n\n .output {\n display: flex;\n flex-grow: 2;\n flex-direction: column;\n overflow-y: hidden;\n overflow-wrap: break-word;\n\n border: var(--border-width) solid var(--main-color);\n\n .buffer {\n overflow-y: scroll;\n box-sizing: border-box;\n\n padding: var(--inner-padding);\n\n &:empty {\n display: none;\n }\n\n & > br:first-child,\n & > br:last-child,\n & > br + br + br {\n display: none;\n }\n\n &.gridBuffer {\n flex-shrink: 0;\n max-height: 100%;\n border-bottom: var(--separator-width) solid var(--main-color);\n }\n\n &.textBuffer {\n flex: 2 1;\n outline: none;\n scroll-behavior: smooth;\n }\n }\n }\n}\n","import { useEffect, useState } from 'preact/hooks'\n\nimport TextMessage from '../TextMessage/TextMessage'\n\nimport * as s from '../../Player.module.scss'\n\nexport default function GridBuffer ({ inbox, currentWindow }) {\n const [prevMessages, setPrevMessages] = useState([])\n const [messages, setMessages] = useState([])\n\n useEffect(() => {\n const currentInboxObj =\n inbox.find(({ id }) =>\n id === currentWindow.id)\n\n const currentInbox = currentInboxObj?.lines ?? []\n\n const newOrPrev = (cur, prev) => (i) => {\n const byId = (list, i) =>\n list.find(({ line }) => line === i)\n\n return byId(cur, i) || byId(prev, i)\n }\n\n const rawMessages =\n Array(currentWindow.gridheight)\n .fill(null)\n .map((_, i) => i)\n .map(newOrPrev(currentInbox, prevMessages))\n\n /* */\n\n const shouldUpdatePrev = (rawMessages, prevMessages) => {\n const serialize = JSON.stringify\n return serialize(rawMessages) !== serialize(prevMessages)\n }\n\n if (shouldUpdatePrev(rawMessages, prevMessages)) {\n setPrevMessages(rawMessages)\n }\n\n /* */\n\n\n const rawMessagesContent =\n rawMessages\n .map((x) => x.content)\n .flat()\n .map((message) => ({\n ...message,\n text: message.text.trim(),\n }))\n\n const isEmpty =\n rawMessagesContent\n .map(({ text }) => text.length)\n .every((l) => l === 0)\n\n const getGridStyle = ({ style }) => {\n if (['alert', 'normal'].includes(style)) return 'grid'\n return style || 'grid'\n }\n\n const messages =\n rawMessagesContent\n .map((message) => ({\n style: getGridStyle(message),\n text: message.text.replace(' ', ' / '),\n }))\n\n setMessages(isEmpty ? [] : messages)\n }, [inbox, currentWindow, prevMessages])\n\n return (\n
\n {messages.map(TextMessage)}\n
\n )\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\n\nimport MenuButton from './MenuButton/MenuButton'\n\nimport * as s from './InputBox.module.scss'\n\n/* eslint-disable */\nconst keyCodes = {\n KEY_BACKSPACE: 8,\n KEY_TAB: 9,\n KEY_RETURN: 13,\n KEY_ESC: 27,\n KEY_PAGEUP: 33,\n KEY_PAGEDOWN: 34,\n KEY_END: 35,\n KEY_HOME: 36,\n KEY_LEFT: 37,\n KEY_UP: 38,\n KEY_RIGHT: 39,\n KEY_DOWN: 40\n}\n\nconst keyNames = {\n [keyCodes.KEY_BACKSPACE]: 'delete',\n [keyCodes.KEY_TAB]: 'tab',\n [keyCodes.KEY_RETURN]: 'return',\n [keyCodes.KEY_ESC]: 'escape',\n [keyCodes.KEY_PAGEUP]: 'pageup',\n [keyCodes.KEY_PAGEDOWN]: 'pagedown',\n [keyCodes.KEY_END]: 'end',\n [keyCodes.KEY_HOME]: 'home',\n [keyCodes.KEY_LEFT]: 'left',\n [keyCodes.KEY_UP]: 'up',\n [keyCodes.KEY_RIGHT]: 'right',\n [keyCodes.KEY_DOWN]: 'down'\n}\n/* eslint-enable */\n\nconst hasModifier = (event) => {\n const modifiers = [\n event.altKey,\n event.ctrlKey,\n event.metaKey,\n event.shiftKey,\n ]\n\n return modifiers.some((modifier) => modifier === true)\n}\n\nexport default function InputBox ({\n inputType,\n windows,\n currentWindowId,\n sendMessage,\n onFullscreenRequest,\n setMenuOpen,\n}) {\n const [targetWindow, setTargetWindow] = useState(null)\n const [inputText, setInputText] = useState('')\n const [lastInput, setLastInput] = useState('')\n const inputEl = useRef(null)\n\n useEffect(() => {\n let setFocus = () => {\n inputEl.current && inputEl.current.focus()\n }\n\n setInputText('')\n setFocus()\n\n document.addEventListener('fullscreenchange', setFocus)\n return () => document.removeEventListener('fullscreenchange', setFocus)\n }, [inputType])\n\n useEffect(() => {\n setTargetWindow(\n windows\n .find(({ id }) =>\n id === currentWindowId))\n }, [currentWindowId, windows])\n\n const send = (message) => {\n sendMessage(\n message,\n inputType,\n targetWindow)\n setLastInput(message)\n setInputText('')\n }\n\n const charHandler = (event) =>\n (event.keyCode === 229\n ? charHandlerMobile\n : charHandlerDefault)(event)\n\n const charHandlerDefault = (event) => {\n if (hasModifier(event)) { return undefined }\n\n event.preventDefault()\n\n const key =\n keyNames[event.keyCode] ||\n event.key\n\n send(key)\n }\n\n const charHandlerMobile = (event) =>\n setTimeout(() => {\n send(event.target.value.slice(-1).toUpperCase())\n setInputText('')\n })\n\n const lineHandler = ({ keyCode, target: { value } }) => {\n if (keyCode === keyCodes.KEY_RETURN) {\n send(value)\n }\n }\n\n const lineArrowHandler = ({ keyCode }) => {\n if (keyCode === keyCodes.KEY_UP) {\n setInputText(lastInput)\n\n setTimeout(() => {\n const end = lastInput.length\n inputEl.current.setSelectionRange(end, end)\n }, 0)\n }\n if (keyCode === keyCodes.KEY_DOWN) {\n setInputText('')\n }\n }\n\n const inputHandlers = {\n char: {\n maxlength: '1',\n placeholder: 'Press any key here',\n onKeyDown: charHandler,\n },\n line: {\n placeholder: ' > ',\n onKeyDown: lineArrowHandler,\n onKeyPress: lineHandler,\n },\n finished: {\n placeholder: 'The program has finished',\n disabled: true,\n },\n }\n\n return (\n
\n setInputText(value)}\n type='search' />\n setMenuOpen(true)} />\n
\n )\n}\n","import * as s from './MenuButton.module.scss'\n\nexport default function MenuButton ({ onClick }) {\n return (\n \n \n \n \n \n \n \n )\n}\n",".menuButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: none;\n outline-offset: -8px;\n position: absolute;\n right: 0;\n height: 100%;\n padding: 0;\n\n @media (max-width: 800px) {\n padding: 0 calc(0.5 * var(--inner-padding));\n overflow: hidden;\n }\n\n &:focus-visible {\n outline-offset: -4px;\n }\n\n .menuIcon {\n height: 32px;\n fill: none;\n stroke: currentColor;\n stroke-width: 2px;\n\n @media (max-width: 800px) {\n transform: scaleX(2) scaleY(0.5);\n fill: currentColor;\n }\n }\n}\n",".inputControls {\n position: relative;\n margin-top: var(--input-box-margin);\n\n .inputBox {\n font: inherit;\n color: inherit;\n outline: 0;\n\n background-color: var(--bg-color);\n border: var(--border-width) solid var(--main-color);\n border-top: var(--separator-width) solid var(--main-color);\n padding: var(--inner-padding);\n padding-right: calc(4 * var(--inner-padding));\n margin: 0;\n width: 100%;\n\n &::placeholder {\n color: var(--main-color);\n opacity: 1;\n }\n\n &:focus::placeholder {\n opacity: 0.5;\n }\n\n &::-webkit-search-cancel-button {\n display: none;\n }\n }\n}\n","import { Link } from 'wouter-preact'\n\nimport * as s from './Status.module.scss'\n\nconst fail = (details) => (\n
\n

\n Error\n

\n {details.map((x) => (

{x}

))}\n
\n \n Home\n \n |\n \n Report bug\n \n
\n)\n\nconst loading = (details) => (\n
\n {details.map((x) => (
{x}
))}\n
\n)\n\nexport default ({ stage, details }) =>\n ({ fail, loading })[stage](details)\n","@keyframes dots0123 {\n 0% { content: ''; }\n 33% { content: '.'; }\n 66% { content: '..'; }\n 100% { content: '...'; }\n}\n\n.status {\n word-break: break-word;\n padding-block: var(--inner-padding);\n\n @media (max-width: 800px) {\n padding: var(--inner-padding);\n }\n\n &.loading > div:after {\n animation: dots0123 1s infinite;\n content: '';\n }\n}\n\n","import { encode, decode } from 'base32768'\n\nexport const Handlers = ({\n setStatus,\n setWindows,\n setCurrentWindowId,\n setInputType,\n setInbox,\n}) => ({\n onInit: () => {\n setStatus({ stage: 'ready' })\n },\n /* */\n onUpdateWindows: (windows) => {\n setWindows(windows)\n },\n onUpdateInputs: (data) => {\n if (data.length === 0) return null\n\n const { type, id } = data[0]\n setCurrentWindowId(id)\n setInputType(type)\n },\n onUpdateContent: (inbox) => {\n setInbox(inbox)\n },\n onDisable: () => {\n setInputType(null)\n },\n /* */\n onFileNameRequest: (_tosave, usage, _gameId, setFileName) => {\n setFileName({\n usage,\n filename: prompt('Enter the filename'),\n })\n },\n onFileRead: ({ filename }) => {\n const content = localStorage.getItem(`fake-fs/${filename}`)\n return decode(content)\n },\n onFileWrite: ({ filename }, content) => {\n localStorage.setItem(`fake-fs/${filename}`, encode(content))\n },\n /* */\n onExit: () => {\n setInputType('finished')\n },\n})\n\nexport const unhandledRejectionHandler = (onExit) => (event) => {\n if (event.reason.name === 'ExitStatus' || event.reason.message === 'Program terminated with exit(0)') {\n onExit()\n } else {\n console.error('Unhandled rejection (promise: ', event.promise, ', reason: ', event.reason, ').')\n }\n event.preventDefault()\n}\n","/**\r\n Base32768 is a binary-to-text encoding optimised for UTF-16-encoded text.\r\n (e.g. Windows, Java, JavaScript)\r\n*/\r\n\r\n// Z is a number, usually a uint15 but sometimes a uint7\r\n\r\nconst BITS_PER_CHAR = 15 // Base32768 is a 15-bit encoding\r\nconst BITS_PER_BYTE = 8\r\n\r\nconst pairStrings = [\r\n 'ҠҿԀԟڀڿݠޟ߀ߟကဟႠႿᄀᅟᆀᆟᇠሿበቿዠዿጠጿᎠᏟᐠᙟᚠᛟកសᠠᡟᣀᣟᦀᦟ᧠᧿ᨠᨿᯀᯟᰀᰟᴀᴟ⇠⇿⋀⋟⍀⏟␀␟─❟➀➿⠀⥿⦠⦿⨠⩟⪀⪿⫠⭟ⰀⰟⲀⳟⴀⴟⵀⵟ⺠⻟㇀㇟㐀䶟䷀龿ꀀꑿ꒠꒿ꔀꗿꙀꙟꚠꛟ꜀ꝟꞀꞟꡀꡟ',\r\n 'ƀƟɀʟ'\r\n]\r\n\r\nconst lookupE = {}\r\nconst lookupD = {}\r\npairStrings.forEach((pairString, r) => {\r\n // Decompression\r\n const encodeRepertoire = []\r\n pairString.match(/../gu).forEach(pair => {\r\n const first = pair.codePointAt(0)\r\n const last = pair.codePointAt(1)\r\n for (let codePoint = first; codePoint <= last; codePoint++) {\r\n encodeRepertoire.push(String.fromCodePoint(codePoint))\r\n }\r\n })\r\n\r\n const numZBits = BITS_PER_CHAR - BITS_PER_BYTE * r // 0 -> 15, 1 -> 7\r\n lookupE[numZBits] = encodeRepertoire\r\n encodeRepertoire.forEach((chr, z) => {\r\n lookupD[chr] = [numZBits, z]\r\n })\r\n})\r\n\r\nconst encode = uint8Array => {\r\n const length = uint8Array.length\r\n\r\n let str = ''\r\n let z = 0\r\n let numZBits = 0\r\n\r\n for (let i = 0; i < length; i++) {\r\n const uint8 = uint8Array[i]\r\n\r\n // Take most significant bit first\r\n for (let j = BITS_PER_BYTE - 1; j >= 0; j--) {\r\n const bit = (uint8 >> j) & 1\r\n\r\n z = (z << 1) + bit\r\n numZBits++\r\n\r\n if (numZBits === BITS_PER_CHAR) {\r\n str += lookupE[numZBits][z]\r\n z = 0\r\n numZBits = 0\r\n }\r\n }\r\n }\r\n\r\n if (numZBits !== 0) {\r\n // Final bits require special treatment.\r\n\r\n // z = bbbbbbcccccccc, numZBits = 14, padBits = 1\r\n // z = bbbbbcccccccc, numZBits = 13, padBits = 2\r\n // z = bbbbcccccccc, numZBits = 12, padBits = 3\r\n // z = bbbcccccccc, numZBits = 11, padBits = 4\r\n // z = bbcccccccc, numZBits = 10, padBits = 5\r\n // z = bcccccccc, numZBits = 9, padBits = 6\r\n // z = cccccccc, numZBits = 8, padBits = 7\r\n // => Pad `z` out to 15 bits using 1s, then encode as normal (r = 0)\r\n\r\n // z = ccccccc, numZBits = 7, padBits = 0\r\n // z = cccccc, numZBits = 6, padBits = 1\r\n // z = ccccc, numZBits = 5, padBits = 2\r\n // z = cccc, numZBits = 4, padBits = 3\r\n // z = ccc, numZBits = 3, padBits = 4\r\n // z = cc, numZBits = 2, padBits = 5\r\n // z = c, numZBits = 1, padBits = 6\r\n // => Pad `z` out to 7 bits using 1s, then encode specially (r = 1)\r\n\r\n while (!(numZBits in lookupE)) {\r\n z = (z << 1) + 1\r\n numZBits++\r\n }\r\n\r\n str += lookupE[numZBits][z]\r\n }\r\n\r\n return str\r\n}\r\n\r\nconst decode = str => {\r\n const length = str.length\r\n\r\n // This length is a guess. There's a chance we allocate one more byte here\r\n // than we actually need. But we can count and slice it off later\r\n const uint8Array = new Uint8Array(Math.floor(length * BITS_PER_CHAR / BITS_PER_BYTE))\r\n let numUint8s = 0\r\n let uint8 = 0\r\n let numUint8Bits = 0\r\n\r\n for (let i = 0; i < length; i++) {\r\n const chr = str.charAt(i)\r\n\r\n if (!(chr in lookupD)) {\r\n throw new Error(`Unrecognised Base32768 character: ${chr}`)\r\n }\r\n\r\n const [numZBits, z] = lookupD[chr]\r\n\r\n if (numZBits !== BITS_PER_CHAR && i !== length - 1) {\r\n throw new Error('Secondary character found before end of input at position ' + String(i))\r\n }\r\n\r\n // Take most significant bit first\r\n for (let j = numZBits - 1; j >= 0; j--) {\r\n const bit = (z >> j) & 1\r\n\r\n uint8 = (uint8 << 1) + bit\r\n numUint8Bits++\r\n\r\n if (numUint8Bits === BITS_PER_BYTE) {\r\n uint8Array[numUint8s] = uint8\r\n numUint8s++\r\n uint8 = 0\r\n numUint8Bits = 0\r\n }\r\n }\r\n }\r\n\r\n // Final padding bits! Requires special consideration!\r\n // Remember how we always pad with 1s?\r\n // Note: there could be 0 such bits, check still works though\r\n if (uint8 !== ((1 << numUint8Bits) - 1)) {\r\n throw new Error('Padding mismatch')\r\n }\r\n\r\n return new Uint8Array(uint8Array.buffer, 0, numUint8s)\r\n}\r\n\r\nexport { encode, decode }\r\n","import { useEffect, useRef } from 'preact/hooks'\nimport { Link } from 'wouter-preact'\n\nimport ThemeSelector from\n '~/src/components/ThemeSelector/ThemeSelector'\n\nimport * as s from './MenuOverlay.module.scss'\n\nexport default function MenuOverlay ({\n themeEngine, onFullscreenRequest, menuOpen, setMenuOpen,\n}) {\n const dialog = useRef(null)\n\n useEffect(() => {\n const dialogOpen = dialog.current.open\n\n if (menuOpen && !dialogOpen) {\n dialog.current.showModal()\n }\n\n if (!menuOpen && dialogOpen) {\n dialog.current.close()\n }\n }, [menuOpen])\n\n useEffect(() => {\n const currentDialog = dialog.current\n const closeHandler = () => {\n setMenuOpen(false)\n }\n\n currentDialog.addEventListener('close', closeHandler)\n return () => currentDialog.removeEventListener('close', closeHandler)\n }, [dialog, setMenuOpen])\n\n\n return (\n \n
\n
\n dialog.current.close()}\n >\n Close this menu\n \n
\n\n
\n {\n dialog.current.close()\n onFullscreenRequest()\n }}\n >\n Full screen\n \n themeEngine.setRandomTheme()}\n >\n Set a random theme\n \n \n
\n\n
\n \n ElseIfPlayer\n \n
\n
\n
\n )\n}\n",".menu {\n width: 100%;\n\n border-left: none;\n border-right: none;\n text-align: center;\n padding-top: 0;\n padding-bottom: 0;\n\n background-color: var(--bg-color);\n border-color: var(--main-color);\n color: var(--main-color);\n\n &::backdrop {\n background: none;\n backdrop-filter: blur(2px);\n }\n\n & > section {\n margin: 32px auto 40px;\n gap: 32px;\n max-width: 270px;\n display: flex;\n flex-direction: column;\n }\n\n .navigation {\n color: var(--accent-color);\n }\n\n .appearance {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n select,\n button {\n width: 100%;\n }\n}\n","import Status from '~/src/components/Player/Status/Status'\n\nexport default function NotFoundView () {\n return
\n \n
\n}\n",".app {\n min-height: 100%;\n box-sizing: border-box;\n\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n color: var(--main-color);\n background-color: var(--bg-color);\n\n /* */\n &.home, &.games, &.themes {\n padding: var(--inner-padding);\n\n /* Fix for Jumping Scrollbar Issue */\n @media (min-width: 800px) {\n padding-left: calc(100vw - 100% + var(--inner-padding));\n }\n }\n\n /* Player view */\n &.play, &.focus {\n height: 100%;\n max-height: 100dvh;\n\n @media (min-width: 800px) {\n & > main {\n max-height: 90%;\n margin: auto;\n }\n }\n }\n\n /* */\n & > main {\n flex: 1 1 auto;\n\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n\n @media (min-width: 800px) {\n margin: 5vh 0;\n max-width: 800px;\n }\n }\n}\n"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$6bce942dbbed32a8$export$b7e3ae3d7c15e42e","$6bce942dbbed32a8$export$a8ecead220dd38a6","$6bce942dbbed32a8$export$c789db2c85949867","$6bce942dbbed32a8$export$d61e5f8e032e1547","$6bce942dbbed32a8$export$77694752ff0b3730","$f70f6ed8aa0167f4$export$1ee2ee71de083e4d","$f70f6ed8aa0167f4$export$b7e3ae3d7c15e42e","$f70f6ed8aa0167f4$export$a8ecead220dd38a6","$f70f6ed8aa0167f4$export$64cbebf88d5f7b08","$f70f6ed8aa0167f4$export$d61e5f8e032e1547","$e3c97f2521259165$export$ab1029bcae9ddb4a","$e3c97f2521259165$export$347a3a46df242257","$7af367459ad7e190$export$471f7ae5c4103ae1","$765ad9f902f48a5c$export$729c8b7179294ba","$765ad9f902f48a5c$export$d7ddd398f22d79ef","$765ad9f902f48a5c$export$79863f625c4e57","$765ad9f902f48a5c$export$d12a05a2da93ee73","$765ad9f902f48a5c$export$899fbdb5fa08b653","$765ad9f902f48a5c$export$d9a33280f07116d9","$parcel$global","globalThis","self","window","global","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$adfd32792a864deb$var$n","$adfd32792a864deb$export$41c562ebe57d11e2","$adfd32792a864deb$var$u","$adfd32792a864deb$export$a8257692ac88316c","$adfd32792a864deb$var$t","$adfd32792a864deb$var$o","$adfd32792a864deb$var$r","$adfd32792a864deb$var$f","$adfd32792a864deb$var$e","$adfd32792a864deb$var$c","$adfd32792a864deb$var$s","$adfd32792a864deb$var$a","$adfd32792a864deb$var$v","Array","isArray","$adfd32792a864deb$var$h","l","u","$adfd32792a864deb$var$p","parentNode","removeChild","$adfd32792a864deb$export$c8a8987d4410bf2d","i","t","o","r","f","arguments","length","children","defaultProps","$adfd32792a864deb$var$d","type","props","key","ref","__k","__","__b","__e","__d","__c","__h","constructor","__v","vnode","$adfd32792a864deb$export$ffb0004e005737fa","$adfd32792a864deb$export$16fa2f45be04daa8","context","$adfd32792a864deb$var$g","indexOf","$adfd32792a864deb$var$w","push","$adfd32792a864deb$var$x","__r","debounceRendering","c","sort","shift","__P","$adfd32792a864deb$var$L","__n","ownerSVGElement","$adfd32792a864deb$var$M","$adfd32792a864deb$var$m","base","$adfd32792a864deb$var$P","a","h","p","y","_","b","m","w","x","P","$adfd32792a864deb$var$C","$adfd32792a864deb$var$$","$adfd32792a864deb$var$A","nextSibling","$adfd32792a864deb$var$q","unmount","current","$adfd32792a864deb$var$O","componentWillUnmount","appendChild","insertBefore","$adfd32792a864deb$var$I","setProperty","test","$adfd32792a864deb$var$T","style","cssText","replace","toLowerCase","slice","addEventListener","$adfd32792a864deb$var$z","$adfd32792a864deb$var$j","removeEventListener","removeAttribute","setAttribute","event","d","g","C","S","$","A","H","I","contextType","value","__E","prototype","render","$adfd32792a864deb$var$B","sub","state","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","forEach","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","$adfd32792a864deb$var$N","k","localName","nodeType","document","createTextNode","createElementNS","createElement","is","data","childNodes","dangerouslySetInnerHTML","attributes","name","__html","innerHTML","$adfd32792a864deb$var$H","checked","diffed","some","$adfd32792a864deb$export$e530037191fcd5d7","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Promise","then","bind","resolve","setTimeout","$80ca9f09fe72d4b7$var$_","$80ca9f09fe72d4b7$export$34b9dba7ce09269b","__source","__self","$70db777e8f6135ab$var$t","$70db777e8f6135ab$var$r","$70db777e8f6135ab$var$u","$70db777e8f6135ab$var$i","$70db777e8f6135ab$var$o","$70db777e8f6135ab$var$f","$70db777e8f6135ab$var$c","$70db777e8f6135ab$var$e","$70db777e8f6135ab$var$a","$70db777e8f6135ab$var$v","$70db777e8f6135ab$var$l","$70db777e8f6135ab$var$m","$70db777e8f6135ab$var$d","__H","__V","$70db777e8f6135ab$export$60241385465d0a34","$70db777e8f6135ab$export$13e3392192263954","$70db777e8f6135ab$var$B","__N","filter","every","$70db777e8f6135ab$export$6d9c69b0de29b591","$70db777e8f6135ab$var$z","$70db777e8f6135ab$export$e5c5a5f917a5871c","$70db777e8f6135ab$export$b8f5890fc79d6aca","$70db777e8f6135ab$export$1538c33de8887b59","$70db777e8f6135ab$var$b","$70db777e8f6135ab$var$k","$70db777e8f6135ab$var$w","requestAnimationFrame","$70db777e8f6135ab$var$j","$70db777e8f6135ab$var$g","clearTimeout","cancelAnimationFrame","$b2dbedd88e2bb823$var$canUseDOM","$b2dbedd88e2bb823$var$is","$b2dbedd88e2bb823$export$90fc3a17d93f704c","fn","args","$e7eac5accd0c8e48$var$relativePath","path","location","pathname","$e7eac5accd0c8e48$var$absolutePath","to","$e7eac5accd0c8e48$var$eventPushState","$e7eac5accd0c8e48$var$eventReplaceState","$e7eac5accd0c8e48$export$4bf9923669ad6c63","$e7eac5accd0c8e48$var$subscribeToLocationUpdates","callback","$e7eac5accd0c8e48$export$3a1ff78c39f8a86","ssrFn","subscribe","getSnapshot","getSSRSnapshot","_instance","_value","_getSnapshot","$e7eac5accd0c8e48$var$currentPathname","$e7eac5accd0c8e48$export$2a28ef6a9fe822a4","ssrPath","$e7eac5accd0c8e48$export$ff7962acd6052c28","history","original","result","apply","Event","dispatchEvent","$fa39f85a2f4c40bd$var$escapeRx","str","$fa39f85a2f4c40bd$var$rxForSegment","repeat","optional","prefix","capture","$fa39f85a2f4c40bd$var$pathToRegexp","pattern","groupRx","match","lastIndex","keys","exec","segment","mod","index","prev","substring","regexp","RegExp","$43f4290c2e1c8c6c$var$defaultRouter","hook","opts","navOpts","matcher","makeRegexpFn","cache","getRegexp","out","params","reduce","$43f4290c2e1c8c6c$var$RouterCtx","Consumer","Provider","splice","$43f4290c2e1c8c6c$export$9a302a45f65d0572","$43f4290c2e1c8c6c$var$useLocationFromRouter","router","$43f4290c2e1c8c6c$export$3f79f0b98112cf57","$43f4290c2e1c8c6c$export$55185c17a0fcbe46","parent","updateRouter","proto","ownBase","$43f4290c2e1c8c6c$export$e7b0ac011bb776c6","component","useRouteMatch","matches","$43f4290c2e1c8c6c$export$a6c7ac8248d6e38a","navigate","href","onClick","handleClick","ctrlKey","metaKey","altKey","shiftKey","button","defaultPrevented","preventDefault","extraProps","jsx","$43f4290c2e1c8c6c$var$flattenChildren","concat","map","$43f4290c2e1c8c6c$export$b5d5cf8927ab7262","originalLocation","element","$a43cd3da5e11dd79$var$windowLocation","hash","$a43cd3da5e11dd79$export$8eb08f90c24d5079","url","encodeURIComponent","$a43cd3da5e11dd79$export$4fac2eeccfa4a8ca","currentView","split","Boolean","$a43cd3da5e11dd79$export$b37f3f4c9f6562f7","currentLocation","setCurrentLocation","onHashChange","newLocation","scrollTo","$87d3613fdd90d9f3$export$d9a33280f07116d9","$31f868e32fe83e3e$var$LS_THEME_KEY","$31f868e32fe83e3e$var$DEFAULT_THEME","$31f868e32fe83e3e$var$getSavedTheme","savedTheme","localStorage","getItem","$31f868e32fe83e3e$var$assertTheme","theme","includes","$31f868e32fe83e3e$export$818080cba8053148","initialTheme","currentTheme","setCurrentTheme","setTheme","newTheme","setItem","setRandomTheme","randomTheme","Math","floor","random","themes","$8e9729df037268c2$export$2e2bcd8739ae039","setLocation","buildLink","onChange","target","file","files","URL","createObjectURL","$1d45441ec446f904$export$2e2bcd8739ae039","urlRE","placeholder","onKeyPress","keyCode","encodeURI","$17b050a6c4860540$export$2e2bcd8739ae039","themeEngine","options","$bf3b722837e02a56$export$2e2bcd8739ae039","rel","$26d7563a3571c071$export$2e2bcd8739ae039","ifdb","$1d41e2692da71243$export$2e2bcd8739ae039","$82438f79b880153d$var$tutorialGame","$82438f79b880153d$export$2e2bcd8739ae039","className","title","game","$1d6a41ed2b8e0680$var$Preview","join","$1d6a41ed2b8e0680$export$2e2bcd8739ae039","$034c9f96cebd6b40$export$2e2bcd8739ae039","VM","dialog","Dialog","streaming","FS","Module","filename_map","filename_counter","close","stream","fstream","fclose","fmode","file_write","fref","createNode","mode","isDir","isFile","ErrnoError","node","node_ops","stream_ops","timestamp","Date","now","getattr","size","atime","ctime","dev","gid","ino","mtime","nlink","rdev","uid","get_dialog_ref","filename","usage","gameid","AsciiToString","_gidispatch_get_game_id","file_construct_ref","llseek","offset","whence","position","curpos","ftell","fseek","lookup","realname","file_ref_exists","mknod","mmap","mount","msync","open","flags","file_fopen","file_read","Uint8Array","read","buffer","min","subarray","buf","BufferClass","from","fread","readdir","readlink","register_filename","suffix","fakename","rename","rmdir","setattr","symlink","unlink","file_remove_ref","write","fwrite","end_of_write","old_data","$0d34edacac7ea588$var$base_options","$0d34edacac7ea588$export$2e2bcd8739ae039","assign","default_options","start","encoder","TextEncoder","show_help","emglken_stdin_buffers","emglken_stdin_ready","locateFile","print","startsWith","endsWith","obj","JSON","parse","specialinput","last_fr_usage","filetype","GlkOte","update","console","log","preRun","EFS","mkdir","chdir","wasmBinary","accept","response","json_data","stringify","encode","vmcore","$98d53e988180932b$exports","toString","$2d243513b2ab5598$var$Module","_scriptDir","readyPromiseResolve","readyPromiseReject","read_","readAsync","readBinary","wasmMemory","EXITSTATUS","HEAP8","HEAPU8","HEAP16","HEAP32","HEAPU32","wasmBinaryFile","tempDouble","tempI64","calledRun","reject","moduleOverrides","arguments_","thisProgram","quit_","status","toThrow","scriptDirectory","currentScript","src","substr","lastIndexOf","xhr","XMLHttpRequest","send","responseText","onload","onerror","responseType","warn","noExitRuntime","WebAssembly","abort","ABORT","UTF8Decoder","TextDecoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","endIdx","endPtr","decode","UTF8ToString","ptr","maxPtr","end","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","charCodeAt","u1","lengthBytesUTF8","len","updateMemoryViews","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATEXIT__","__ATPOSTRUN__","runtimeExited","runtimeKeepaliveCounter","runDependencies","runDependencyWatcher","dependenciesFulfilled","addRunDependency","removeRunDependency","clearInterval","what","RuntimeError","isDataURI","getBinary","instantiateArrayBuffer","binaryFile","imports","receiver","getBinaryPromise","fetch","credentials","catch","binary","instantiate","instance","reason","ExitStatus","message","callRuntimeCallbacks","callbacks","exceptionCaught","uncaughtExceptionCount","exceptionLast","ExceptionInfo","excPtr","set_type","get_type","set_destructor","destructor","get_destructor","set_refcount","refcount","set_caught","caught","get_caught","set_rethrown","rethrown","get_rethrown","set_adjusted_ptr","add_ref","release_ref","adjustedPtr","get_adjusted_ptr","get_exception_ptr","___cxa_is_pointer_type","adjusted","___cxa_find_matching_catch","thrown","setTempRet0","info","thrownType","caughtType","___cxa_can_catch","PATH","isAbs","charAt","splitPath","splitPathRe","normalizeArray","parts","allowAboveRoot","up","last","unshift","normalize","isAbsolute","trailingSlash","dirname","root","dir","basename","lastSlash","paths","join2","PATH_FS","resolvedPath","resolvedAbsolute","cwd","TypeError","relative","trim","arr","fromParts","toParts","samePartsLength","outputParts","intArrayFromString","stringy","dontAddNull","u8array","numBytesWritten","TTY","ttys","shutdown","ops","input","output","registerDevice","tty","seekable","fsync","pos","get_char","bytesRead","undefined","put_char","default_tty_ops","prompt","readline","val","default_tty1_ops","MEMFS","ops_table","isBlkdev","isFIFO","allocate","link","chrdev","chrdev_stream_ops","contents","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","max","oldContents","resizeFileStorage","newSize","attr","blksize","blocks","ceil","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","hasOwnProperty","newname","oldpath","canOwn","prot","allocated","byteOffset","mmapFlags","mounts","devices","streams","nextInode","nameTable","currentPath","initialized","ignorePermissions","filesystems","syncFSRequests","lookupPath","follow_mount","recurse_count","current_path","islast","isMountpoint","mounted","follow","count","getPath","isRoot","mountpoint","hashName","parentid","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","destroyNode","isSocket","flagModes","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","errno","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","fd","getStream","createStream","FSStream","shared","defineProperties","object","isRead","isWrite","isAppend","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","pop","syncfs","populate","completed","doCallback","done","errored","pseudo","mountRoot","next","create","mkdirTree","dirs","mkdev","newpath","old_path","new_path","old_dir","old_dirname","new_dirname","old_name","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","created","ungotten","error","readFiles","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","cmd","arg","readFile","encoding","ret","writeFile","actualNumBytes","ArrayBuffer","isView","byteLength","createDefaultDirectories","createDefaultDevices","random_device","getRandomDevice","crypto","randomBuffer","getRandomValues","createDevice","createSpecialDirectories","proc_self","createStandardStreams","ensureErrnoError","setErrno","stack","staticInit","quit","_fflush","getMode","canRead","canWrite","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","reverse","part","createFile","properties","createDataFile","forceLoadFile","isDevice","isFolder","createLazyFile","LazyUint8Array","lengthKnown","chunks","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","cacheLength","header","datalength","Number","getResponseHeader","hasByteServing","usesGzip","doXHR","setRequestHeader","overrideMimeType","lazyArray","_length","_chunkSize","writeChunks","createPreloadedFile","dontCreateFile","preFinish","dep","fullname","processData","byteArray","finish","Browser","handledByPreloadPlugin","arrayBuffer","text","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","db","createObjectStore","onsuccess","transaction","objectStore","ok","fail","total","putRequest","put","loadFilesFromDB","getRequest","SYSCALLS","DEFAULT_POLLMASK","calculateAt","dirfd","allowEmpty","dirstream","getStreamFromFD","doStat","func","abs","getTime","doMsync","addr","varargs","getStr","__isLeapYear","year","__MONTH_DAYS_LEAP_CUMULATIVE","__MONTH_DAYS_REGULAR_CUMULATIVE","allocateUTF8","_malloc","ENV","getEnvStrings","strings","env","navigator","languages","exitJS","implicit","___funcs_on_exit","__MONTH_DAYS_LEAP","__MONTH_DAYS_REGULAR","_strftime","maxsize","format","tm","tm_zone","date","tm_sec","tm_min","tm_hour","tm_mday","tm_mon","tm_year","tm_wday","tm_yday","tm_isdst","tm_gmtoff","EXPANSION_RULES_1","rule","WEEKDAYS","MONTHS","leadingSomething","digits","character","leadingNulls","compareByDay","date1","date2","compare","sgn","getFullYear","getMonth","getDate","getFirstWeekStartDate","janFourth","getDay","getWeekBasedYear","thisDate","__addDays","days","newDate","leap","currentMonth","daysInCurrentMonth","setDate","setMonth","setFullYear","janFourthThisYear","janFourthNextYear","firstWeekStartThisYear","firstWeekStartNextYear","EXPANSION_RULES_2","twelveHour","__arraySum","array","sum","jan1","dec31","off","ahead","String","bytes","handleException","runAndAbortIfError","Asyncify","instrumentWasmImports","ASYNCIFY_IMPORTS","sig","instrumentWasmExports","exportCallStack","maybeStopUnwind","State","Normal","Unwinding","Rewinding","Disabled","StackSize","currData","handleSleepReturnValue","callStackNameToId","callStackIdToName","callStackId","asyncPromiseHandlers","sleepCallbacks","getCallStackId","funcName","_asyncify_stop_unwind","Fibers","trampoline","whenDone","allocateData","setDataHeader","setDataRewindFunc","stackSize","bottomOfCallStack","rewindId","getDataRewindFunc","doRewind","handleSleep","startAsync","reachedCallback","reachedAfterCallback","_asyncify_start_rewind","mainLoop","resume","asyncWasmReturnValue","isError","handled","pause","_asyncify_start_unwind","_asyncify_stop_rewind","_free","callUserCallback","maybeExit","_exit","handleAsync","wakeUp","wasmImports","maxlen","exception_addRef","_setThrew","exception_decRef","a1","dynCall_ii","___cxa_free_exception","amode","newStream","___errno_location","cwdLengthInBytes","op","argp","time","tmPtr","readI53FromI64","getSeconds","getMinutes","getHours","yday","__yday_from_date","monthDaysCumulative","isLeapYear","getTimezoneOffset","summerOffset","winterOffset","dst","timezone","daylight","tzname","currentYear","winter","summer","extractZone","toTimeString","stdTimezoneOffset","winterName","summerName","winterNamePtr","summerNamePtr","dest","num","copyWithin","requestedSize","oldSize","alignUp","multiple","cutDown","overGrownHeapSize","emscripten_realloc_buffer","grow","__environ","environ_buf","bufSize","string","writeAsciiToMemory","penviron_count","penviron_buf_size","iov","iovcnt","pnum","doReadv","curr","offset_low","offset_high","newOffset","hi","lo","NaN","isNaN","doWritev","a2","a3","sp","stackSave","dynCall_diii","stackRestore","dynCall_fiii","dynCall_i","dynCall_iii","dynCall_iiii","a4","dynCall_iiiii","a5","dynCall_iiiiii","a6","dynCall_iiiiiii","a7","dynCall_iiiiiiii","a8","a9","a10","a11","dynCall_iiiiiiiiiiii","dynCall_ji","dynCall_jiiii","dynCall_v","dynCall_vi","dynCall_vii","dynCall_viii","dynCall_viiii","dynCall_viiiii","dynCall_viiiiiii","dynCall_viiiiiiiiii","a12","a13","a14","a15","dynCall_viiiiiiiiiiiiiii","loc","createWasm","receiveInstance","cb","instantiateAsync","instantiateStreaming","_main","stackAlloc","run","addOnPreRun","doRun","shouldRunNow","callMain","entryFunction","argc","argv","argv_ptr","postRun","addOnPostRun","ch","fromCharCode","runCaller","ready","$454c12da88ceab7d$exports","$70d4325860634496$var$Module","emglken_common_buffer_transformer","numchars","dont_reduce","utf32","fromCodePoint","new_str","newbuf","codePointAt","newlen","Infinity","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCMonth","getUTCFullYear","getUTCDay","UTC","guessedOffset","dstOffset","trueOffset","setTime","getYear","lowerrest","special_cases","thischar","slightly_less_special_cases","toUpperCase","$57e022dac828c602$exports","$bc076b4214ff7fe6$var$Module","$adf084eb06e09d60$exports","$550f5195aabbfc7b$var$Module","old","dirp","outPtr","child","nofollow","bufsize","endChar","olddirfd","newdirfd","performance","dynCall_iiiiiiiii","dynCall_iiiiiiiiii","dynCall_iiiiiiiiiii","dynCall_iiiiiiiiiiiiii","dynCall_iiiiiiiiiiiiiiii","a16","a17","dynCall_iiiiiiiiiiiiiiiiii","dynCall_viiiiii","dynCall_viiiiiiii","dynCall_viiiiiiiii","dynCall_viiiiiiiiiii","$ffc332a4e0553020$exports","$ffa7e6eb668807b5$var$Module","$f81570ea977e655c$var$formats","extensions","engine","$f81570ea977e655c$export$1784a1ff765207b7","find","wasmBinaryName","$6cc55e85f69c62dc$export$2e2bcd8739ae039","handlers","loggers","dirent","israw","onFileRead","content","onFileWrite","tosave","onFileNameRequest","warning","$607a2f5df9bf3729$export$2e2bcd8739ae039","width","height","current_metrics","disabled","generation","interface","version","measure_window","buffercharheight","buffercharwidth","buffermarginx","buffermarginy","graphicsmarginx","graphicsmarginy","gridcharheight","gridcharwidth","gridmarginx","gridmarginy","inspacingx","inspacingy","outspacingx","outspacingy","getinterface","iface","send_response","gen","disable","cancel_inputs","windows","update_windows","update_content","update_inputs","accept_specialinput","exit","win","val2","res","metrics","support","$2e4ae466f1c769fd$export$2e2bcd8739ae039","sendFn","onInit","onUpdateInputs","filemode","messages","onUpdateContent","onExit","onDisable","onUpdateWindows","$f4aad693a7eb1cab$var$noop","$f4aad693a7eb1cab$var$defaultHandlers","acc","$f4aad693a7eb1cab$var$defaultLoggers","$f4aad693a7eb1cab$var$defaultSize","$f4aad693a7eb1cab$export$2e2bcd8739ae039","handlers_","loggers_","size_","$f70f6ed8aa0167f4$exports","$ae4b80531b5b7eb5$export$2e2bcd8739ae039","defaultContent","grid","subheader","emphasized","scrollTarget","endOfLine","$62a526398d9e890e$var$eol","$62a526398d9e890e$var$scrollTarget","$62a526398d9e890e$var$isFakeStatus","$62a526398d9e890e$var$trimInputPrompt","$62a526398d9e890e$var$parseInbox","inbox","currentWindow","currentInbox","clear","incoming","inboxMessagesRaw","$62a526398d9e890e$export$2e2bcd8739ae039","setMessages","textBufferEl","scrollTargets","querySelectorAll","freshScrollTarget","scrollIntoView","top","scrollHeight","behavior","tabindex","$fc1a9d8e897a3f88$export$2e2bcd8739ae039","prevMessages","setPrevMessages","currentInboxObj","lines","rawMessages","gridheight","fill","byId","list","line","shouldUpdatePrev","serialize","rawMessagesContent","flat","isEmpty","getGridStyle","$522ef20c4411156f$export$2e2bcd8739ae039","class","viewBox","xmlns","$09c2ae0a56d4216f$var$keyCodes","KEY_BACKSPACE","KEY_TAB","KEY_RETURN","KEY_ESC","KEY_PAGEUP","KEY_PAGEDOWN","KEY_END","KEY_HOME","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","$09c2ae0a56d4216f$var$keyNames","$09c2ae0a56d4216f$var$hasModifier","modifiers","modifier","$09c2ae0a56d4216f$export$2e2bcd8739ae039","inputType","currentWindowId","sendMessage","onFullscreenRequest","setMenuOpen","targetWindow","setTargetWindow","inputText","setInputText","lastInput","setLastInput","inputEl","setFocus","focus","charHandlerDefault","charHandlerMobile","inputHandlers","char","maxlength","onKeyDown","setSelectionRange","finished","autofocus","autocomplete","spellCheck","autocapitalize","autocorrect","onDblClick","onInput","$3f6f728901b29270$var$fail","details","$3f6f728901b29270$var$loading","$3f6f728901b29270$export$2e2bcd8739ae039","stage","loading","$5dd12ecabd972271$var$lookupE","$5dd12ecabd972271$var$lookupD","$5dd12ecabd972271$var$pairStrings","pairString","encodeRepertoire","pair","first","codePoint","numZBits","$5dd12ecabd972271$var$BITS_PER_CHAR","$5dd12ecabd972271$var$BITS_PER_BYTE","chr","z","$5dd12ecabd972271$export$c564cdbbe6da493","uint8Array","uint8","j","bit","$5dd12ecabd972271$export$2f872c0f2117be69","numUint8s","numUint8Bits","$d19a0378e1073758$export$fe1040197752eb59","setStatus","setWindows","setCurrentWindowId","setInputType","setInbox","_tosave","_gameId","setFileName","$d19a0378e1073758$export$877ebb39146e6928","promise","$bb36c7040b61e80d$var$INITIAL_STATUS","$bb36c7040b61e80d$var$runMachine","Engine","storyfile","Glk","$bb36c7040b61e80d$export$2e2bcd8739ae039","vmParts","singleWindow","vm","setVm","setSendMessage","rejectionHandler","$f70ed90b8b4541bd$var$INITIAL_STATUS","$f70ed90b8b4541bd$var$prepareVM","setParts","st","fetchWasm","statusText","all","$f70ed90b8b4541bd$export$2e2bcd8739ae039","$e1df641eca1adea7$export$2e2bcd8739ae039","menuOpen","dialogOpen","showModal","currentDialog","closeHandler","tabIndex","$5b1dbd57077ad108$var$decode","encodedUrl","decodeURIComponent","$5b1dbd57077ad108$export$2e2bcd8739ae039","targetUrl","setTargetUrl","documentElement","requestFullscreen","$30aba6731c147baf$export$2e2bcd8739ae039","$765ad9f902f48a5c$exports","firstChild","playerView","app","getElementById","vnodeId","createVNode","isStaticChildren","normalizedProps","isValidElement","rerenderQueue","prevDebounce","defer","depthSort","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","removeNode","createRef","Fragment","Component","this","getDomSibling","childIndex","sibling","updateParentDomPointers","enqueueRender","process","renderQueueLength","commitQueue","oldVNode","oldDom","parentDom","diff","commitRoot","diffChildren","renderResult","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","childVNode","newDom","firstChildDom","refs","oldChildren","oldChildrenLength","reorderChildren","placeChild","getLastDom","applyRef","tmp","toChildArray","nextDom","sibDom","outer","lastDom","diffProps","dom","newProps","oldProps","hydrate","setStyle","oldValue","useCapture","eventProxyCapture","eventProxy","newVNode","isNew","oldState","snapshot","clearProcessingException","provider","componentContext","renderHook","newType","doRender","diffElementNodes","oldHtml","newHtml","parentVNode","skipRemove","replaceNode","cloneElement","createContext","defaultValue","contextId","contextValue","subs","ctx","_props","errorInfo","ctor","currentIndex","currentComponent","previousComponent","prevRaf","currentHook","afterPaintEffects","EMPTY","oldBeforeDiff","oldBeforeRender","oldAfterDiff","oldCommit","oldBeforeUnmount","getHookState","hooks","useState","initialState","useReducer","invokeOrReturn","reducer","hookState","_reducer","action","currentValue","nextValue","_hasScuFromHooks","updateHookState","stateHooks","prevScu","shouldUpdate","hookItem","prevCWU","useEffect","argsChanged","_pendingArgs","useLayoutEffect","useRef","initialValue","useMemo","useImperativeHandle","createHandle","factory","useCallback","useContext","useDebugValue","formatter","useErrorBoundary","errState","useId","__m","mask","flushAfterPaintEffects","invokeCleanup","invokeEffect","afterNextFrame","hasErrored","HAS_RAF","raf","timeout","comp","cleanup","oldArgs","newArgs"],"version":3,"file":"index.4a5edb74.js.map"} \ No newline at end of file diff --git a/docs/index.62ef15f1.css b/docs/index.62ef15f1.css new file mode 100644 index 0000000..cbcaeb5 --- /dev/null +++ b/docs/index.62ef15f1.css @@ -0,0 +1,2 @@ +@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:400;src:url(open-sans-cyrillic-ext-400-normal.5a91320c.woff2)format("woff2"),url(open-sans-cyrillic-ext-400-normal.650c7d3f.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:400;src:url(open-sans-cyrillic-400-normal.09174fa0.woff2)format("woff2"),url(open-sans-cyrillic-400-normal.2a726790.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:400;src:url(open-sans-greek-ext-400-normal.2d040ff0.woff2)format("woff2"),url(open-sans-greek-ext-400-normal.ca43dd21.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:400;src:url(open-sans-greek-400-normal.dc2ae4bd.woff2)format("woff2"),url(open-sans-greek-400-normal.3d6f6e23.woff)format("woff");unicode-range:U+370-3FF}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:400;src:url(open-sans-hebrew-400-normal.942ca237.woff2)format("woff2"),url(open-sans-hebrew-400-normal.76fb5a51.woff)format("woff");unicode-range:U+590-5FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:400;src:url(open-sans-vietnamese-400-normal.979797dd.woff2)format("woff2"),url(open-sans-vietnamese-400-normal.c15bfd40.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:400;src:url(open-sans-latin-ext-400-normal.b040be2e.woff2)format("woff2"),url(open-sans-latin-ext-400-normal.9030d190.woff)format("woff");unicode-range:U+100-2AF,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1E??,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:400;src:url(open-sans-latin-400-normal.7cf38e2c.woff2)format("woff2"),url(open-sans-latin-400-normal.36b20d2c.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+300-301,U+303-304,U+308-309,U+323,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html,body{background:#000;height:100%;margin:0;font-family:Open Sans,sans-serif;font-size:18px;line-height:27px}#root{height:100%}body *{scrollbar-color:var(--main-color)var(--bg-color);scrollbar-width:thin}body ::-webkit-scrollbar{width:var(--inner-padding)}body ::-webkit-scrollbar-thumb{background-color:var(--main-color);border:calc(.5*var(--inner-padding))solid var(--bg-color);border-left-width:0}:focus-visible{outline:calc(.5*var(--separator-width))solid var(--main-color);outline-offset:calc(1px + var(--separator-width))}::selection{color:var(--bg-color);background:var(--main-color)}a,summary{cursor:pointer;border-bottom:var(--separator-width)solid currentColor;color:inherit;text-decoration:none;display:inline}a:focus,a:hover,summary:focus,summary:hover{opacity:.8}hr{border:0;border-top:var(--separator-width)solid var(--main-color);height:0}ul{list-style:square}button{border:var(--separator-width)solid var(--main-color);background-color:var(--bg-color);color:var(--main-color);padding:var(--inner-padding)calc(4*var(--inner-padding));font-family:inherit;font-size:inherit;cursor:pointer}input::placeholder{color:var(--main-color);opacity:.8}input,select{box-sizing:border-box;padding:calc(.5*var(--inner-padding))var(--inner-padding);color:var(--main-color);background-color:var(--bg-color);border:var(--separator-width)solid var(--main-color);font:inherit}select{cursor:pointer;-webkit-appearance:none;appearance:none;background-image:repeating-linear-gradient(315deg,var(--bg-color),var(--bg-color)var(--inner-padding),var(--main-color)var(--inner-padding),var(--main-color)calc(var(--inner-padding) + var(--separator-width)),var(--bg-color)calc(var(--inner-padding) + var(--separator-width)),var(--bg-color)100%);border-radius:0;width:250px}label{width:100%;max-width:400px;display:inline-block}label input{width:100%}input[type=file]{text-indent:-100%;cursor:pointer;font-size:0;position:relative}body{--outer-padding:0px;--border-width:0px;--separator-width:2px;--inner-padding:8px;--input-box-margin:0px}@media (min-width:800px){body{--outer-padding:8px;--border-width:2px;--input-box-margin:8px}}.light{--bg-color:#fff;--main-color:#000c;--accent-color:#000c;--input-color:#000c}.dim{--bg-color:#333;--main-color:#fffc;--accent-color:#fffc;--input-color:#fffc}.dark{--bg-color:#000;--main-color:#fff;--accent-color:#fff;--input-color:#fff}.solarized-light{--bg-color:#eee8d5;--main-color:#586e75;--accent-color:#b58900;--input-color:#2aa198}.solarized-dark{--bg-color:#073642;--main-color:#93a1a1;--accent-color:#b58900;--input-color:#2aa198}.emo{--bg-color:#4d4d4d;--main-color:#f7a;--accent-color:#f7a;--input-color:#f7a}.redrum{--bg-color:#000;--main-color:red;--accent-color:red;--input-color:red}.toxin{--bg-color:#606060;--main-color:#d6ed17;--accent-color:#d6ed17;--input-color:#d6ed17}.valve{--bg-color:#292929;--main-color:#fb7e14;--accent-color:#fb7e14;--input-color:#fb7e14}.wasp{--bg-color:#f9d142;--main-color:#292826;--accent-color:#292826;--input-color:#292826}.a8008{--bg-color:#333a45;--main-color:#e9ecf0;--accent-color:#f44c7f;--input-color:#939eae}.a80s_after_dark{--bg-color:#1b1d36;--main-color:#e1e7ec;--accent-color:#fca6d1;--input-color:#99d6ea}.a9009{--bg-color:#eeebe2;--main-color:#080909;--accent-color:#080909;--input-color:#99947f}.aether{--bg-color:#101820;--main-color:#eedaea;--accent-color:#eedaea;--input-color:#cf6bdd}.alduin{--bg-color:#1c1c1c;--main-color:#f5f3ed;--accent-color:#dfd7af;--input-color:#444}.alpine{--bg-color:#6c687f;--main-color:#fff;--accent-color:#fff;--input-color:#9994b8}.arch{--bg-color:#0c0d11;--main-color:#f6f5f5;--accent-color:#7ebab5;--input-color:#454864}.aurora{--bg-color:#011926;--main-color:#fff;--accent-color:#00e980;--input-color:#245c69}.beach{--bg-color:#ffeead;--main-color:#5b7869;--accent-color:#96ceb4;--input-color:#ffcc5c}.bento{--bg-color:#2d394d;--main-color:#fffaf8;--accent-color:#ff7a90;--input-color:#4a768d}.bingsu{--bg-color:#b8a7aa;--main-color:#ebe6ea;--accent-color:#83616e;--input-color:#48373d}.bliss{--bg-color:#262727;--main-color:#fff;--accent-color:#f0d3c9;--input-color:#665957}.blue_dolphin{--bg-color:#003950;--main-color:#82eaff;--accent-color:#ffcefb;--input-color:#00e4ff}.blueberry_dark{--bg-color:#212b42;--main-color:#91b4d5;--accent-color:#add7ff;--input-color:#5c7da5}.blueberry_light{--bg-color:#dae0f5;--main-color:#678198;--accent-color:#506477;--input-color:#92a4be}.botanical{--bg-color:#7b9c98;--main-color:#eaf1f3;--accent-color:#eaf1f3;--input-color:#495755}.bouquet{--bg-color:#173f35;--main-color:#e9e0d2;--accent-color:#eaa09c;--input-color:#408e7b}.breeze{--bg-color:#e8d5c4;--main-color:#1b4c5e;--accent-color:#7d67a9;--input-color:#3a98b9}.bushido{--bg-color:#242933;--main-color:#f6f0e9;--accent-color:#ec4c56;--input-color:#596172}.cafe{--bg-color:#ceb18d;--main-color:#14120f;--accent-color:#14120f;--input-color:#d4d2d1}.camping{--bg-color:#faf1e4;--main-color:#3c403b;--accent-color:#618c56;--input-color:#c2b8aa}.carbon{--bg-color:#313131;--main-color:#f5e6c8;--accent-color:#f66e0d;--input-color:#616161}.catppuccin{--bg-color:#1e1e2e;--main-color:#d9e0ee;--accent-color:#abe9b3;--input-color:#575268}.chaos_theory{--bg-color:#141221;--main-color:#dde5ed;--accent-color:#fd77d7;--input-color:#676e8a}.cheesecake{--bg-color:#fdf0d5;--main-color:#3a3335;--accent-color:#8e2949;--input-color:#d91c81}.cherry_blossom{--bg-color:#323437;--main-color:#d1d0c5;--accent-color:#d65ccc;--input-color:#787d82}.comfy{--bg-color:#4a5b6e;--main-color:#f5efee;--accent-color:#f8cdc6;--input-color:#9ec1cc}.copper{--bg-color:#442f29;--main-color:#e7e0de;--accent-color:#b46a55;--input-color:#7ebab5}.creamsicle{--bg-color:#ff9869;--main-color:#fcfcf8;--accent-color:#fcfcf8;--input-color:#ff661f}.cyberspace{--bg-color:#181c18;--main-color:#c2fbe1;--accent-color:#00ce7c;--input-color:#9578d3}.dark_magic_girl{--bg-color:#091f2c;--main-color:#a288d9;--accent-color:#f5b1cc;--input-color:#93e8d3}.dark_note{--bg-color:#1f1f1f;--main-color:#d2dff4;--accent-color:#f2c17b;--input-color:#768f95}.darling{--bg-color:#fec8cd;--main-color:#fff;--accent-color:#fff;--input-color:#a30000}.deku{--bg-color:#058b8c;--main-color:#f7f2ea;--accent-color:#b63530;--input-color:#255458}.desert_oasis{--bg-color:#fff2d5;--main-color:#332800;--accent-color:#d19d01;--input-color:#0061fe}.dev{--bg-color:#1b2028;--main-color:#ccccb5;--accent-color:#23a9d5;--input-color:#4b5975}.diner{--bg-color:#537997;--main-color:#dfdbc8;--accent-color:#c3af5b;--input-color:#445c7f}.dino{--bg-color:#fff;--main-color:#1d221f;--accent-color:#40d672;--input-color:#d5d5d5}.dmg{--bg-color:#dadbdc;--main-color:#414141;--accent-color:#ae185e;--input-color:#3846b1}.dollar{--bg-color:#e4e4d4;--main-color:#555a56;--accent-color:#6b886b;--input-color:#8a9b69}.dots{--bg-color:#121520;--main-color:#fff;--accent-color:#fff;--input-color:#676e8a}.dracula{--bg-color:#282a36;--main-color:#f8f8f2;--accent-color:#bd93f9;--input-color:#6272a4}.drowning{--bg-color:#191826;--main-color:#9393a7;--accent-color:#4a6fb5;--input-color:#50688c}.dualshot{--bg-color:#737373;--main-color:#212222;--accent-color:#212222;--input-color:#aaa}.earthsong{--bg-color:#292521;--main-color:#e6c7a8;--accent-color:#509452;--input-color:#f5ae2d}.everblush{--bg-color:#141b1e;--main-color:#dadada;--accent-color:#8ccf7e;--input-color:#838887}.evil_eye{--bg-color:#0084c2;--main-color:#171718;--accent-color:#f7f2ea;--input-color:#01589f}.ez_mode{--bg-color:#0068c6;--main-color:#fff;--accent-color:#fa62d5;--input-color:#138bf7}.fire{--bg-color:#0f0000;--main-color:#fff;--accent-color:#b31313;--input-color:#683434}.fledgling{--bg-color:#3b363f;--main-color:#e6d5d3;--accent-color:#fc6e83;--input-color:#8e5568}.fleuriste{--bg-color:#c6b294;--main-color:#091914;--accent-color:#405a52;--input-color:#64374d}.froyo{--bg-color:#e1dacb;--main-color:#7b7d7d;--accent-color:#7b7d7d;--input-color:#b29c5e}.frozen_llama{--bg-color:#9bf2ea;--main-color:#fff;--accent-color:#6d44a6;--input-color:#b690fd}.fruit_chew{--bg-color:#d6d3d6;--main-color:#282528;--accent-color:#5c1e5f;--input-color:#b49cb5}.fundamentals{--bg-color:#727474;--main-color:#131313;--accent-color:#7fa482;--input-color:#cac4be}.future_funk{--bg-color:#2e1a47;--main-color:#f7f2ea;--accent-color:#f7f2ea;--input-color:#c18fff}.godspeed{--bg-color:#eae4cf;--main-color:#646669;--accent-color:#9abbcd;--input-color:#ada998}.graen{--bg-color:#303c36;--main-color:#a59682;--accent-color:#a59682;--input-color:#181d1a}.grand_prix{--bg-color:#36475c;--main-color:#c1c7d7;--accent-color:#c0d036;--input-color:#5c6c80}.gruvbox_dark{--bg-color:#282828;--main-color:#ebdbb2;--accent-color:#d79921;--input-color:#665c54}.gruvbox_light{--bg-color:#fbf1c7;--main-color:#3c3836;--accent-color:#689d6a;--input-color:#a89984}.hammerhead{--bg-color:#030613;--main-color:#e2f1f5;--accent-color:#4fcdb9;--input-color:#213c53}.hanok{--bg-color:#d8d2c3;--main-color:#393b3b;--accent-color:#513a2a;--input-color:#8b6f5c}.hedge{--bg-color:#415e31;--main-color:#f7f1d6;--accent-color:#6a994e;--input-color:#ede5b4}.honey{--bg-color:#f2aa00;--main-color:#f3eecb;--accent-color:#fff546;--input-color:#a66b00}.horizon{--bg-color:#1c1e26;--main-color:#bbb;--accent-color:#c4a88a;--input-color:#db886f}.husqy{--bg-color:#000;--main-color:#ebd7ff;--accent-color:#c58aff;--input-color:#972fff}.iceberg_dark{--bg-color:#161821;--main-color:#c6c8d1;--accent-color:#84a0c6;--input-color:#595e76}.iceberg_light{--bg-color:#e8e9ec;--main-color:#33374c;--accent-color:#2d539e;--input-color:#adb1c4}.ishtar{--bg-color:#202020;--main-color:#fae1c3;--accent-color:#91170c;--input-color:#847869}.iv_clover{--bg-color:#a0a0a0;--main-color:#3b2d3b;--accent-color:#573e40;--input-color:#353535}.iv_spade{--bg-color:#0c0c0c;--main-color:#d3c2c3;--accent-color:#b7976a;--input-color:#404040}.joker{--bg-color:#1a0e25;--main-color:#e9e2f5;--accent-color:#99de1e;--input-color:#7554a3}.laser{--bg-color:#221b44;--main-color:#dbe7e8;--accent-color:#009eaf;--input-color:#b82356}.lavender{--bg-color:#ada6c2;--main-color:#2f2a41;--accent-color:#e4e3e9;--input-color:#e4e3e9}.leather{--bg-color:#a86948;--main-color:#ffe4bc;--accent-color:#ffe4bc;--input-color:#81482b}.lil_dragon{--bg-color:#ebe1ef;--main-color:#212b43;--accent-color:#8a5bd6;--input-color:#a28db8}.lime{--bg-color:#7c878e;--main-color:#bfcfdc;--accent-color:#93c247;--input-color:#4b5257}.luna{--bg-color:#221c35;--main-color:#ffe3eb;--accent-color:#f67599;--input-color:#5a3a7e}.magic_girl{--bg-color:#fff;--main-color:#00ac8c;--accent-color:#f5b1cc;--input-color:#93e8d3}.mashu{--bg-color:#2b2b2c;--main-color:#f1e2e4;--accent-color:#76689a;--input-color:#d8a0a6}.matcha_moccha{--bg-color:#523525;--main-color:#ecddcc;--accent-color:#7ec160;--input-color:#9e6749}.material{--bg-color:#263238;--main-color:#e6edf3;--accent-color:#80cbc4;--input-color:#4c6772}.matrix{--bg-color:#000;--main-color:#d1ffcd;--accent-color:#15ff00;--input-color:#006500}.menthol{--bg-color:#00c18c;--main-color:#fff;--accent-color:#fff;--input-color:#186544}.metaverse{--bg-color:#232323;--main-color:#e8e8e8;--accent-color:#d82934;--input-color:#5e5e5e}.metropolis{--bg-color:#0f1f2c;--main-color:#e4edf1;--accent-color:#56c3b7;--input-color:#326984}.mexican{--bg-color:#f8ad34;--main-color:#eee;--accent-color:#b12189;--input-color:#333}.miami{--bg-color:#f35588;--main-color:#f0e9ec;--accent-color:#05dfd7;--input-color:#94294c}.miami_nights{--bg-color:#18181a;--main-color:#fff;--accent-color:#e4609b;--input-color:#47bac0}.midnight{--bg-color:#0b0e13;--main-color:#9fadc6;--accent-color:#60759f;--input-color:#394760}.milkshake{--bg-color:#fff;--main-color:#212b43;--accent-color:#212b43;--input-color:#62cfe6}.mint{--bg-color:#05385b;--main-color:#edf5e1;--accent-color:#5cdb95;--input-color:#20688a}.mizu{--bg-color:#afcbdd;--main-color:#1a2633;--accent-color:#fcfbf6;--input-color:#85a5bb}.modern_dolch{--bg-color:#2d2e30;--main-color:#e3e6eb;--accent-color:#7eddd3;--input-color:#54585c}.modern_dolch_light{--bg-color:#dbdbdb;--main-color:#454545;--accent-color:#8fd1c3;--input-color:#acacac}.modern_ink{--bg-color:#fff;--main-color:#000;--accent-color:#ff360d;--input-color:#b7b7b7}.monokai{--bg-color:#272822;--main-color:#e2e2dc;--accent-color:#a6e22e;--input-color:#e6db74}.moonlight{--bg-color:#191f28;--main-color:#ccccb5;--accent-color:#c69f68;--input-color:#4b5975}.mountain{--bg-color:#0f0f0f;--main-color:#e7e7e7;--accent-color:#e7e7e7;--input-color:#4c4c4c}.mr_sleeves{--bg-color:#d1d7da;--main-color:#1d1d1d;--accent-color:#daa99b;--input-color:#9a9fa1}.ms_cupcakes{--bg-color:#fff;--main-color:#0a282f;--accent-color:#5ed5f3;--input-color:#d64090}.muted{--bg-color:#525252;--main-color:#b1e4e3;--accent-color:#c5b4e3;--input-color:#939eae}.nautilus{--bg-color:#132237;--main-color:#1cbaac;--accent-color:#ebb723;--input-color:#0b4c6c}.nebula{--bg-color:#212135;--main-color:#838686;--accent-color:#be3c88;--input-color:#19b3b8}.night_runner{--bg-color:#212121;--main-color:#e8e8e8;--accent-color:#feff04;--input-color:#5c4a9c}.nord{--bg-color:#242933;--main-color:#d8dee9;--accent-color:#d8dee9;--input-color:#617b94}.nord_light{--bg-color:#eceff4;--main-color:#8fbcbb;--accent-color:#8fbcbb;--input-color:#6a7791}.norse{--bg-color:#242425;--main-color:#ccc2b1;--accent-color:#2b5f6d;--input-color:#505b5e}.oblivion{--bg-color:#313231;--main-color:#f7f5f1;--accent-color:#a5a096;--input-color:#5d6263}.olive{--bg-color:#e9e5cc;--main-color:#373731;--accent-color:#92946f;--input-color:#b7b39e}.olivia{--bg-color:#1c1b1d;--main-color:#f2efed;--accent-color:#deaf9d;--input-color:#4e3e3e}.onedark{--bg-color:#2f343f;--main-color:#98c379;--accent-color:#61afef;--input-color:#eceff4}.our_theme{--bg-color:#ce1226;--main-color:#fff;--accent-color:#fcd116;--input-color:#6d0f19}.paper{--bg-color:#eee;--main-color:#444;--accent-color:#444;--input-color:#b2b2b2}.passion_fruit{--bg-color:#7c2142;--main-color:#fff;--accent-color:#f4a3b4;--input-color:#9994b8}.pastel{--bg-color:#e0b2bd;--main-color:#6d5c6f;--accent-color:#fbf4b6;--input-color:#b4e9ff}.peach_blossom{--bg-color:#292929;--main-color:#fecea8;--accent-color:#99b898;--input-color:#616161}.peaches{--bg-color:#e0d7c1;--main-color:#5f4c41;--accent-color:#dd7a5f;--input-color:#e7b28e}.pink_lemonade{--bg-color:#f6d992;--main-color:#fcfcf8;--accent-color:#f6a192;--input-color:#f6b092}.pulse{--bg-color:#181818;--main-color:#e5f4f4;--accent-color:#17b8bd;--input-color:#53565a}.purpurite{--bg-color:#1f2533;--main-color:#99f;--accent-color:#99f;--input-color:#cdf}.red_dragon{--bg-color:#1a0b0c;--main-color:#4a4d4e;--accent-color:#ff3a32;--input-color:#e2a528}.red_samurai{--bg-color:#84202c;--main-color:#e2dad0;--accent-color:#c79e6e;--input-color:#55131b}.repose_dark{--bg-color:#2f3338;--main-color:#d6d2bc;--accent-color:#d6d2bc;--input-color:#8f8e84}.repose_light{--bg-color:#efead0;--main-color:#333538;--accent-color:#5f605e;--input-color:#8f8e84}.retro{--bg-color:#dad3c1;--main-color:#1d1b17;--accent-color:#1d1b17;--input-color:#918b7d}.retrocast{--bg-color:#07737a;--main-color:#fff;--accent-color:#88dbdf;--input-color:#f3e03b}.rose_pine{--bg-color:#1f1d27;--main-color:#e0def4;--accent-color:#9ccfd8;--input-color:#c4a7e7}.rose_pine_dawn{--bg-color:#fffaf3;--main-color:#286983;--accent-color:#56949f;--input-color:#c4a7e7}.rose_pine_moon{--bg-color:#2a273f;--main-color:#e0def4;--accent-color:#9ccfd8;--input-color:#c4a7e7}.rudy{--bg-color:#1a2b3e;--main-color:#c9c8bf;--accent-color:#af8f5c;--input-color:#3a506c}.ryujinscales{--bg-color:#081426;--main-color:#ffe4bc;--accent-color:#f17754;--input-color:#ffbc90}.serika{--bg-color:#e1e1e3;--main-color:#323437;--accent-color:#e2b714;--input-color:#aaaeb3}.serika_dark{--bg-color:#323437;--main-color:#d1d0c5;--accent-color:#e2b714;--input-color:#646669}.sewing_tin{--bg-color:#241963;--main-color:#fff;--accent-color:#f2ce83;--input-color:#446ad5}.sewing_tin_light{--bg-color:#fff;--main-color:#2d2076;--accent-color:#2d2076;--input-color:#385eca}.shadow{--bg-color:#000;--main-color:#eee;--accent-color:#eee;--input-color:#444}.shoko{--bg-color:#ced7e0;--main-color:#3b4c58;--accent-color:#81c4dd;--input-color:#7599b1}.slambook{--bg-color:#fffdde;--main-color:#125d98;--accent-color:#13005a;--input-color:#1c82adc4}.snes{--bg-color:#bfbec2;--main-color:#2e2e2e;--accent-color:#553d94;--input-color:#9f8ad4}.soaring_skies{--bg-color:#fff9f2;--main-color:#1d1e1e;--accent-color:#55c6f0;--input-color:#1e107a}.sonokai{--bg-color:#2c2e34;--main-color:#e2e2e3;--accent-color:#9ed072;--input-color:#e7c664}.stealth{--bg-color:#010203;--main-color:#383e42;--accent-color:#383e42;--input-color:#5e676e}.strawberry{--bg-color:#f37f83;--main-color:#fcfcf8;--accent-color:#fcfcf8;--input-color:#e53c58}.striker{--bg-color:#124883;--main-color:#d6dbd9;--accent-color:#d7dcda;--input-color:#0f2d4e}.superuser{--bg-color:#262a33;--main-color:#e5f7ef;--accent-color:#43ffaf;--input-color:#526777}.sweden{--bg-color:#0058a3;--main-color:#fff;--accent-color:#ffcc02;--input-color:#57abdb}.taro{--bg-color:#b3baff;--main-color:#130f1a;--accent-color:#130f1a;--input-color:#6f6c91}.terminal{--bg-color:#191a1b;--main-color:#e7eae0;--accent-color:#79a617;--input-color:#48494b}.terra{--bg-color:#0c100e;--main-color:#f0edd1;--accent-color:#89c559;--input-color:#436029}.terror_below{--bg-color:#0b1e1a;--main-color:#dceae5;--accent-color:#66ac92;--input-color:#015c53}.tiramisu{--bg-color:#cfc6b9;--main-color:#7d5448;--accent-color:#c0976f;--input-color:#c0976f}.trackday{--bg-color:#464d66;--main-color:#cfcfcf;--accent-color:#e0513e;--input-color:#5c7eb9}.trance{--bg-color:#00021b;--main-color:#fff;--accent-color:#e51376;--input-color:#3c4c79}.tron_orange{--bg-color:#0d1c1c;--main-color:#fff;--accent-color:#f0e800;--input-color:#f60}.vaporwave{--bg-color:#a4a7ea;--main-color:#f1ebf1;--accent-color:#e368da;--input-color:#7c7faf}.viridescent{--bg-color:#2c3333;--main-color:#e9f5db;--accent-color:#95d5b2;--input-color:#84a98c}.voc{--bg-color:#190618;--main-color:#eeeae4;--accent-color:#e0caac;--input-color:#4c1e48}.vscode{--bg-color:#1e1e1e;--main-color:#d4d4d4;--accent-color:#007acc;--input-color:#4d4d4d}.watermelon{--bg-color:#1f4437;--main-color:#cdc6bc;--accent-color:#d6686f;--input-color:#3e7a65}.wavez{--bg-color:#1c292f;--main-color:#e9efe6;--accent-color:#6bde3b;--input-color:#1f5e6b}.witch_girl{--bg-color:#f3dbda;--main-color:#56786a;--accent-color:#56786a;--input-color:#ddb4a7}.-soi4G_games .-soi4G_tutorial{margin-block:64px}.-soi4G_games h4{margin:0}.-soi4G_games li{margin-bottom:1em}.qdlvgW_themes{--current-border:var(--main-color)}.qdlvgW_themes .qdlvgW_themePreview{border:2px solid var(--current-border);padding:calc(2*var(--inner-padding));background-color:var(--bg-color);color:var(--main-color);margin-bottom:32px}.qdlvgW_themes .qdlvgW_themePreview.qdlvgW_current{border:none;margin-block:64px;padding:0}.qdlvgW_themes .qdlvgW_themePreview .qdlvgW_output{border:2px solid var(--main-color);padding:var(--inner-padding);margin-bottom:8px}.qdlvgW_themes .qdlvgW_themePreview .qdlvgW_output .qdlvgW_message.qdlvgW_subheader{color:var(--accent-color);text-transform:capitalize;font-weight:700}.qdlvgW_themes .qdlvgW_themePreview .qdlvgW_output .qdlvgW_message.qdlvgW_input{color:var(--input-color)}.qdlvgW_themes .qdlvgW_themePreview button{width:100%}.hBGgUq_message.hBGgUq_input{color:var(--input-color)}.hBGgUq_message.hBGgUq_emphasized,.hBGgUq_message.hBGgUq_subheader{color:var(--accent-color)}.hBGgUq_scrollTarget{scroll-margin-block-start:var(--inner-padding)}.PwGQsW_elseifplayer{box-sizing:border-box;background-color:var(--bg-color);color:var(--main-color);padding:var(--outer-padding);flex-direction:column;height:100%;display:flex}.PwGQsW_elseifplayer .PwGQsW_output{overflow-wrap:break-word;border:var(--border-width)solid var(--main-color);flex-direction:column;flex-grow:2;display:flex;overflow-y:hidden}.PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer{box-sizing:border-box;padding:var(--inner-padding);overflow-y:scroll}.PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer:empty,.PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer>br:first-child,.PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer>br:last-child,.PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer>br+br+br{display:none}.PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer.PwGQsW_gridBuffer{border-bottom:var(--separator-width)solid var(--main-color);flex-shrink:0;max-height:100%}.PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer.PwGQsW_textBuffer{scroll-behavior:smooth;outline:none;flex:2}.gUkI1a_menuButton{outline-offset:-8px;background:0 0;border:none;justify-content:center;align-items:center;height:100%;padding:0;display:inline-flex;position:absolute;right:0}@media (max-width:800px){.gUkI1a_menuButton{padding:0 calc(.5*var(--inner-padding));overflow:hidden}}.gUkI1a_menuButton:focus-visible{outline-offset:-4px}.gUkI1a_menuButton .gUkI1a_menuIcon{fill:none;stroke:currentColor;stroke-width:2px;height:32px}@media (max-width:800px){.gUkI1a_menuButton .gUkI1a_menuIcon{fill:currentColor;transform:scale(2,.5)}}.LdLucW_inputControls{margin-top:var(--input-box-margin);position:relative}.LdLucW_inputControls .LdLucW_inputBox{font:inherit;color:inherit;background-color:var(--bg-color);border:var(--border-width)solid var(--main-color);border-top:var(--separator-width)solid var(--main-color);padding:var(--inner-padding);padding-right:calc(4*var(--inner-padding));outline:0;width:100%;margin:0}.LdLucW_inputControls .LdLucW_inputBox::placeholder{color:var(--main-color);opacity:1}.LdLucW_inputControls .LdLucW_inputBox:focus::placeholder{opacity:.5}.LdLucW_inputControls .LdLucW_inputBox::-webkit-search-cancel-button{display:none}@keyframes zi213q_dots0123{0%{content:""}33%{content:"."}66%{content:".."}to{content:"..."}}.zi213q_status{word-break:break-word;padding-block:var(--inner-padding)}@media (max-width:800px){.zi213q_status{padding:var(--inner-padding)}}.zi213q_status.zi213q_loading>div:after{content:"";animation:1s infinite zi213q_dots0123}.J9zJZG_menu{text-align:center;background-color:var(--bg-color);border-left:none;border-right:none;border-color:var(--main-color);color:var(--main-color);width:100%;padding-top:0;padding-bottom:0}.J9zJZG_menu::backdrop{backdrop-filter:blur(2px);background:0 0}.J9zJZG_menu>section{flex-direction:column;gap:32px;max-width:270px;margin:32px auto 40px;display:flex}.J9zJZG_menu .J9zJZG_navigation{color:var(--accent-color)}.J9zJZG_menu .J9zJZG_appearance{flex-direction:column;gap:8px;display:flex}.J9zJZG_menu select,.J9zJZG_menu button{width:100%}.X8uEDW_app{box-sizing:border-box;color:var(--main-color);background-color:var(--bg-color);flex-direction:column;justify-content:center;align-items:center;min-height:100%;display:flex}.X8uEDW_app.X8uEDW_home,.X8uEDW_app.X8uEDW_games,.X8uEDW_app.X8uEDW_themes{padding:var(--inner-padding)}@media (min-width:800px){.X8uEDW_app.X8uEDW_home,.X8uEDW_app.X8uEDW_games,.X8uEDW_app.X8uEDW_themes{padding-left:calc(100vw - 100% + var(--inner-padding))}}.X8uEDW_app.X8uEDW_play,.X8uEDW_app.X8uEDW_focus{height:100%;max-height:100dvh}@media (min-width:800px){.X8uEDW_app.X8uEDW_play>main,.X8uEDW_app.X8uEDW_focus>main{max-height:90%;margin:auto}}.X8uEDW_app>main{box-sizing:border-box;flex:auto;width:100%;height:100%}@media (min-width:800px){.X8uEDW_app>main{max-width:800px;margin:5vh 0}} +/*# sourceMappingURL=index.62ef15f1.css.map */ diff --git a/docs/index.62ef15f1.css.map b/docs/index.62ef15f1.css.map new file mode 100644 index 0000000..243dfe7 --- /dev/null +++ b/docs/index.62ef15f1.css.map @@ -0,0 +1 @@ +{"mappings":"ACCA,kVAUA,oTAUA,kRAUA,6QAUA,qTAUA,sYAUA,oYAUA,yaCrEA,gHAYA,kBCXE,6EAKA,oDAIA,gJASF,gIAKA,+DAOA,kIAUA,uDASA,8EAQA,qBAMA,mOAYA,sDAKA,wNAWA,mYAkBA,sDAMA,uBAIA,gFC1HA,6GAOA,yBACE,oEASF,mFAOA,iFAOA,+EASA,sGAOA,qGASA,iFAOA,8EAOA,4FAOA,4FAOA,2FASA,4FAOA,sGAOA,4FAOA,6FAOA,0FAOA,uFAOA,2FAOA,0FAOA,4FAOA,4FAOA,6FAOA,yFAOA,mGAOA,qGAOA,sGAOA,gGAOA,8FAOA,6FAOA,8FAOA,2FAOA,8FAOA,6FAOA,iGAOA,mGAOA,iGAOA,qGAOA,4FAOA,6FAOA,iGAOA,iGAOA,sGAOA,gGAOA,wFAOA,2FAOA,mGAOA,0FAOA,4FAOA,wFAOA,0FAOA,6FAOA,qFAOA,8FAOA,+FAOA,4FAOA,gGAOA,gGAOA,+FAOA,2FAOA,wFAOA,gGAOA,gGAOA,4FAOA,gGAOA,iGAOA,mGAOA,kGAOA,+FAOA,4FAOA,iGAOA,mGAOA,oGAOA,iGAOA,4FAOA,4FAOA,4FAOA,2FAOA,yFAOA,mGAOA,oGAOA,6FAOA,gGAOA,+FAOA,4FAOA,4FAOA,+FAOA,8FAOA,iGAOA,2FAOA,2FAOA,8FAOA,4FAOA,oGAOA,+FAOA,0FAOA,wFAOA,gGAOA,iGAOA,wFAOA,4FAOA,gGAOA,+FAOA,6FAOA,2FAOA,2FAOA,mGAOA,yGAOA,2FAOA,8FAOA,gGAOA,+FAOA,iGAOA,+FAOA,4FAOA,+FAOA,6FAOA,mGAOA,2FAOA,iGAOA,4FAOA,+FAOA,4FAOA,6FAOA,8FAOA,6FAOA,mFAOA,iGAOA,6FAOA,oGAOA,8FAOA,oGAOA,4FAOA,uFAOA,iGAOA,kGAOA,kGAOA,mGAOA,4FAOA,6FAOA,gGAOA,qGAOA,qGAOA,2FAOA,mGAOA,6FAOA,kGAOA,8FAOA,oGAOA,iFAOA,4FAOA,iGAOA,2FAOA,oGAOA,8FAOA,8FAOA,iGAOA,8FAOA,gGAOA,0FAOA,2FAOA,+FAOA,4FAOA,mGAOA,+FAOA,+FAOA,0FAOA,4FAOA,gGAOA,kGAOA,0FAOA,6FAOA,iGAOA,4FAOA,iGC1sCE,iDAIA,0BAIA,mCCTF,kDAGE,4LAQE,2FAMA,qIAKE,wJAMA,yGAKF,sDChCF,sDAIA,6FAMF,oECXA,gLAUE,gLASE,wHAME,qQAUA,+JAMA,gHCzCN,gLAYE,yBAZF,4EAiBE,qDAIA,+FAME,yBANF,6ECrBF,2EAIE,oTAaE,sFAKA,qEAIA,kFC1BJ,4FAOA,wEAIE,yBAJF,6CAQE,yFCfF,oMAaE,gEAKA,uGAQA,0DAIA,2EAMA,mDCpCF,wLAaE,wGAIE,yBAJF,mIAUA,+EAIE,yBACE,uFAQJ,wEAOE,yBAPF","sources":["index.62ef15f1.css","node_modules/@fontsource/open-sans/index.css","src/style/base.scss","src/style/controls.scss","src/themes/themes.css","src/views/GamesView/GamesView.module.scss","src/views/ThemesView/ThemesView.module.scss","src/components/Player/OutputBox/TextMessage/TextMessage.module.scss","src/components/Player/Player.module.scss","src/components/Player/InputBox/MenuButton/MenuButton.module.scss","src/components/Player/InputBox/InputBox.module.scss","src/components/Player/Status/Status.module.scss","src/components/Player/MenuOverlay/MenuOverlay.module.scss","src/style/App.module.scss"],"sourcesContent":["@font-face {\n font-family: Open Sans;\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(\"open-sans-cyrillic-ext-400-normal.5a91320c.woff2\") format(\"woff2\"), url(\"open-sans-cyrillic-ext-400-normal.650c7d3f.woff\") format(\"woff\");\n unicode-range: U+460-52F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n\n@font-face {\n font-family: Open Sans;\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(\"open-sans-cyrillic-400-normal.09174fa0.woff2\") format(\"woff2\"), url(\"open-sans-cyrillic-400-normal.2a726790.woff\") format(\"woff\");\n unicode-range: U+301, U+400-45F, U+490-491, U+4B0-4B1, U+2116;\n}\n\n@font-face {\n font-family: Open Sans;\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(\"open-sans-greek-ext-400-normal.2d040ff0.woff2\") format(\"woff2\"), url(\"open-sans-greek-ext-400-normal.ca43dd21.woff\") format(\"woff\");\n unicode-range: U+1F??;\n}\n\n@font-face {\n font-family: Open Sans;\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(\"open-sans-greek-400-normal.dc2ae4bd.woff2\") format(\"woff2\"), url(\"open-sans-greek-400-normal.3d6f6e23.woff\") format(\"woff\");\n unicode-range: U+370-3FF;\n}\n\n@font-face {\n font-family: Open Sans;\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(\"open-sans-hebrew-400-normal.942ca237.woff2\") format(\"woff2\"), url(\"open-sans-hebrew-400-normal.76fb5a51.woff\") format(\"woff\");\n unicode-range: U+590-5FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;\n}\n\n@font-face {\n font-family: Open Sans;\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(\"open-sans-vietnamese-400-normal.979797dd.woff2\") format(\"woff2\"), url(\"open-sans-vietnamese-400-normal.c15bfd40.woff\") format(\"woff\");\n unicode-range: U+102-103, U+110-111, U+128-129, U+168-169, U+1A0-1A1, U+1AF-1B0, U+300-301, U+303-304, U+308-309, U+323, U+329, U+1EA0-1EF9, U+20AB;\n}\n\n@font-face {\n font-family: Open Sans;\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(\"open-sans-latin-ext-400-normal.b040be2e.woff2\") format(\"woff2\"), url(\"open-sans-latin-ext-400-normal.9030d190.woff\") format(\"woff\");\n unicode-range: U+100-2AF, U+300-301, U+303-304, U+308-309, U+323, U+329, U+1E??, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n\n@font-face {\n font-family: Open Sans;\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(\"open-sans-latin-400-normal.7cf38e2c.woff2\") format(\"woff2\"), url(\"open-sans-latin-400-normal.36b20d2c.woff\") format(\"woff\");\n unicode-range: U+??, U+131, U+152-153, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+300-301, U+303-304, U+308-309, U+323, U+329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\nhtml, body {\n background: #000;\n height: 100%;\n margin: 0;\n font-family: Open Sans, sans-serif;\n font-size: 18px;\n line-height: 27px;\n}\n\n#root {\n height: 100%;\n}\n\nbody * {\n scrollbar-color: var(--main-color) var(--bg-color);\n scrollbar-width: thin;\n}\n\nbody ::-webkit-scrollbar {\n width: var(--inner-padding);\n}\n\nbody ::-webkit-scrollbar-thumb {\n background-color: var(--main-color);\n border: calc(.5 * var(--inner-padding)) solid var(--bg-color);\n border-left-width: 0;\n}\n\n:focus-visible {\n outline: calc(.5 * var(--separator-width)) solid var(--main-color);\n outline-offset: calc(1px + var(--separator-width));\n}\n\n::selection {\n color: var(--bg-color);\n background: var(--main-color);\n}\n\na, summary {\n cursor: pointer;\n border-bottom: var(--separator-width) solid currentColor;\n color: inherit;\n text-decoration: none;\n display: inline;\n}\n\na:focus, a:hover, summary:focus, summary:hover {\n opacity: .8;\n}\n\nhr {\n border: 0;\n border-top: var(--separator-width) solid var(--main-color);\n height: 0;\n}\n\nul {\n list-style: square;\n}\n\nbutton {\n border: var(--separator-width) solid var(--main-color);\n background-color: var(--bg-color);\n color: var(--main-color);\n padding: var(--inner-padding) calc(4 * var(--inner-padding));\n font-family: inherit;\n font-size: inherit;\n cursor: pointer;\n}\n\ninput::placeholder {\n color: var(--main-color);\n opacity: .8;\n}\n\ninput, select {\n box-sizing: border-box;\n padding: calc(.5 * var(--inner-padding)) var(--inner-padding);\n color: var(--main-color);\n background-color: var(--bg-color);\n border: var(--separator-width) solid var(--main-color);\n font: inherit;\n}\n\nselect {\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n background-image: repeating-linear-gradient(315deg, var(--bg-color), var(--bg-color) var(--inner-padding), var(--main-color) var(--inner-padding), var(--main-color) calc(var(--inner-padding) + var(--separator-width)), var(--bg-color) calc(var(--inner-padding) + var(--separator-width)), var(--bg-color) 100%);\n border-radius: 0;\n width: 250px;\n}\n\nlabel {\n width: 100%;\n max-width: 400px;\n display: inline-block;\n}\n\nlabel input {\n width: 100%;\n}\n\ninput[type=\"file\"] {\n text-indent: -100%;\n cursor: pointer;\n font-size: 0;\n position: relative;\n}\n\nbody {\n --outer-padding: 0px;\n --border-width: 0px;\n --separator-width: 2px;\n --inner-padding: 8px;\n --input-box-margin: 0px;\n}\n\n@media (min-width: 800px) {\n body {\n --outer-padding: 8px;\n --border-width: 2px;\n --input-box-margin: 8px;\n }\n}\n\n.light {\n --bg-color: #fff;\n --main-color: #000c;\n --accent-color: #000c;\n --input-color: #000c;\n}\n\n.dim {\n --bg-color: #333;\n --main-color: #fffc;\n --accent-color: #fffc;\n --input-color: #fffc;\n}\n\n.dark {\n --bg-color: #000;\n --main-color: #fff;\n --accent-color: #fff;\n --input-color: #fff;\n}\n\n.solarized-light {\n --bg-color: #eee8d5;\n --main-color: #586e75;\n --accent-color: #b58900;\n --input-color: #2aa198;\n}\n\n.solarized-dark {\n --bg-color: #073642;\n --main-color: #93a1a1;\n --accent-color: #b58900;\n --input-color: #2aa198;\n}\n\n.emo {\n --bg-color: #4d4d4d;\n --main-color: #f7a;\n --accent-color: #f7a;\n --input-color: #f7a;\n}\n\n.redrum {\n --bg-color: #000;\n --main-color: red;\n --accent-color: red;\n --input-color: red;\n}\n\n.toxin {\n --bg-color: #606060;\n --main-color: #d6ed17;\n --accent-color: #d6ed17;\n --input-color: #d6ed17;\n}\n\n.valve {\n --bg-color: #292929;\n --main-color: #fb7e14;\n --accent-color: #fb7e14;\n --input-color: #fb7e14;\n}\n\n.wasp {\n --bg-color: #f9d142;\n --main-color: #292826;\n --accent-color: #292826;\n --input-color: #292826;\n}\n\n.a8008 {\n --bg-color: #333a45;\n --main-color: #e9ecf0;\n --accent-color: #f44c7f;\n --input-color: #939eae;\n}\n\n.a80s_after_dark {\n --bg-color: #1b1d36;\n --main-color: #e1e7ec;\n --accent-color: #fca6d1;\n --input-color: #99d6ea;\n}\n\n.a9009 {\n --bg-color: #eeebe2;\n --main-color: #080909;\n --accent-color: #080909;\n --input-color: #99947f;\n}\n\n.aether {\n --bg-color: #101820;\n --main-color: #eedaea;\n --accent-color: #eedaea;\n --input-color: #cf6bdd;\n}\n\n.alduin {\n --bg-color: #1c1c1c;\n --main-color: #f5f3ed;\n --accent-color: #dfd7af;\n --input-color: #444;\n}\n\n.alpine {\n --bg-color: #6c687f;\n --main-color: #fff;\n --accent-color: #fff;\n --input-color: #9994b8;\n}\n\n.arch {\n --bg-color: #0c0d11;\n --main-color: #f6f5f5;\n --accent-color: #7ebab5;\n --input-color: #454864;\n}\n\n.aurora {\n --bg-color: #011926;\n --main-color: #fff;\n --accent-color: #00e980;\n --input-color: #245c69;\n}\n\n.beach {\n --bg-color: #ffeead;\n --main-color: #5b7869;\n --accent-color: #96ceb4;\n --input-color: #ffcc5c;\n}\n\n.bento {\n --bg-color: #2d394d;\n --main-color: #fffaf8;\n --accent-color: #ff7a90;\n --input-color: #4a768d;\n}\n\n.bingsu {\n --bg-color: #b8a7aa;\n --main-color: #ebe6ea;\n --accent-color: #83616e;\n --input-color: #48373d;\n}\n\n.bliss {\n --bg-color: #262727;\n --main-color: #fff;\n --accent-color: #f0d3c9;\n --input-color: #665957;\n}\n\n.blue_dolphin {\n --bg-color: #003950;\n --main-color: #82eaff;\n --accent-color: #ffcefb;\n --input-color: #00e4ff;\n}\n\n.blueberry_dark {\n --bg-color: #212b42;\n --main-color: #91b4d5;\n --accent-color: #add7ff;\n --input-color: #5c7da5;\n}\n\n.blueberry_light {\n --bg-color: #dae0f5;\n --main-color: #678198;\n --accent-color: #506477;\n --input-color: #92a4be;\n}\n\n.botanical {\n --bg-color: #7b9c98;\n --main-color: #eaf1f3;\n --accent-color: #eaf1f3;\n --input-color: #495755;\n}\n\n.bouquet {\n --bg-color: #173f35;\n --main-color: #e9e0d2;\n --accent-color: #eaa09c;\n --input-color: #408e7b;\n}\n\n.breeze {\n --bg-color: #e8d5c4;\n --main-color: #1b4c5e;\n --accent-color: #7d67a9;\n --input-color: #3a98b9;\n}\n\n.bushido {\n --bg-color: #242933;\n --main-color: #f6f0e9;\n --accent-color: #ec4c56;\n --input-color: #596172;\n}\n\n.cafe {\n --bg-color: #ceb18d;\n --main-color: #14120f;\n --accent-color: #14120f;\n --input-color: #d4d2d1;\n}\n\n.camping {\n --bg-color: #faf1e4;\n --main-color: #3c403b;\n --accent-color: #618c56;\n --input-color: #c2b8aa;\n}\n\n.carbon {\n --bg-color: #313131;\n --main-color: #f5e6c8;\n --accent-color: #f66e0d;\n --input-color: #616161;\n}\n\n.catppuccin {\n --bg-color: #1e1e2e;\n --main-color: #d9e0ee;\n --accent-color: #abe9b3;\n --input-color: #575268;\n}\n\n.chaos_theory {\n --bg-color: #141221;\n --main-color: #dde5ed;\n --accent-color: #fd77d7;\n --input-color: #676e8a;\n}\n\n.cheesecake {\n --bg-color: #fdf0d5;\n --main-color: #3a3335;\n --accent-color: #8e2949;\n --input-color: #d91c81;\n}\n\n.cherry_blossom {\n --bg-color: #323437;\n --main-color: #d1d0c5;\n --accent-color: #d65ccc;\n --input-color: #787d82;\n}\n\n.comfy {\n --bg-color: #4a5b6e;\n --main-color: #f5efee;\n --accent-color: #f8cdc6;\n --input-color: #9ec1cc;\n}\n\n.copper {\n --bg-color: #442f29;\n --main-color: #e7e0de;\n --accent-color: #b46a55;\n --input-color: #7ebab5;\n}\n\n.creamsicle {\n --bg-color: #ff9869;\n --main-color: #fcfcf8;\n --accent-color: #fcfcf8;\n --input-color: #ff661f;\n}\n\n.cyberspace {\n --bg-color: #181c18;\n --main-color: #c2fbe1;\n --accent-color: #00ce7c;\n --input-color: #9578d3;\n}\n\n.dark_magic_girl {\n --bg-color: #091f2c;\n --main-color: #a288d9;\n --accent-color: #f5b1cc;\n --input-color: #93e8d3;\n}\n\n.dark_note {\n --bg-color: #1f1f1f;\n --main-color: #d2dff4;\n --accent-color: #f2c17b;\n --input-color: #768f95;\n}\n\n.darling {\n --bg-color: #fec8cd;\n --main-color: #fff;\n --accent-color: #fff;\n --input-color: #a30000;\n}\n\n.deku {\n --bg-color: #058b8c;\n --main-color: #f7f2ea;\n --accent-color: #b63530;\n --input-color: #255458;\n}\n\n.desert_oasis {\n --bg-color: #fff2d5;\n --main-color: #332800;\n --accent-color: #d19d01;\n --input-color: #0061fe;\n}\n\n.dev {\n --bg-color: #1b2028;\n --main-color: #ccccb5;\n --accent-color: #23a9d5;\n --input-color: #4b5975;\n}\n\n.diner {\n --bg-color: #537997;\n --main-color: #dfdbc8;\n --accent-color: #c3af5b;\n --input-color: #445c7f;\n}\n\n.dino {\n --bg-color: #fff;\n --main-color: #1d221f;\n --accent-color: #40d672;\n --input-color: #d5d5d5;\n}\n\n.dmg {\n --bg-color: #dadbdc;\n --main-color: #414141;\n --accent-color: #ae185e;\n --input-color: #3846b1;\n}\n\n.dollar {\n --bg-color: #e4e4d4;\n --main-color: #555a56;\n --accent-color: #6b886b;\n --input-color: #8a9b69;\n}\n\n.dots {\n --bg-color: #121520;\n --main-color: #fff;\n --accent-color: #fff;\n --input-color: #676e8a;\n}\n\n.dracula {\n --bg-color: #282a36;\n --main-color: #f8f8f2;\n --accent-color: #bd93f9;\n --input-color: #6272a4;\n}\n\n.drowning {\n --bg-color: #191826;\n --main-color: #9393a7;\n --accent-color: #4a6fb5;\n --input-color: #50688c;\n}\n\n.dualshot {\n --bg-color: #737373;\n --main-color: #212222;\n --accent-color: #212222;\n --input-color: #aaa;\n}\n\n.earthsong {\n --bg-color: #292521;\n --main-color: #e6c7a8;\n --accent-color: #509452;\n --input-color: #f5ae2d;\n}\n\n.everblush {\n --bg-color: #141b1e;\n --main-color: #dadada;\n --accent-color: #8ccf7e;\n --input-color: #838887;\n}\n\n.evil_eye {\n --bg-color: #0084c2;\n --main-color: #171718;\n --accent-color: #f7f2ea;\n --input-color: #01589f;\n}\n\n.ez_mode {\n --bg-color: #0068c6;\n --main-color: #fff;\n --accent-color: #fa62d5;\n --input-color: #138bf7;\n}\n\n.fire {\n --bg-color: #0f0000;\n --main-color: #fff;\n --accent-color: #b31313;\n --input-color: #683434;\n}\n\n.fledgling {\n --bg-color: #3b363f;\n --main-color: #e6d5d3;\n --accent-color: #fc6e83;\n --input-color: #8e5568;\n}\n\n.fleuriste {\n --bg-color: #c6b294;\n --main-color: #091914;\n --accent-color: #405a52;\n --input-color: #64374d;\n}\n\n.froyo {\n --bg-color: #e1dacb;\n --main-color: #7b7d7d;\n --accent-color: #7b7d7d;\n --input-color: #b29c5e;\n}\n\n.frozen_llama {\n --bg-color: #9bf2ea;\n --main-color: #fff;\n --accent-color: #6d44a6;\n --input-color: #b690fd;\n}\n\n.fruit_chew {\n --bg-color: #d6d3d6;\n --main-color: #282528;\n --accent-color: #5c1e5f;\n --input-color: #b49cb5;\n}\n\n.fundamentals {\n --bg-color: #727474;\n --main-color: #131313;\n --accent-color: #7fa482;\n --input-color: #cac4be;\n}\n\n.future_funk {\n --bg-color: #2e1a47;\n --main-color: #f7f2ea;\n --accent-color: #f7f2ea;\n --input-color: #c18fff;\n}\n\n.godspeed {\n --bg-color: #eae4cf;\n --main-color: #646669;\n --accent-color: #9abbcd;\n --input-color: #ada998;\n}\n\n.graen {\n --bg-color: #303c36;\n --main-color: #a59682;\n --accent-color: #a59682;\n --input-color: #181d1a;\n}\n\n.grand_prix {\n --bg-color: #36475c;\n --main-color: #c1c7d7;\n --accent-color: #c0d036;\n --input-color: #5c6c80;\n}\n\n.gruvbox_dark {\n --bg-color: #282828;\n --main-color: #ebdbb2;\n --accent-color: #d79921;\n --input-color: #665c54;\n}\n\n.gruvbox_light {\n --bg-color: #fbf1c7;\n --main-color: #3c3836;\n --accent-color: #689d6a;\n --input-color: #a89984;\n}\n\n.hammerhead {\n --bg-color: #030613;\n --main-color: #e2f1f5;\n --accent-color: #4fcdb9;\n --input-color: #213c53;\n}\n\n.hanok {\n --bg-color: #d8d2c3;\n --main-color: #393b3b;\n --accent-color: #513a2a;\n --input-color: #8b6f5c;\n}\n\n.hedge {\n --bg-color: #415e31;\n --main-color: #f7f1d6;\n --accent-color: #6a994e;\n --input-color: #ede5b4;\n}\n\n.honey {\n --bg-color: #f2aa00;\n --main-color: #f3eecb;\n --accent-color: #fff546;\n --input-color: #a66b00;\n}\n\n.horizon {\n --bg-color: #1c1e26;\n --main-color: #bbb;\n --accent-color: #c4a88a;\n --input-color: #db886f;\n}\n\n.husqy {\n --bg-color: #000;\n --main-color: #ebd7ff;\n --accent-color: #c58aff;\n --input-color: #972fff;\n}\n\n.iceberg_dark {\n --bg-color: #161821;\n --main-color: #c6c8d1;\n --accent-color: #84a0c6;\n --input-color: #595e76;\n}\n\n.iceberg_light {\n --bg-color: #e8e9ec;\n --main-color: #33374c;\n --accent-color: #2d539e;\n --input-color: #adb1c4;\n}\n\n.ishtar {\n --bg-color: #202020;\n --main-color: #fae1c3;\n --accent-color: #91170c;\n --input-color: #847869;\n}\n\n.iv_clover {\n --bg-color: #a0a0a0;\n --main-color: #3b2d3b;\n --accent-color: #573e40;\n --input-color: #353535;\n}\n\n.iv_spade {\n --bg-color: #0c0c0c;\n --main-color: #d3c2c3;\n --accent-color: #b7976a;\n --input-color: #404040;\n}\n\n.joker {\n --bg-color: #1a0e25;\n --main-color: #e9e2f5;\n --accent-color: #99de1e;\n --input-color: #7554a3;\n}\n\n.laser {\n --bg-color: #221b44;\n --main-color: #dbe7e8;\n --accent-color: #009eaf;\n --input-color: #b82356;\n}\n\n.lavender {\n --bg-color: #ada6c2;\n --main-color: #2f2a41;\n --accent-color: #e4e3e9;\n --input-color: #e4e3e9;\n}\n\n.leather {\n --bg-color: #a86948;\n --main-color: #ffe4bc;\n --accent-color: #ffe4bc;\n --input-color: #81482b;\n}\n\n.lil_dragon {\n --bg-color: #ebe1ef;\n --main-color: #212b43;\n --accent-color: #8a5bd6;\n --input-color: #a28db8;\n}\n\n.lime {\n --bg-color: #7c878e;\n --main-color: #bfcfdc;\n --accent-color: #93c247;\n --input-color: #4b5257;\n}\n\n.luna {\n --bg-color: #221c35;\n --main-color: #ffe3eb;\n --accent-color: #f67599;\n --input-color: #5a3a7e;\n}\n\n.magic_girl {\n --bg-color: #fff;\n --main-color: #00ac8c;\n --accent-color: #f5b1cc;\n --input-color: #93e8d3;\n}\n\n.mashu {\n --bg-color: #2b2b2c;\n --main-color: #f1e2e4;\n --accent-color: #76689a;\n --input-color: #d8a0a6;\n}\n\n.matcha_moccha {\n --bg-color: #523525;\n --main-color: #ecddcc;\n --accent-color: #7ec160;\n --input-color: #9e6749;\n}\n\n.material {\n --bg-color: #263238;\n --main-color: #e6edf3;\n --accent-color: #80cbc4;\n --input-color: #4c6772;\n}\n\n.matrix {\n --bg-color: #000;\n --main-color: #d1ffcd;\n --accent-color: #15ff00;\n --input-color: #006500;\n}\n\n.menthol {\n --bg-color: #00c18c;\n --main-color: #fff;\n --accent-color: #fff;\n --input-color: #186544;\n}\n\n.metaverse {\n --bg-color: #232323;\n --main-color: #e8e8e8;\n --accent-color: #d82934;\n --input-color: #5e5e5e;\n}\n\n.metropolis {\n --bg-color: #0f1f2c;\n --main-color: #e4edf1;\n --accent-color: #56c3b7;\n --input-color: #326984;\n}\n\n.mexican {\n --bg-color: #f8ad34;\n --main-color: #eee;\n --accent-color: #b12189;\n --input-color: #333;\n}\n\n.miami {\n --bg-color: #f35588;\n --main-color: #f0e9ec;\n --accent-color: #05dfd7;\n --input-color: #94294c;\n}\n\n.miami_nights {\n --bg-color: #18181a;\n --main-color: #fff;\n --accent-color: #e4609b;\n --input-color: #47bac0;\n}\n\n.midnight {\n --bg-color: #0b0e13;\n --main-color: #9fadc6;\n --accent-color: #60759f;\n --input-color: #394760;\n}\n\n.milkshake {\n --bg-color: #fff;\n --main-color: #212b43;\n --accent-color: #212b43;\n --input-color: #62cfe6;\n}\n\n.mint {\n --bg-color: #05385b;\n --main-color: #edf5e1;\n --accent-color: #5cdb95;\n --input-color: #20688a;\n}\n\n.mizu {\n --bg-color: #afcbdd;\n --main-color: #1a2633;\n --accent-color: #fcfbf6;\n --input-color: #85a5bb;\n}\n\n.modern_dolch {\n --bg-color: #2d2e30;\n --main-color: #e3e6eb;\n --accent-color: #7eddd3;\n --input-color: #54585c;\n}\n\n.modern_dolch_light {\n --bg-color: #dbdbdb;\n --main-color: #454545;\n --accent-color: #8fd1c3;\n --input-color: #acacac;\n}\n\n.modern_ink {\n --bg-color: #fff;\n --main-color: #000;\n --accent-color: #ff360d;\n --input-color: #b7b7b7;\n}\n\n.monokai {\n --bg-color: #272822;\n --main-color: #e2e2dc;\n --accent-color: #a6e22e;\n --input-color: #e6db74;\n}\n\n.moonlight {\n --bg-color: #191f28;\n --main-color: #ccccb5;\n --accent-color: #c69f68;\n --input-color: #4b5975;\n}\n\n.mountain {\n --bg-color: #0f0f0f;\n --main-color: #e7e7e7;\n --accent-color: #e7e7e7;\n --input-color: #4c4c4c;\n}\n\n.mr_sleeves {\n --bg-color: #d1d7da;\n --main-color: #1d1d1d;\n --accent-color: #daa99b;\n --input-color: #9a9fa1;\n}\n\n.ms_cupcakes {\n --bg-color: #fff;\n --main-color: #0a282f;\n --accent-color: #5ed5f3;\n --input-color: #d64090;\n}\n\n.muted {\n --bg-color: #525252;\n --main-color: #b1e4e3;\n --accent-color: #c5b4e3;\n --input-color: #939eae;\n}\n\n.nautilus {\n --bg-color: #132237;\n --main-color: #1cbaac;\n --accent-color: #ebb723;\n --input-color: #0b4c6c;\n}\n\n.nebula {\n --bg-color: #212135;\n --main-color: #838686;\n --accent-color: #be3c88;\n --input-color: #19b3b8;\n}\n\n.night_runner {\n --bg-color: #212121;\n --main-color: #e8e8e8;\n --accent-color: #feff04;\n --input-color: #5c4a9c;\n}\n\n.nord {\n --bg-color: #242933;\n --main-color: #d8dee9;\n --accent-color: #d8dee9;\n --input-color: #617b94;\n}\n\n.nord_light {\n --bg-color: #eceff4;\n --main-color: #8fbcbb;\n --accent-color: #8fbcbb;\n --input-color: #6a7791;\n}\n\n.norse {\n --bg-color: #242425;\n --main-color: #ccc2b1;\n --accent-color: #2b5f6d;\n --input-color: #505b5e;\n}\n\n.oblivion {\n --bg-color: #313231;\n --main-color: #f7f5f1;\n --accent-color: #a5a096;\n --input-color: #5d6263;\n}\n\n.olive {\n --bg-color: #e9e5cc;\n --main-color: #373731;\n --accent-color: #92946f;\n --input-color: #b7b39e;\n}\n\n.olivia {\n --bg-color: #1c1b1d;\n --main-color: #f2efed;\n --accent-color: #deaf9d;\n --input-color: #4e3e3e;\n}\n\n.onedark {\n --bg-color: #2f343f;\n --main-color: #98c379;\n --accent-color: #61afef;\n --input-color: #eceff4;\n}\n\n.our_theme {\n --bg-color: #ce1226;\n --main-color: #fff;\n --accent-color: #fcd116;\n --input-color: #6d0f19;\n}\n\n.paper {\n --bg-color: #eee;\n --main-color: #444;\n --accent-color: #444;\n --input-color: #b2b2b2;\n}\n\n.passion_fruit {\n --bg-color: #7c2142;\n --main-color: #fff;\n --accent-color: #f4a3b4;\n --input-color: #9994b8;\n}\n\n.pastel {\n --bg-color: #e0b2bd;\n --main-color: #6d5c6f;\n --accent-color: #fbf4b6;\n --input-color: #b4e9ff;\n}\n\n.peach_blossom {\n --bg-color: #292929;\n --main-color: #fecea8;\n --accent-color: #99b898;\n --input-color: #616161;\n}\n\n.peaches {\n --bg-color: #e0d7c1;\n --main-color: #5f4c41;\n --accent-color: #dd7a5f;\n --input-color: #e7b28e;\n}\n\n.pink_lemonade {\n --bg-color: #f6d992;\n --main-color: #fcfcf8;\n --accent-color: #f6a192;\n --input-color: #f6b092;\n}\n\n.pulse {\n --bg-color: #181818;\n --main-color: #e5f4f4;\n --accent-color: #17b8bd;\n --input-color: #53565a;\n}\n\n.purpurite {\n --bg-color: #1f2533;\n --main-color: #99f;\n --accent-color: #99f;\n --input-color: #cdf;\n}\n\n.red_dragon {\n --bg-color: #1a0b0c;\n --main-color: #4a4d4e;\n --accent-color: #ff3a32;\n --input-color: #e2a528;\n}\n\n.red_samurai {\n --bg-color: #84202c;\n --main-color: #e2dad0;\n --accent-color: #c79e6e;\n --input-color: #55131b;\n}\n\n.repose_dark {\n --bg-color: #2f3338;\n --main-color: #d6d2bc;\n --accent-color: #d6d2bc;\n --input-color: #8f8e84;\n}\n\n.repose_light {\n --bg-color: #efead0;\n --main-color: #333538;\n --accent-color: #5f605e;\n --input-color: #8f8e84;\n}\n\n.retro {\n --bg-color: #dad3c1;\n --main-color: #1d1b17;\n --accent-color: #1d1b17;\n --input-color: #918b7d;\n}\n\n.retrocast {\n --bg-color: #07737a;\n --main-color: #fff;\n --accent-color: #88dbdf;\n --input-color: #f3e03b;\n}\n\n.rose_pine {\n --bg-color: #1f1d27;\n --main-color: #e0def4;\n --accent-color: #9ccfd8;\n --input-color: #c4a7e7;\n}\n\n.rose_pine_dawn {\n --bg-color: #fffaf3;\n --main-color: #286983;\n --accent-color: #56949f;\n --input-color: #c4a7e7;\n}\n\n.rose_pine_moon {\n --bg-color: #2a273f;\n --main-color: #e0def4;\n --accent-color: #9ccfd8;\n --input-color: #c4a7e7;\n}\n\n.rudy {\n --bg-color: #1a2b3e;\n --main-color: #c9c8bf;\n --accent-color: #af8f5c;\n --input-color: #3a506c;\n}\n\n.ryujinscales {\n --bg-color: #081426;\n --main-color: #ffe4bc;\n --accent-color: #f17754;\n --input-color: #ffbc90;\n}\n\n.serika {\n --bg-color: #e1e1e3;\n --main-color: #323437;\n --accent-color: #e2b714;\n --input-color: #aaaeb3;\n}\n\n.serika_dark {\n --bg-color: #323437;\n --main-color: #d1d0c5;\n --accent-color: #e2b714;\n --input-color: #646669;\n}\n\n.sewing_tin {\n --bg-color: #241963;\n --main-color: #fff;\n --accent-color: #f2ce83;\n --input-color: #446ad5;\n}\n\n.sewing_tin_light {\n --bg-color: #fff;\n --main-color: #2d2076;\n --accent-color: #2d2076;\n --input-color: #385eca;\n}\n\n.shadow {\n --bg-color: #000;\n --main-color: #eee;\n --accent-color: #eee;\n --input-color: #444;\n}\n\n.shoko {\n --bg-color: #ced7e0;\n --main-color: #3b4c58;\n --accent-color: #81c4dd;\n --input-color: #7599b1;\n}\n\n.slambook {\n --bg-color: #fffdde;\n --main-color: #125d98;\n --accent-color: #13005a;\n --input-color: #1c82adc4;\n}\n\n.snes {\n --bg-color: #bfbec2;\n --main-color: #2e2e2e;\n --accent-color: #553d94;\n --input-color: #9f8ad4;\n}\n\n.soaring_skies {\n --bg-color: #fff9f2;\n --main-color: #1d1e1e;\n --accent-color: #55c6f0;\n --input-color: #1e107a;\n}\n\n.sonokai {\n --bg-color: #2c2e34;\n --main-color: #e2e2e3;\n --accent-color: #9ed072;\n --input-color: #e7c664;\n}\n\n.stealth {\n --bg-color: #010203;\n --main-color: #383e42;\n --accent-color: #383e42;\n --input-color: #5e676e;\n}\n\n.strawberry {\n --bg-color: #f37f83;\n --main-color: #fcfcf8;\n --accent-color: #fcfcf8;\n --input-color: #e53c58;\n}\n\n.striker {\n --bg-color: #124883;\n --main-color: #d6dbd9;\n --accent-color: #d7dcda;\n --input-color: #0f2d4e;\n}\n\n.superuser {\n --bg-color: #262a33;\n --main-color: #e5f7ef;\n --accent-color: #43ffaf;\n --input-color: #526777;\n}\n\n.sweden {\n --bg-color: #0058a3;\n --main-color: #fff;\n --accent-color: #ffcc02;\n --input-color: #57abdb;\n}\n\n.taro {\n --bg-color: #b3baff;\n --main-color: #130f1a;\n --accent-color: #130f1a;\n --input-color: #6f6c91;\n}\n\n.terminal {\n --bg-color: #191a1b;\n --main-color: #e7eae0;\n --accent-color: #79a617;\n --input-color: #48494b;\n}\n\n.terra {\n --bg-color: #0c100e;\n --main-color: #f0edd1;\n --accent-color: #89c559;\n --input-color: #436029;\n}\n\n.terror_below {\n --bg-color: #0b1e1a;\n --main-color: #dceae5;\n --accent-color: #66ac92;\n --input-color: #015c53;\n}\n\n.tiramisu {\n --bg-color: #cfc6b9;\n --main-color: #7d5448;\n --accent-color: #c0976f;\n --input-color: #c0976f;\n}\n\n.trackday {\n --bg-color: #464d66;\n --main-color: #cfcfcf;\n --accent-color: #e0513e;\n --input-color: #5c7eb9;\n}\n\n.trance {\n --bg-color: #00021b;\n --main-color: #fff;\n --accent-color: #e51376;\n --input-color: #3c4c79;\n}\n\n.tron_orange {\n --bg-color: #0d1c1c;\n --main-color: #fff;\n --accent-color: #f0e800;\n --input-color: #f60;\n}\n\n.vaporwave {\n --bg-color: #a4a7ea;\n --main-color: #f1ebf1;\n --accent-color: #e368da;\n --input-color: #7c7faf;\n}\n\n.viridescent {\n --bg-color: #2c3333;\n --main-color: #e9f5db;\n --accent-color: #95d5b2;\n --input-color: #84a98c;\n}\n\n.voc {\n --bg-color: #190618;\n --main-color: #eeeae4;\n --accent-color: #e0caac;\n --input-color: #4c1e48;\n}\n\n.vscode {\n --bg-color: #1e1e1e;\n --main-color: #d4d4d4;\n --accent-color: #007acc;\n --input-color: #4d4d4d;\n}\n\n.watermelon {\n --bg-color: #1f4437;\n --main-color: #cdc6bc;\n --accent-color: #d6686f;\n --input-color: #3e7a65;\n}\n\n.wavez {\n --bg-color: #1c292f;\n --main-color: #e9efe6;\n --accent-color: #6bde3b;\n --input-color: #1f5e6b;\n}\n\n.witch_girl {\n --bg-color: #f3dbda;\n --main-color: #56786a;\n --accent-color: #56786a;\n --input-color: #ddb4a7;\n}\n\n.-soi4G_games .-soi4G_tutorial {\n margin-block: 64px;\n}\n\n.-soi4G_games h4 {\n margin: 0;\n}\n\n.-soi4G_games li {\n margin-bottom: 1em;\n}\n\n.qdlvgW_themes {\n --current-border: var(--main-color);\n}\n\n.qdlvgW_themes .qdlvgW_themePreview {\n border: 2px solid var(--current-border);\n padding: calc(2 * var(--inner-padding));\n background-color: var(--bg-color);\n color: var(--main-color);\n margin-bottom: 32px;\n}\n\n.qdlvgW_themes .qdlvgW_themePreview.qdlvgW_current {\n border: none;\n margin-block: 64px;\n padding: 0;\n}\n\n.qdlvgW_themes .qdlvgW_themePreview .qdlvgW_output {\n border: 2px solid var(--main-color);\n padding: var(--inner-padding);\n margin-bottom: 8px;\n}\n\n.qdlvgW_themes .qdlvgW_themePreview .qdlvgW_output .qdlvgW_message.qdlvgW_subheader {\n color: var(--accent-color);\n text-transform: capitalize;\n font-weight: bold;\n}\n\n.qdlvgW_themes .qdlvgW_themePreview .qdlvgW_output .qdlvgW_message.qdlvgW_input {\n color: var(--input-color);\n}\n\n.qdlvgW_themes .qdlvgW_themePreview button {\n width: 100%;\n}\n\n.hBGgUq_message.hBGgUq_input {\n color: var(--input-color);\n}\n\n.hBGgUq_message.hBGgUq_emphasized, .hBGgUq_message.hBGgUq_subheader {\n color: var(--accent-color);\n}\n\n.hBGgUq_scrollTarget {\n scroll-margin-block-start: var(--inner-padding);\n}\n\n.PwGQsW_elseifplayer {\n box-sizing: border-box;\n background-color: var(--bg-color);\n color: var(--main-color);\n padding: var(--outer-padding);\n flex-direction: column;\n height: 100%;\n display: flex;\n}\n\n.PwGQsW_elseifplayer .PwGQsW_output {\n overflow-wrap: break-word;\n border: var(--border-width) solid var(--main-color);\n flex-direction: column;\n flex-grow: 2;\n display: flex;\n overflow-y: hidden;\n}\n\n.PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer {\n box-sizing: border-box;\n padding: var(--inner-padding);\n overflow-y: scroll;\n}\n\n.PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer:empty, .PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer > br:first-child, .PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer > br:last-child, .PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer > br + br + br {\n display: none;\n}\n\n.PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer.PwGQsW_gridBuffer {\n border-bottom: var(--separator-width) solid var(--main-color);\n flex-shrink: 0;\n max-height: 100%;\n}\n\n.PwGQsW_elseifplayer .PwGQsW_output .PwGQsW_buffer.PwGQsW_textBuffer {\n scroll-behavior: smooth;\n outline: none;\n flex: 2;\n}\n\n.gUkI1a_menuButton {\n outline-offset: -8px;\n background: none;\n border: none;\n justify-content: center;\n align-items: center;\n height: 100%;\n padding: 0;\n display: inline-flex;\n position: absolute;\n right: 0;\n}\n\n@media (max-width: 800px) {\n .gUkI1a_menuButton {\n padding: 0 calc(.5 * var(--inner-padding));\n overflow: hidden;\n }\n}\n\n.gUkI1a_menuButton:focus-visible {\n outline-offset: -4px;\n}\n\n.gUkI1a_menuButton .gUkI1a_menuIcon {\n fill: none;\n stroke: currentColor;\n stroke-width: 2px;\n height: 32px;\n}\n\n@media (max-width: 800px) {\n .gUkI1a_menuButton .gUkI1a_menuIcon {\n fill: currentColor;\n transform: scaleX(2)scaleY(.5);\n }\n}\n\n.LdLucW_inputControls {\n margin-top: var(--input-box-margin);\n position: relative;\n}\n\n.LdLucW_inputControls .LdLucW_inputBox {\n font: inherit;\n color: inherit;\n background-color: var(--bg-color);\n border: var(--border-width) solid var(--main-color);\n border-top: var(--separator-width) solid var(--main-color);\n padding: var(--inner-padding);\n padding-right: calc(4 * var(--inner-padding));\n outline: 0;\n width: 100%;\n margin: 0;\n}\n\n.LdLucW_inputControls .LdLucW_inputBox::placeholder {\n color: var(--main-color);\n opacity: 1;\n}\n\n.LdLucW_inputControls .LdLucW_inputBox:focus::placeholder {\n opacity: .5;\n}\n\n.LdLucW_inputControls .LdLucW_inputBox::-webkit-search-cancel-button {\n display: none;\n}\n\n@keyframes zi213q_dots0123 {\n 0% {\n content: \"\";\n }\n\n 33% {\n content: \".\";\n }\n\n 66% {\n content: \"..\";\n }\n\n 100% {\n content: \"...\";\n }\n}\n\n.zi213q_status {\n word-break: break-word;\n padding-block: var(--inner-padding);\n}\n\n@media (max-width: 800px) {\n .zi213q_status {\n padding: var(--inner-padding);\n }\n}\n\n.zi213q_status.zi213q_loading > div:after {\n content: \"\";\n animation: 1s infinite zi213q_dots0123;\n}\n\n.J9zJZG_menu {\n text-align: center;\n background-color: var(--bg-color);\n border-left: none;\n border-right: none;\n border-color: var(--main-color);\n color: var(--main-color);\n width: 100%;\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.J9zJZG_menu::backdrop {\n -webkit-backdrop-filter: blur(2px);\n backdrop-filter: blur(2px);\n background: none;\n}\n\n.J9zJZG_menu > section {\n flex-direction: column;\n gap: 32px;\n max-width: 270px;\n margin: 32px auto 40px;\n display: flex;\n}\n\n.J9zJZG_menu .J9zJZG_navigation {\n color: var(--accent-color);\n}\n\n.J9zJZG_menu .J9zJZG_appearance {\n flex-direction: column;\n gap: 8px;\n display: flex;\n}\n\n.J9zJZG_menu select, .J9zJZG_menu button {\n width: 100%;\n}\n\n.X8uEDW_app {\n box-sizing: border-box;\n color: var(--main-color);\n background-color: var(--bg-color);\n flex-direction: column;\n justify-content: center;\n align-items: center;\n min-height: 100%;\n display: flex;\n}\n\n.X8uEDW_app.X8uEDW_home, .X8uEDW_app.X8uEDW_games, .X8uEDW_app.X8uEDW_themes {\n padding: var(--inner-padding);\n}\n\n@media (min-width: 800px) {\n .X8uEDW_app.X8uEDW_home, .X8uEDW_app.X8uEDW_games, .X8uEDW_app.X8uEDW_themes {\n padding-left: calc(100vw - 100% + var(--inner-padding));\n }\n}\n\n.X8uEDW_app.X8uEDW_play, .X8uEDW_app.X8uEDW_focus {\n height: 100%;\n max-height: 100dvh;\n}\n\n@media (min-width: 800px) {\n .X8uEDW_app.X8uEDW_play > main, .X8uEDW_app.X8uEDW_focus > main {\n max-height: 90%;\n margin: auto;\n }\n}\n\n.X8uEDW_app > main {\n box-sizing: border-box;\n flex: auto;\n width: 100%;\n height: 100%;\n}\n\n@media (min-width: 800px) {\n .X8uEDW_app > main {\n max-width: 800px;\n margin: 5vh 0;\n }\n}\n\n/*# sourceMappingURL=index.62ef15f1.css.map */\n","/* open-sans-cyrillic-ext-400-normal */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/open-sans-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/open-sans-cyrillic-ext-400-normal.woff) format('woff');\n unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;\n}\n\n/* open-sans-cyrillic-400-normal */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/open-sans-cyrillic-400-normal.woff2) format('woff2'), url(./files/open-sans-cyrillic-400-normal.woff) format('woff');\n unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;\n}\n\n/* open-sans-greek-ext-400-normal */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/open-sans-greek-ext-400-normal.woff2) format('woff2'), url(./files/open-sans-greek-ext-400-normal.woff) format('woff');\n unicode-range: U+1F00-1FFF;\n}\n\n/* open-sans-greek-400-normal */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/open-sans-greek-400-normal.woff2) format('woff2'), url(./files/open-sans-greek-400-normal.woff) format('woff');\n unicode-range: U+0370-03FF;\n}\n\n/* open-sans-hebrew-400-normal */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/open-sans-hebrew-400-normal.woff2) format('woff2'), url(./files/open-sans-hebrew-400-normal.woff) format('woff');\n unicode-range: U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F;\n}\n\n/* open-sans-vietnamese-400-normal */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/open-sans-vietnamese-400-normal.woff2) format('woff2'), url(./files/open-sans-vietnamese-400-normal.woff) format('woff');\n unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;\n}\n\n/* open-sans-latin-ext-400-normal */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/open-sans-latin-ext-400-normal.woff2) format('woff2'), url(./files/open-sans-latin-ext-400-normal.woff) format('woff');\n unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;\n}\n\n/* open-sans-latin-400-normal */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(./files/open-sans-latin-400-normal.woff2) format('woff2'), url(./files/open-sans-latin-400-normal.woff) format('woff');\n unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;\n}","/* Layout */\n\nhtml, body {\n margin: 0;\n height: 100%;\n\n font-family: 'Open Sans', sans-serif;\n font-size: 18px;\n line-height: 27px;\n\n /* To prevent the white flash */\n background: #000000;\n}\n\n#root {\n height: 100%;\n}\n","/* Scrollbars */\n\nbody {\n * {\n scrollbar-color: var(--main-color) var(--bg-color);\n scrollbar-width: thin;\n }\n\n *::-webkit-scrollbar {\n width: var(--inner-padding);\n }\n\n *::-webkit-scrollbar-thumb {\n background-color: var(--main-color);\n border: calc(0.5 * var(--inner-padding)) solid var(--bg-color);\n border-left-width: 0;\n }\n}\n\n/* Focus */\n\n*:focus-visible {\n outline: calc(0.5 * var(--separator-width)) solid var(--main-color);\n outline-offset: calc(1px + var(--separator-width));\n}\n\n*::selection {\n color: var(--bg-color);\n background: var(--main-color);\n}\n\n/* Links */\n\na,\nsummary {\n display: inline;\n cursor: pointer;\n\n border-bottom: var(--separator-width) solid currentColor;\n color: inherit;\n text-decoration: none;\n}\n\na:focus,\na:hover,\nsummary:focus,\nsummary:hover {\n opacity: 0.8;\n}\n\n/* Separators */\n\nhr {\n border: 0;\n height: 0;\n border-top: var(--separator-width) solid var(--main-color);\n}\n\n/* Lists */\n\nul {\n list-style: square;\n}\n\n/* Buttons */\n\nbutton {\n border: var(--separator-width) solid var(--main-color);\n background-color: var(--bg-color);\n color: var(--main-color);\n padding: var(--inner-padding) calc(4 * var(--inner-padding));\n font-family: inherit;\n font-size: inherit;\n cursor: pointer;\n}\n\n/* Inputs */\n\ninput::placeholder {\n color: var(--main-color);\n opacity: 0.8;\n}\n\ninput,\nselect {\n box-sizing: border-box;\n\n padding: calc(0.5 * var(--inner-padding)) var(--inner-padding);\n color: var(--main-color);\n background-color: var(--bg-color);\n border: var(--separator-width) solid var(--main-color);\n font: inherit;\n}\n\nselect {\n width: 250px;\n\n cursor: pointer;\n appearance: none;\n -webkit-appearance: none;\n border-radius: 0;\n background-image: repeating-linear-gradient(\n 315deg,\n var(--bg-color),\n var(--bg-color) var(--inner-padding),\n var(--main-color) var(--inner-padding),\n var(--main-color) calc(var(--inner-padding) + var(--separator-width)),\n var(--bg-color) calc(var(--inner-padding) + var(--separator-width)),\n var(--bg-color) 100%\n );\n}\n\nlabel {\n display: inline-block;\n width: 100%;\n max-width: 400px;\n}\n\nlabel input {\n width: 100%;\n}\n\ninput[type='file'] {\n position: relative;\n font-size: 0;\n text-indent: -100%;\n cursor: pointer;\n}\n","body {\n --outer-padding: 0px;\n --border-width: 0px;\n --separator-width: 2px;\n --inner-padding: 8px;\n --input-box-margin: 0px;\n}\n@media (min-width: 800px) {\n body {\n --outer-padding: 8px;\n --border-width: 2px;\n --input-box-margin: 8px;\n }\n}\n\n/* */\n\n.light {\n --bg-color: hsl(0, 0%, 100%, 1);\n --main-color: hsl(0, 0%, 0%, 0.8);\n --accent-color: hsl(0, 0%, 0%, 0.8);\n --input-color: hsl(0, 0%, 0%, 0.8);\n}\n\n.dim {\n --bg-color: hsl(0, 0%, 20%, 1);\n --main-color: hsl(0, 0%, 100%, 0.8);\n --accent-color: hsl(0, 0%, 100%, 0.8);\n --input-color: hsl(0, 0%, 100%, 0.8);\n}\n\n.dark {\n --bg-color: hsl(0, 0%, 0%, 1);\n --main-color: hsl(0, 0%, 100%, 1);\n --accent-color: hsl(0, 0%, 100%, 1);\n --input-color: hsl(0, 0%, 100%, 1);\n}\n\n/* Solarized */\n\n.solarized-light {\n --bg-color: #eee8d5;\n --main-color: #586e75;\n --accent-color: #b58900;\n --input-color: #2aa198;\n}\n\n.solarized-dark {\n --bg-color: #073642;\n --main-color: #93a1a1;\n --accent-color: #b58900;\n --input-color: #2aa198;\n}\n\n/* Original */\n\n.emo {\n --bg-color: #4d4d4d;\n --main-color: #ff77aa;\n --accent-color: #ff77aa;\n --input-color: #ff77aa;\n}\n\n.redrum {\n --bg-color: #000000;\n --main-color: #ff0000;\n --accent-color: #ff0000;\n --input-color: #ff0000;\n}\n\n.toxin {\n --bg-color: #606060;\n --main-color: #d6ed17;\n --accent-color: #d6ed17;\n --input-color: #d6ed17;\n}\n\n.valve {\n --bg-color: #292929;\n --main-color: #fb7e14;\n --accent-color: #fb7e14;\n --input-color: #fb7e14;\n}\n\n.wasp {\n --bg-color: #f9d142;\n --main-color: #292826;\n --accent-color: #292826;\n --input-color: #292826;\n}\n\n/* Monkeytype */\n\n.a8008 {\n --bg-color: #333a45;\n --main-color: #e9ecf0;\n --accent-color: #f44c7f;\n --input-color: #939eae;\n}\n\n.a80s_after_dark {\n --bg-color: #1b1d36;\n --main-color: #e1e7ec;\n --accent-color: #fca6d1;\n --input-color: #99d6ea;\n}\n\n.a9009 {\n --bg-color: #eeebe2;\n --main-color: #080909;\n --accent-color: #080909;\n --input-color: #99947f;\n}\n\n.aether {\n --bg-color: #101820;\n --main-color: #eedaea;\n --accent-color: #eedaea;\n --input-color: #cf6bdd;\n}\n\n.alduin {\n --bg-color: #1c1c1c;\n --main-color: #f5f3ed;\n --accent-color: #dfd7af;\n --input-color: #444444;\n}\n\n.alpine {\n --bg-color: #6c687f;\n --main-color: #ffffff;\n --accent-color: #ffffff;\n --input-color: #9994b8;\n}\n\n.arch {\n --bg-color: #0c0d11;\n --main-color: #f6f5f5;\n --accent-color: #7ebab5;\n --input-color: #454864;\n}\n\n.aurora {\n --bg-color: #011926;\n --main-color: #fff;\n --accent-color: #00e980;\n --input-color: #245c69;\n}\n\n.beach {\n --bg-color: #ffeead;\n --main-color: #5b7869;\n --accent-color: #96ceb4;\n --input-color: #ffcc5c;\n}\n\n.bento {\n --bg-color: #2d394d;\n --main-color: #fffaf8;\n --accent-color: #ff7a90;\n --input-color: #4a768d;\n}\n\n.bingsu {\n --bg-color: #b8a7aa;\n --main-color: #ebe6ea;\n --accent-color: #83616e;\n --input-color: #48373d;\n}\n\n.bliss {\n --bg-color: #262727;\n --main-color: #fff;\n --accent-color: #f0d3c9;\n --input-color: #665957;\n}\n\n.blue_dolphin {\n --bg-color: #003950;\n --main-color: #82eaff;\n --accent-color: #ffcefb;\n --input-color: #00e4ff;\n}\n\n.blueberry_dark {\n --bg-color: #212b42;\n --main-color: #91b4d5;\n --accent-color: #add7ff;\n --input-color: #5c7da5;\n}\n\n.blueberry_light {\n --bg-color: #dae0f5;\n --main-color: #678198;\n --accent-color: #506477;\n --input-color: #92a4be;\n}\n\n.botanical {\n --bg-color: #7b9c98;\n --main-color: #eaf1f3;\n --accent-color: #eaf1f3;\n --input-color: #495755;\n}\n\n.bouquet {\n --bg-color: #173f35;\n --main-color: #e9e0d2;\n --accent-color: #eaa09c;\n --input-color: #408e7b;\n}\n\n.breeze {\n --bg-color: #e8d5c4;\n --main-color: #1b4c5e;\n --accent-color: #7d67a9;\n --input-color: #3a98b9;\n}\n\n.bushido {\n --bg-color: #242933;\n --main-color: #f6f0e9;\n --accent-color: #ec4c56;\n --input-color: #596172;\n}\n\n.cafe {\n --bg-color: #ceb18d;\n --main-color: #14120f;\n --accent-color: #14120f;\n --input-color: #d4d2d1;\n}\n\n.camping {\n --bg-color: #faf1e4;\n --main-color: #3c403b;\n --accent-color: #618c56;\n --input-color: #c2b8aa;\n}\n\n.carbon {\n --bg-color: #313131;\n --main-color: #f5e6c8;\n --accent-color: #f66e0d;\n --input-color: #616161;\n}\n\n.catppuccin {\n --bg-color: #1e1e2e;\n --main-color: #d9e0ee;\n --accent-color: #abe9b3;\n --input-color: #575268;\n}\n\n.chaos_theory {\n --bg-color: #141221;\n --main-color: #dde5ed;\n --accent-color: #fd77d7;\n --input-color: #676e8a;\n}\n\n.cheesecake {\n --bg-color: #fdf0d5;\n --main-color: #3a3335;\n --accent-color: #8e2949;\n --input-color: #d91c81;\n}\n\n.cherry_blossom {\n --bg-color: #323437;\n --main-color: #d1d0c5;\n --accent-color: #d65ccc;\n --input-color: #787d82;\n}\n\n.comfy {\n --bg-color: #4a5b6e;\n --main-color: #f5efee;\n --accent-color: #f8cdc6;\n --input-color: #9ec1cc;\n}\n\n.copper {\n --bg-color: #442f29;\n --main-color: #e7e0de;\n --accent-color: #b46a55;\n --input-color: #7ebab5;\n}\n\n.creamsicle {\n --bg-color: #ff9869;\n --main-color: #fcfcf8;\n --accent-color: #fcfcf8;\n --input-color: #ff661f;\n}\n\n.cyberspace {\n --bg-color: #181c18;\n --main-color: #c2fbe1;\n --accent-color: #00ce7c;\n --input-color: #9578d3;\n}\n\n.dark_magic_girl {\n --bg-color: #091f2c;\n --main-color: #a288d9;\n --accent-color: #f5b1cc;\n --input-color: #93e8d3;\n}\n\n.dark_note {\n --bg-color: #1f1f1f;\n --main-color: #d2dff4;\n --accent-color: #f2c17b;\n --input-color: #768f95;\n}\n\n.darling {\n --bg-color: #fec8cd;\n --main-color: #ffffff;\n --accent-color: #ffffff;\n --input-color: #a30000;\n}\n\n.deku {\n --bg-color: #058b8c;\n --main-color: #f7f2ea;\n --accent-color: #b63530;\n --input-color: #255458;\n}\n\n.desert_oasis {\n --bg-color: #fff2d5;\n --main-color: #332800;\n --accent-color: #d19d01;\n --input-color: #0061fe;\n}\n\n.dev {\n --bg-color: #1b2028;\n --main-color: #ccccb5;\n --accent-color: #23a9d5;\n --input-color: #4b5975;\n}\n\n.diner {\n --bg-color: #537997;\n --main-color: #dfdbc8;\n --accent-color: #c3af5b;\n --input-color: #445c7f;\n}\n\n.dino {\n --bg-color: #ffffff;\n --main-color: #1d221f;\n --accent-color: #40d672;\n --input-color: #d5d5d5;\n}\n\n.dmg {\n --bg-color: #dadbdc;\n --main-color: #414141;\n --accent-color: #ae185e;\n --input-color: #3846b1;\n}\n\n.dollar {\n --bg-color: #e4e4d4;\n --main-color: #555a56;\n --accent-color: #6b886b;\n --input-color: #8a9b69;\n}\n\n.dots {\n --bg-color: #121520;\n --main-color: #fff;\n --accent-color: #fff;\n --input-color: #676e8a;\n}\n\n.dracula {\n --bg-color: #282a36;\n --main-color: #f8f8f2;\n --accent-color: #bd93f9;\n --input-color: #6272a4;\n}\n\n.drowning {\n --bg-color: #191826;\n --main-color: #9393a7;\n --accent-color: #4a6fb5;\n --input-color: #50688c;\n}\n\n.dualshot {\n --bg-color: #737373;\n --main-color: #212222;\n --accent-color: #212222;\n --input-color: #aaaaaa;\n}\n\n.earthsong {\n --bg-color: #292521;\n --main-color: #e6c7a8;\n --accent-color: #509452;\n --input-color: #f5ae2d;\n}\n\n.everblush {\n --bg-color: #141b1e;\n --main-color: #dadada;\n --accent-color: #8ccf7e;\n --input-color: #838887;\n}\n\n.evil_eye {\n --bg-color: #0084c2;\n --main-color: #171718;\n --accent-color: #f7f2ea;\n --input-color: #01589f;\n}\n\n.ez_mode {\n --bg-color: #0068c6;\n --main-color: #ffffff;\n --accent-color: #fa62d5;\n --input-color: #138bf7;\n}\n\n.fire {\n --bg-color: #0f0000;\n --main-color: #ffffff;\n --accent-color: #b31313;\n --input-color: #683434;\n}\n\n.fledgling {\n --bg-color: #3b363f;\n --main-color: #e6d5d3;\n --accent-color: #fc6e83;\n --input-color: #8e5568;\n}\n\n.fleuriste {\n --bg-color: #c6b294;\n --main-color: #091914;\n --accent-color: #405a52;\n --input-color: #64374d;\n}\n\n.froyo {\n --bg-color: #e1dacb;\n --main-color: #7b7d7d;\n --accent-color: #7b7d7d;\n --input-color: #b29c5e;\n}\n\n.frozen_llama {\n --bg-color: #9bf2ea;\n --main-color: #ffffff;\n --accent-color: #6d44a6;\n --input-color: #b690fd;\n}\n\n.fruit_chew {\n --bg-color: #d6d3d6;\n --main-color: #282528;\n --accent-color: #5c1e5f;\n --input-color: #b49cb5;\n}\n\n.fundamentals {\n --bg-color: #727474;\n --main-color: #131313;\n --accent-color: #7fa482;\n --input-color: #cac4be;\n}\n\n.future_funk {\n --bg-color: #2e1a47;\n --main-color: #f7f2ea;\n --accent-color: #f7f2ea;\n --input-color: #c18fff;\n}\n\n.godspeed {\n --bg-color: #eae4cf;\n --main-color: #646669;\n --accent-color: #9abbcd;\n --input-color: #ada998;\n}\n\n.graen {\n --bg-color: #303c36;\n --main-color: #a59682;\n --accent-color: #a59682;\n --input-color: #181d1a;\n}\n\n.grand_prix {\n --bg-color: #36475c;\n --main-color: #c1c7d7;\n --accent-color: #c0d036;\n --input-color: #5c6c80;\n}\n\n.gruvbox_dark {\n --bg-color: #282828;\n --main-color: #ebdbb2;\n --accent-color: #d79921;\n --input-color: #665c54;\n}\n\n.gruvbox_light {\n --bg-color: #fbf1c7;\n --main-color: #3c3836;\n --accent-color: #689d6a;\n --input-color: #a89984;\n}\n\n.hammerhead {\n --bg-color: #030613;\n --main-color: #e2f1f5;\n --accent-color: #4fcdb9;\n --input-color: #213c53;\n}\n\n.hanok {\n --bg-color: #d8d2c3;\n --main-color: #393b3b;\n --accent-color: #513a2a;\n --input-color: #8b6f5c;\n}\n\n.hedge {\n --bg-color: #415e31;\n --main-color: #f7f1d6;\n --accent-color: #6a994e;\n --input-color: #ede5b4;\n}\n\n.honey {\n --bg-color: #f2aa00;\n --main-color: #f3eecb;\n --accent-color: #fff546;\n --input-color: #a66b00;\n}\n\n.horizon {\n --bg-color: #1c1e26;\n --main-color: #bbbbbb;\n --accent-color: #c4a88a;\n --input-color: #db886f;\n}\n\n.husqy {\n --bg-color: #000000;\n --main-color: #ebd7ff;\n --accent-color: #c58aff;\n --input-color: #972fff;\n}\n\n.iceberg_dark {\n --bg-color: #161821;\n --main-color: #c6c8d1;\n --accent-color: #84a0c6;\n --input-color: #595e76;\n}\n\n.iceberg_light {\n --bg-color: #e8e9ec;\n --main-color: #33374c;\n --accent-color: #2d539e;\n --input-color: #adb1c4;\n}\n\n.ishtar {\n --bg-color: #202020;\n --main-color: #fae1c3;\n --accent-color: #91170c;\n --input-color: #847869;\n}\n\n.iv_clover {\n --bg-color: #a0a0a0;\n --main-color: #3b2d3b;\n --accent-color: #573e40;\n --input-color: #353535;\n}\n\n.iv_spade {\n --bg-color: #0c0c0c;\n --main-color: #d3c2c3;\n --accent-color: #b7976a;\n --input-color: #404040;\n}\n\n.joker {\n --bg-color: #1a0e25;\n --main-color: #e9e2f5;\n --accent-color: #99de1e;\n --input-color: #7554a3;\n}\n\n.laser {\n --bg-color: #221b44;\n --main-color: #dbe7e8;\n --accent-color: #009eaf;\n --input-color: #b82356;\n}\n\n.lavender {\n --bg-color: #ada6c2;\n --main-color: #2f2a41;\n --accent-color: #e4e3e9;\n --input-color: #e4e3e9;\n}\n\n.leather {\n --bg-color: #a86948;\n --main-color: #ffe4bc;\n --accent-color: #ffe4bc;\n --input-color: #81482b;\n}\n\n.lil_dragon {\n --bg-color: #ebe1ef;\n --main-color: #212b43;\n --accent-color: #8a5bd6;\n --input-color: #a28db8;\n}\n\n.lime {\n --bg-color: #7c878e;\n --main-color: #bfcfdc;\n --accent-color: #93c247;\n --input-color: #4b5257;\n}\n\n.luna {\n --bg-color: #221c35;\n --main-color: #ffe3eb;\n --accent-color: #f67599;\n --input-color: #5a3a7e;\n}\n\n.magic_girl {\n --bg-color: #ffffff;\n --main-color: #00ac8c;\n --accent-color: #f5b1cc;\n --input-color: #93e8d3;\n}\n\n.mashu {\n --bg-color: #2b2b2c;\n --main-color: #f1e2e4;\n --accent-color: #76689a;\n --input-color: #d8a0a6;\n}\n\n.matcha_moccha {\n --bg-color: #523525;\n --main-color: #ecddcc;\n --accent-color: #7ec160;\n --input-color: #9e6749;\n}\n\n.material {\n --bg-color: #263238;\n --main-color: #e6edf3;\n --accent-color: #80cbc4;\n --input-color: #4c6772;\n}\n\n.matrix {\n --bg-color: #000000;\n --main-color: #d1ffcd;\n --accent-color: #15ff00;\n --input-color: #006500;\n}\n\n.menthol {\n --bg-color: #00c18c;\n --main-color: #ffffff;\n --accent-color: #ffffff;\n --input-color: #186544;\n}\n\n.metaverse {\n --bg-color: #232323;\n --main-color: #e8e8e8;\n --accent-color: #d82934;\n --input-color: #5e5e5e;\n}\n\n.metropolis {\n --bg-color: #0f1f2c;\n --main-color: #e4edf1;\n --accent-color: #56c3b7;\n --input-color: #326984;\n}\n\n.mexican {\n --bg-color: #f8ad34;\n --main-color: #eee;\n --accent-color: #b12189;\n --input-color: #333;\n}\n\n.miami {\n --bg-color: #f35588;\n --main-color: #f0e9ec;\n --accent-color: #05dfd7;\n --input-color: #94294c;\n}\n\n.miami_nights {\n --bg-color: #18181a;\n --main-color: #fff;\n --accent-color: #e4609b;\n --input-color: #47bac0;\n}\n\n.midnight {\n --bg-color: #0b0e13;\n --main-color: #9fadc6;\n --accent-color: #60759f;\n --input-color: #394760;\n}\n\n.milkshake {\n --bg-color: #ffffff;\n --main-color: #212b43;\n --accent-color: #212b43;\n --input-color: #62cfe6;\n}\n\n.mint {\n --bg-color: #05385b;\n --main-color: #edf5e1;\n --accent-color: #5cdb95;\n --input-color: #20688a;\n}\n\n.mizu {\n --bg-color: #afcbdd;\n --main-color: #1a2633;\n --accent-color: #fcfbf6;\n --input-color: #85a5bb;\n}\n\n.modern_dolch {\n --bg-color: #2d2e30;\n --main-color: #e3e6eb;\n --accent-color: #7eddd3;\n --input-color: #54585c;\n}\n\n.modern_dolch_light {\n --bg-color: #dbdbdb;\n --main-color: #454545;\n --accent-color: #8fd1c3;\n --input-color: #acacac;\n}\n\n.modern_ink {\n --bg-color: #ffffff;\n --main-color: #000000;\n --accent-color: #ff360d;\n --input-color: #b7b7b7;\n}\n\n.monokai {\n --bg-color: #272822;\n --main-color: #e2e2dc;\n --accent-color: #a6e22e;\n --input-color: #e6db74;\n}\n\n.moonlight {\n --bg-color: #191f28;\n --main-color: #ccccb5;\n --accent-color: #c69f68;\n --input-color: #4b5975;\n}\n\n.mountain {\n --bg-color: #0f0f0f;\n --main-color: #e7e7e7;\n --accent-color: #e7e7e7;\n --input-color: #4c4c4c;\n}\n\n.mr_sleeves {\n --bg-color: #d1d7da;\n --main-color: #1d1d1d;\n --accent-color: #daa99b;\n --input-color: #9a9fa1;\n}\n\n.ms_cupcakes {\n --bg-color: #ffffff;\n --main-color: #0a282f;\n --accent-color: #5ed5f3;\n --input-color: #d64090;\n}\n\n.muted {\n --bg-color: #525252;\n --main-color: #b1e4e3;\n --accent-color: #c5b4e3;\n --input-color: #939eae;\n}\n\n.nautilus {\n --bg-color: #132237;\n --main-color: #1cbaac;\n --accent-color: #ebb723;\n --input-color: #0b4c6c;\n}\n\n.nebula {\n --bg-color: #212135;\n --main-color: #838686;\n --accent-color: #be3c88;\n --input-color: #19b3b8;\n}\n\n.night_runner {\n --bg-color: #212121;\n --main-color: #e8e8e8;\n --accent-color: #feff04;\n --input-color: #5c4a9c;\n}\n\n.nord {\n --bg-color: #242933;\n --main-color: #d8dee9;\n --accent-color: #d8dee9;\n --input-color: #617b94;\n}\n\n.nord_light {\n --bg-color: #eceff4;\n --main-color: #8fbcbb;\n --accent-color: #8fbcbb;\n --input-color: #6a7791;\n}\n\n.norse {\n --bg-color: #242425;\n --main-color: #ccc2b1;\n --accent-color: #2b5f6d;\n --input-color: #505b5e;\n}\n\n.oblivion {\n --bg-color: #313231;\n --main-color: #f7f5f1;\n --accent-color: #a5a096;\n --input-color: #5d6263;\n}\n\n.olive {\n --bg-color: #e9e5cc;\n --main-color: #373731;\n --accent-color: #92946f;\n --input-color: #b7b39e;\n}\n\n.olivia {\n --bg-color: #1c1b1d;\n --main-color: #f2efed;\n --accent-color: #deaf9d;\n --input-color: #4e3e3e;\n}\n\n.onedark {\n --bg-color: #2f343f;\n --main-color: #98c379;\n --accent-color: #61afef;\n --input-color: #eceff4;\n}\n\n.our_theme {\n --bg-color: #ce1226;\n --main-color: #ffffff;\n --accent-color: #fcd116;\n --input-color: #6d0f19;\n}\n\n.paper {\n --bg-color: #eeeeee;\n --main-color: #444444;\n --accent-color: #444444;\n --input-color: #b2b2b2;\n}\n\n.passion_fruit {\n --bg-color: #7c2142;\n --main-color: #ffffff;\n --accent-color: #f4a3b4;\n --input-color: #9994b8;\n}\n\n.pastel {\n --bg-color: #e0b2bd;\n --main-color: #6d5c6f;\n --accent-color: #fbf4b6;\n --input-color: #b4e9ff;\n}\n\n.peach_blossom {\n --bg-color: #292929;\n --main-color: #fecea8;\n --accent-color: #99b898;\n --input-color: #616161;\n}\n\n.peaches {\n --bg-color: #e0d7c1;\n --main-color: #5f4c41;\n --accent-color: #dd7a5f;\n --input-color: #e7b28e;\n}\n\n.pink_lemonade {\n --bg-color: #f6d992;\n --main-color: #fcfcf8;\n --accent-color: #f6a192;\n --input-color: #f6b092;\n}\n\n.pulse {\n --bg-color: #181818;\n --main-color: #e5f4f4;\n --accent-color: #17b8bd;\n --input-color: #53565a;\n}\n\n.purpurite {\n --bg-color: #1f2533;\n --main-color: #9999ff;\n --accent-color: #9999ff;\n --input-color: #ccddff;\n}\n\n.red_dragon {\n --bg-color: #1a0b0c;\n --main-color: #4a4d4e;\n --accent-color: #ff3a32;\n --input-color: #e2a528;\n}\n\n.red_samurai {\n --bg-color: #84202c;\n --main-color: #e2dad0;\n --accent-color: #c79e6e;\n --input-color: #55131b;\n}\n\n.repose_dark {\n --bg-color: #2f3338;\n --main-color: #d6d2bc;\n --accent-color: #d6d2bc;\n --input-color: #8f8e84;\n}\n\n.repose_light {\n --bg-color: #efead0;\n --main-color: #333538;\n --accent-color: #5f605e;\n --input-color: #8f8e84;\n}\n\n.retro {\n --bg-color: #dad3c1;\n --main-color: #1d1b17;\n --accent-color: #1d1b17;\n --input-color: #918b7d;\n}\n\n.retrocast {\n --bg-color: #07737a;\n --main-color: #ffffff;\n --accent-color: #88dbdf;\n --input-color: #f3e03b;\n}\n\n.rose_pine {\n --bg-color: #1f1d27;\n --main-color: #e0def4;\n --accent-color: #9ccfd8;\n --input-color: #c4a7e7;\n}\n\n.rose_pine_dawn {\n --bg-color: #fffaf3;\n --main-color: #286983;\n --accent-color: #56949f;\n --input-color: #c4a7e7;\n}\n\n.rose_pine_moon {\n --bg-color: #2a273f;\n --main-color: #e0def4;\n --accent-color: #9ccfd8;\n --input-color: #c4a7e7;\n}\n\n.rudy {\n --bg-color: #1a2b3e;\n --main-color: #c9c8bf;\n --accent-color: #af8f5c;\n --input-color: #3a506c;\n}\n\n.ryujinscales {\n --bg-color: #081426;\n --main-color: #ffe4bc;\n --accent-color: #f17754;\n --input-color: #ffbc90;\n}\n\n.serika {\n --bg-color: #e1e1e3;\n --main-color: #323437;\n --accent-color: #e2b714;\n --input-color: #aaaeb3;\n}\n\n.serika_dark {\n --bg-color: #323437;\n --main-color: #d1d0c5;\n --accent-color: #e2b714;\n --input-color: #646669;\n}\n\n.sewing_tin {\n --bg-color: #241963;\n --main-color: #ffffff;\n --accent-color: #f2ce83;\n --input-color: #446ad5;\n}\n\n.sewing_tin_light {\n --bg-color: #ffffff;\n --main-color: #2d2076;\n --accent-color: #2d2076;\n --input-color: #385eca;\n}\n\n.shadow {\n --bg-color: #000;\n --main-color: #eee;\n --accent-color: #eee;\n --input-color: #444;\n}\n\n.shoko {\n --bg-color: #ced7e0;\n --main-color: #3b4c58;\n --accent-color: #81c4dd;\n --input-color: #7599b1;\n}\n\n.slambook {\n --bg-color: #FFFDDE;\n --main-color: #125d98;\n --accent-color: #13005A;\n --input-color: #1c82adc4;\n}\n\n.snes {\n --bg-color: #bfbec2;\n --main-color: #2e2e2e;\n --accent-color: #553d94;\n --input-color: #9f8ad4;\n}\n\n.soaring_skies {\n --bg-color: #fff9f2;\n --main-color: #1d1e1e;\n --accent-color: #55c6f0;\n --input-color: #1e107a;\n}\n\n.sonokai {\n --bg-color: #2c2e34;\n --main-color: #e2e2e3;\n --accent-color: #9ed072;\n --input-color: #e7c664;\n}\n\n.stealth {\n --bg-color: #010203;\n --main-color: #383e42;\n --accent-color: #383e42;\n --input-color: #5e676e;\n}\n\n.strawberry {\n --bg-color: #f37f83;\n --main-color: #fcfcf8;\n --accent-color: #fcfcf8;\n --input-color: #e53c58;\n}\n\n.striker {\n --bg-color: #124883;\n --main-color: #d6dbd9;\n --accent-color: #d7dcda;\n --input-color: #0f2d4e;\n}\n\n.superuser {\n --bg-color: #262a33;\n --main-color: #e5f7ef;\n --accent-color: #43ffaf;\n --input-color: #526777;\n}\n\n.sweden {\n --bg-color: #0058a3;\n --main-color: #ffffff;\n --accent-color: #ffcc02;\n --input-color: #57abdb;\n}\n\n.taro {\n --bg-color: #b3baff;\n --main-color: #130f1a;\n --accent-color: #130f1a;\n --input-color: #6f6c91;\n}\n\n.terminal {\n --bg-color: #191a1b;\n --main-color: #e7eae0;\n --accent-color: #79a617;\n --input-color: #48494b;\n}\n\n.terra {\n --bg-color: #0c100e;\n --main-color: #f0edd1;\n --accent-color: #89c559;\n --input-color: #436029;\n}\n\n.terror_below {\n --bg-color: #0b1e1a;\n --main-color: #dceae5;\n --accent-color: #66ac92;\n --input-color: #015c53;\n}\n\n.tiramisu {\n --bg-color: #cfc6b9;\n --main-color: #7d5448;\n --accent-color: #c0976f;\n --input-color: #c0976f;\n}\n\n.trackday {\n --bg-color: #464d66;\n --main-color: #cfcfcf;\n --accent-color: #e0513e;\n --input-color: #5c7eb9;\n}\n\n.trance {\n --bg-color: #00021b;\n --main-color: #fff;\n --accent-color: #e51376;\n --input-color: #3c4c79;\n}\n\n.tron_orange {\n --bg-color: #0d1c1c;\n --main-color: #ffffff;\n --accent-color: #f0e800;\n --input-color: #ff6600;\n}\n\n.vaporwave {\n --bg-color: #a4a7ea;\n --main-color: #f1ebf1;\n --accent-color: #e368da;\n --input-color: #7c7faf;\n}\n\n.viridescent {\n --bg-color: #2c3333;\n --main-color: #e9f5db;\n --accent-color: #95d5b2;\n --input-color: #84a98c;\n}\n\n.voc {\n --bg-color: #190618;\n --main-color: #eeeae4;\n --accent-color: #e0caac;\n --input-color: #4c1e48;\n}\n\n.vscode {\n --bg-color: #1e1e1e;\n --main-color: #d4d4d4;\n --accent-color: #007acc;\n --input-color: #4d4d4d;\n}\n\n.watermelon {\n --bg-color: #1f4437;\n --main-color: #cdc6bc;\n --accent-color: #d6686f;\n --input-color: #3e7a65;\n}\n\n.wavez {\n --bg-color: #1c292f;\n --main-color: #e9efe6;\n --accent-color: #6bde3b;\n --input-color: #1f5e6b;\n}\n\n.witch_girl {\n --bg-color: #f3dbda;\n --main-color: #56786a;\n --accent-color: #56786a;\n --input-color: #ddb4a7;\n}\n",".games {\n .tutorial {\n margin-block: 64px;\n }\n\n h4 {\n margin: 0;\n }\n\n li {\n margin-bottom: 1em;\n }\n}\n",".themes {\n --current-border: var(--main-color);\n\n .themePreview {\n border: 2px solid var(--current-border);\n padding: calc(2 * var(--inner-padding));\n margin-bottom: 32px;\n\n background-color: var(--bg-color);\n color: var(--main-color);\n\n &.current {\n padding: 0;\n border: none;\n margin-block: 64px;\n }\n\n .output {\n border: 2px solid var(--main-color);\n padding: var(--inner-padding);\n margin-bottom: 8px;\n\n .message.subheader {\n font-weight: bold;\n color: var(--accent-color);\n text-transform: capitalize;\n }\n\n .message.input {\n color: var(--input-color);\n }\n }\n\n button {\n width: 100%;\n }\n }\n}\n",".message {\n &.input {\n color: var(--input-color);\n }\n\n &.emphasized,\n &.subheader {\n color: var(--accent-color);\n }\n}\n\n.scrollTarget {\n scroll-margin-block-start: var(--inner-padding);\n}\n",".elseifplayer {\n height: 100%;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n\n background-color: var(--bg-color);\n color: var(--main-color);\n padding: var(--outer-padding);\n\n .output {\n display: flex;\n flex-grow: 2;\n flex-direction: column;\n overflow-y: hidden;\n overflow-wrap: break-word;\n\n border: var(--border-width) solid var(--main-color);\n\n .buffer {\n overflow-y: scroll;\n box-sizing: border-box;\n\n padding: var(--inner-padding);\n\n &:empty {\n display: none;\n }\n\n & > br:first-child,\n & > br:last-child,\n & > br + br + br {\n display: none;\n }\n\n &.gridBuffer {\n flex-shrink: 0;\n max-height: 100%;\n border-bottom: var(--separator-width) solid var(--main-color);\n }\n\n &.textBuffer {\n flex: 2 1;\n outline: none;\n scroll-behavior: smooth;\n }\n }\n }\n}\n",".menuButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: none;\n outline-offset: -8px;\n position: absolute;\n right: 0;\n height: 100%;\n padding: 0;\n\n @media (max-width: 800px) {\n padding: 0 calc(0.5 * var(--inner-padding));\n overflow: hidden;\n }\n\n &:focus-visible {\n outline-offset: -4px;\n }\n\n .menuIcon {\n height: 32px;\n fill: none;\n stroke: currentColor;\n stroke-width: 2px;\n\n @media (max-width: 800px) {\n transform: scaleX(2) scaleY(0.5);\n fill: currentColor;\n }\n }\n}\n",".inputControls {\n position: relative;\n margin-top: var(--input-box-margin);\n\n .inputBox {\n font: inherit;\n color: inherit;\n outline: 0;\n\n background-color: var(--bg-color);\n border: var(--border-width) solid var(--main-color);\n border-top: var(--separator-width) solid var(--main-color);\n padding: var(--inner-padding);\n padding-right: calc(4 * var(--inner-padding));\n margin: 0;\n width: 100%;\n\n &::placeholder {\n color: var(--main-color);\n opacity: 1;\n }\n\n &:focus::placeholder {\n opacity: 0.5;\n }\n\n &::-webkit-search-cancel-button {\n display: none;\n }\n }\n}\n","@keyframes dots0123 {\n 0% { content: ''; }\n 33% { content: '.'; }\n 66% { content: '..'; }\n 100% { content: '...'; }\n}\n\n.status {\n word-break: break-word;\n padding-block: var(--inner-padding);\n\n @media (max-width: 800px) {\n padding: var(--inner-padding);\n }\n\n &.loading > div:after {\n animation: dots0123 1s infinite;\n content: '';\n }\n}\n\n",".menu {\n width: 100%;\n\n border-left: none;\n border-right: none;\n text-align: center;\n padding-top: 0;\n padding-bottom: 0;\n\n background-color: var(--bg-color);\n border-color: var(--main-color);\n color: var(--main-color);\n\n &::backdrop {\n background: none;\n backdrop-filter: blur(2px);\n }\n\n & > section {\n margin: 32px auto 40px;\n gap: 32px;\n max-width: 270px;\n display: flex;\n flex-direction: column;\n }\n\n .navigation {\n color: var(--accent-color);\n }\n\n .appearance {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n select,\n button {\n width: 100%;\n }\n}\n",".app {\n min-height: 100%;\n box-sizing: border-box;\n\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n color: var(--main-color);\n background-color: var(--bg-color);\n\n /* */\n &.home, &.games, &.themes {\n padding: var(--inner-padding);\n\n /* Fix for Jumping Scrollbar Issue */\n @media (min-width: 800px) {\n padding-left: calc(100vw - 100% + var(--inner-padding));\n }\n }\n\n /* Player view */\n &.play, &.focus {\n height: 100%;\n max-height: 100dvh;\n\n @media (min-width: 800px) {\n & > main {\n max-height: 90%;\n margin: auto;\n }\n }\n }\n\n /* */\n & > main {\n flex: 1 1 auto;\n\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n\n @media (min-width: 800px) {\n margin: 5vh 0;\n max-width: 800px;\n }\n }\n}\n"],"names":[],"version":3,"file":"index.62ef15f1.css.map"} \ No newline at end of file diff --git a/docs/index.6a6ba7ba.js b/docs/index.6a6ba7ba.js new file mode 100644 index 0000000..9e2543d --- /dev/null +++ b/docs/index.6a6ba7ba.js @@ -0,0 +1,2 @@ +!function(){function e(e,r,n,o){Object.defineProperty(e,r,{get:n,set:o,enumerable:!0,configurable:!0})}var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},n={},o={},t=r.parcelRequire847f;null==t&&((t=function(e){if(e in n)return n[e].exports;if(e in o){var r=o[e];delete o[e];var t={id:e,exports:{}};return n[e]=t,r.call(t.exports,t,t.exports),t.exports}var f=Error("Cannot find module '"+e+"'");throw f.code="MODULE_NOT_FOUND",f}).register=function(e,r){o[e]=r},r.parcelRequire847f=t),t.register("n9Yfb",function(r,n){"use strict";e(r.exports,"register",function(){return o},function(e){return o=e}),e(r.exports,"resolve",function(){return t},function(e){return t=e});var o,t,f={};o=function(e){for(var r=Object.keys(e),n=0;n","node_modules/@parcel/runtime-js/lib/helpers/bundle-manifest.js","node_modules/@parcel/runtime-js/lib/runtime-fe39eb45e7abdff9.js"],"sourcesContent":["(function () {\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $parcel$global =\ntypeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire847f\"];\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire847f\"] = parcelRequire;\n}\nparcelRequire.register(\"n9Yfb\", function(module, exports) {\n\n$parcel$export(module.exports, \"register\", function () { return $0459e210d5f34936$export$6503ec6e8aabbaf; }, function (v) { return $0459e210d5f34936$export$6503ec6e8aabbaf = v; });\n$parcel$export(module.exports, \"resolve\", function () { return $0459e210d5f34936$export$f7ad0328861e2f03; }, function (v) { return $0459e210d5f34936$export$f7ad0328861e2f03 = v; });\nvar $0459e210d5f34936$export$6503ec6e8aabbaf;\nvar $0459e210d5f34936$export$f7ad0328861e2f03;\n\"use strict\";\nvar $0459e210d5f34936$var$mapping = {};\nfunction $0459e210d5f34936$var$register(pairs) {\n var keys = Object.keys(pairs);\n for(var i = 0; i < keys.length; i++)$0459e210d5f34936$var$mapping[keys[i]] = pairs[keys[i]];\n}\nfunction $0459e210d5f34936$var$resolve(id) {\n var resolved = $0459e210d5f34936$var$mapping[id];\n if (resolved == null) throw new Error(\"Could not resolve bundle with id \" + id);\n return resolved;\n}\n$0459e210d5f34936$export$6503ec6e8aabbaf = $0459e210d5f34936$var$register;\n$0459e210d5f34936$export$f7ad0328861e2f03 = $0459e210d5f34936$var$resolve;\n\n});\n\nvar $8dc9718ce5170e3c$exports = {};\n\n(parcelRequire(\"n9Yfb\")).register(JSON.parse('{\"ejVIo\":\"index.7852e909.js\",\"5EF4K\":\"bocfel-core.ee206e48.wasm\",\"9Qh6d\":\"git-core.b75bc635.wasm\",\"huVfu\":\"hugo-core.34679da7.wasm\",\"b8QSH\":\"tads-core.768683a2.wasm\",\"iM1SU\":\"scare-core.0f93f725.wasm\",\"depHM\":\"index.62ef15f1.css\"}'));\n\n})();\n//# sourceMappingURL=index.6a6ba7ba.js.map\n","\"use strict\";\n\nvar mapping = {};\nfunction register(pairs) {\n var keys = Object.keys(pairs);\n for (var i = 0; i < keys.length; i++) {\n mapping[keys[i]] = pairs[keys[i]];\n }\n}\nfunction resolve(id) {\n var resolved = mapping[id];\n if (resolved == null) {\n throw new Error('Could not resolve bundle with id ' + id);\n }\n return resolved;\n}\nmodule.exports.register = register;\nmodule.exports.resolve = resolve;","require('./helpers/bundle-manifest').register(JSON.parse(\"{\\\"ejVIo\\\":\\\"index.7852e909.js\\\",\\\"5EF4K\\\":\\\"bocfel-core.ee206e48.wasm\\\",\\\"9Qh6d\\\":\\\"git-core.b75bc635.wasm\\\",\\\"huVfu\\\":\\\"hugo-core.34679da7.wasm\\\",\\\"b8QSH\\\":\\\"tads-core.768683a2.wasm\\\",\\\"iM1SU\\\":\\\"scare-core.0f93f725.wasm\\\",\\\"depHM\\\":\\\"index.62ef15f1.css\\\"}\"));"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$parcel$global","globalThis","self","window","global","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$0459e210d5f34936$export$6503ec6e8aabbaf","$0459e210d5f34936$export$f7ad0328861e2f03","$0459e210d5f34936$var$mapping","pairs","keys","i","length","resolved","JSON","parse"],"version":3,"file":"index.6a6ba7ba.js.map"} \ No newline at end of file diff --git a/docs/index.7852e909.js b/docs/index.7852e909.js new file mode 100644 index 0000000..9c84a27 --- /dev/null +++ b/docs/index.7852e909.js @@ -0,0 +1,2 @@ +!function(){function e(e,r,t,n){Object.defineProperty(e,r,{get:t,set:n,enumerable:!0,configurable:!0})}var r,t,n,o,a,i,s,u,l,c,d,f,m,h,p,v,w,g,_,y,E,b,k,S,D,F,M,A,P,x,R,C,T="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},N={},z={},B=T.parcelRequire847f;null==B&&((B=function(e){if(e in N)return N[e].exports;if(e in z){var r=z[e];delete z[e];var t={id:e,exports:{}};return N[e]=t,r.call(t.exports,t,t.exports),t.exports}var n=Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}).register=function(e,r){z[e]=r},T.parcelRequire847f=B),B.register("6kBsm",function(r,t){e(r.exports,"getBundleURL",function(){return n},function(e){return n=e});"use strict";var n,o={};n=function(e){var r=o[e];return r||(r=function(){try{throw Error()}catch(r){var e=(""+r.stack).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\/\/[^)\n]+/g);if(e)return(""+e[2]).replace(/^((?:https?|file|ftp|(chrome|moz|safari-web)-extension):\/\/.+)\/[^/]+$/,"$1")+"/"}return"/"}(),o[e]=r),r}});var j,O,I,L,U,H,W,q,Y,G={},V=[],X=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,K=Array.isArray;function $(e,r){for(var t in r)e[t]=r[t];return e}function J(e){var r=e.parentNode;r&&r.removeChild(e)}function Z(e,r,t){var n,o,a,i={};for(a in r)"key"==a?n=r[a]:"ref"==a?o=r[a]:i[a]=r[a];if(arguments.length>2&&(i.children=arguments.length>3?j.call(arguments,2):t),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===i[a]&&(i[a]=e.defaultProps[a]);return Q(e,i,n,o,null)}function Q(e,r,t,n,o){var a={type:e,props:r,key:t,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++I:o};return null==o&&null!=O.vnode&&O.vnode(a),a}function ee(e){return e.children}function er(e,r){this.props=e,this.context=r}function et(e,r){if(null==r)return e.__?et(e.__,e.__.__k.indexOf(e)+1):null;for(var t;rr&&U.sort(q));eo.__r=0}function ea(e,r,t,n,o,a,i,s,u,l){var c,d,f,m,h,p,v,w=n&&n.__k||V,g=w.length;for(t.__k=[],c=0;c0?Q(m.type,m.props,m.key,m.ref?m.ref:null,m.__v):m)){if(m.__=t,m.__b=t.__b+1,null===(f=w[c])||f&&m.key==f.key&&m.type===f.type)w[c]=void 0;else for(d=0;d=0;t--)if((n=r.__k[t])&&(o=e(n)))return o}return null}(n).nextSibling),function e(r,t,n){var o,a;if(O.unmount&&O.unmount(r),(o=r.ref)&&(o.current&&o.current!==r.__e||em(o,null,t)),null!=(o=r.__c)){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(e){O.__e(e,t)}o.base=o.__P=null,r.__c=void 0}if(o=r.__k)for(a=0;a2&&(s.children=arguments.length>3?j.call(arguments,2):t),Q(e.type,s,n||e.key,o||e.ref,null)}j=V.slice,O={__e:function(e,r,t,n){for(var o,a,i;r=r.__;)if((o=r.__c)&&!o.__)try{if((a=o.constructor)&&null!=a.getDerivedStateFromError&&(o.setState(a.getDerivedStateFromError(e)),i=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,n||{}),i=o.__d),i)return o.__E=o}catch(r){e=r}throw e}},I=0,L=function(e){return null!=e&&void 0===e.constructor},er.prototype.setState=function(e,r){var t;t=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=$({},this.state),"function"==typeof e&&(e=e($({},t),this.props)),e&&$(t,e),null!=e&&this.__v&&(r&&this._sb.push(r),en(this))},er.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),en(this))},er.prototype.render=ee,U=[],W="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,q=function(e,r){return e.__v.__b-r.__v.__b},eo.__r=0,Y=0;var ev=0;function ew(e,r,t,n,o,a){var i,s,u={};for(s in r)"ref"==s?i=r[s]:u[s]=r[s];var l={type:e,props:u,key:t,ref:i,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--ev,__source:o,__self:a};if("function"==typeof e&&(i=e.defaultProps))for(s in i)void 0===u[s]&&(u[s]=i[s]);return O.vnode&&O.vnode(l),l}var eg,e_,ey,eE,eb=0,ek=[],eS=[],eD=O.__b,eF=O.__r,eM=O.diffed,eA=O.__c,eP=O.unmount;function ex(e,r){O.__h&&O.__h(e_,e,eb||r),eb=0;var t=e_.__H||(e_.__H={__:[],__h:[]});return e>=t.__.length&&t.__.push({__V:eS}),t.__[e]}function eR(e){return eb=1,function(e,r,t){var n=ex(eg++,2);if(n.t=e,!n.__c&&(n.__=[t?t(r):eH(void 0,r),function(e){var r=n.__N?n.__N[0]:n.__[0],t=n.t(r,e);r!==t&&(n.__N=[t,n.__[1]],n.__c.setState({}))}],n.__c=e_,!e_.u)){var o=function(e,r,t){if(!n.__c.__H)return!0;var o=n.__c.__H.__.filter(function(e){return e.__c});if(o.every(function(e){return!e.__N}))return!a||a.call(this,e,r,t);var i=!1;return o.forEach(function(e){if(e.__N){var r=e.__[0];e.__=e.__N,e.__N=void 0,r!==e.__[0]&&(i=!0)}}),!(!i&&n.__c.props===e)&&(!a||a.call(this,e,r,t))};e_.u=!0;var a=e_.shouldComponentUpdate,i=e_.componentWillUpdate;e_.componentWillUpdate=function(e,r,t){if(this.__e){var n=a;a=void 0,o(e,r,t),a=n}i&&i.call(this,e,r,t)},e_.shouldComponentUpdate=o}return n.__N||n.__}(eH,e)}function eC(e,r){var t=ex(eg++,3);!O.__s&&eU(t.__H,r)&&(t.__=e,t.i=r,e_.__H.__h.push(t))}function eT(e,r){var t=ex(eg++,4);!O.__s&&eU(t.__H,r)&&(t.__=e,t.i=r,e_.__h.push(t))}function eN(e){return eb=5,ez(function(){return{current:e}},[])}function ez(e,r){var t=ex(eg++,7);return eU(t.__H,r)?(t.__V=e(),t.i=r,t.__h=e,t.__V):t.__}function eB(){for(var e;e=ek.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(eI),e.__H.__h.forEach(eL),e.__H.__h=[]}catch(r){e.__H.__h=[],O.__e(r,e.__v)}}O.__b=function(e){e_=null,eD&&eD(e)},O.__r=function(e){eF&&eF(e),eg=0;var r=(e_=e.__c).__H;r&&(ey===e_?(r.__h=[],e_.__h=[],r.__.forEach(function(e){e.__N&&(e.__=e.__N),e.__V=eS,e.__N=e.i=void 0})):(r.__h.forEach(eI),r.__h.forEach(eL),r.__h=[],eg=0)),ey=e_},O.diffed=function(e){eM&&eM(e);var r=e.__c;r&&r.__H&&(r.__H.__h.length&&(1!==ek.push(r)&&eE===O.requestAnimationFrame||((eE=O.requestAnimationFrame)||eO)(eB)),r.__H.__.forEach(function(e){e.i&&(e.__H=e.i),e.__V!==eS&&(e.__=e.__V),e.i=void 0,e.__V=eS})),ey=e_=null},O.__c=function(e,r){r.some(function(e){try{e.__h.forEach(eI),e.__h=e.__h.filter(function(e){return!e.__||eL(e)})}catch(t){r.some(function(e){e.__h&&(e.__h=[])}),r=[],O.__e(t,e.__v)}}),eA&&eA(e,r)},O.unmount=function(e){eP&&eP(e);var r,t=e.__c;t&&t.__H&&(t.__H.__.forEach(function(e){try{eI(e)}catch(e){r=e}}),t.__H=void 0,r&&O.__e(r,t.__v))};var ej="function"==typeof requestAnimationFrame;function eO(e){var r,t=function(){clearTimeout(n),ej&&cancelAnimationFrame(r),setTimeout(e)},n=setTimeout(t,100);ej&&(r=requestAnimationFrame(t))}function eI(e){var r=e_,t=e.__c;"function"==typeof t&&(e.__c=void 0,t()),e_=r}function eL(e){var r=e_;e.__c=e.__(),e_=r}function eU(e,r){return!e||e.length!==r.length||r.some(function(r,t){return r!==e[t]})}function eH(e,r){return"function"==typeof r?r(e):r}let eW=!!("undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement);function eq(e,r){return e===r&&(0!==e||1/e==1/r)||e!=e&&r!=r}let eY=e=>{let r=eN([e,(...e)=>r[0](...e)]).current;return eT(()=>{r[0]=e}),r[1]},eG=(e="",r=location.pathname)=>r.toLowerCase().indexOf(e.toLowerCase())?"~"+r:r.slice(e.length)||"/",eV=(e,r="")=>"~"===e[0]?e.slice(1):r+e,eX="pushState",eK="replaceState",e$=["popstate",eX,eK,"hashchange"],eJ=e=>{for(let r of e$)addEventListener(r,e);return()=>{for(let r of e$)removeEventListener(r,e)}},eZ=(e,r)=>(function(e,r,t){t&&!eW&&(r=t);let n=r(),[{_instance:o},a]=eR({_instance:{_value:n,_getSnapshot:r}});return eT(()=>{o._value=n,o._getSnapshot=r,eq(o._value,r())||a({_instance:o})},[e,n,r]),eC(()=>(eq(o._value,o._getSnapshot())||a({_instance:o}),e(()=>{eq(o._value,o._getSnapshot())||a({_instance:o})})),[e]),n})(eJ,e,r),eQ=()=>location.pathname,e0=({ssrPath:e}={})=>eZ(eQ,e?()=>e:eQ),e1=(e,{replace:r=!1}={})=>history[r?eK:eX](null,"",e);if("undefined"!=typeof history)for(let e of[eX,eK]){let r=history[e];history[e]=function(){let t=r.apply(this,arguments),n=new Event(e);return n.arguments=arguments,dispatchEvent(n),t}}let e2=e=>e.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),e4=(e,r,t)=>{let n=e?"((?:[^\\/]+?)(?:\\/(?:[^\\/]+?))*)":"([^\\/]+?)";return r&&t&&(n="(?:\\/"+n+")"),n+(r?"?":"")},e6=e=>{let r=/:([A-Za-z0-9_]+)([?+*]?)/g,t=null,n=0,o=[],a="";for(;null!==(t=r.exec(e));){let[i,s,u]=t,l="+"===u||"*"===u,c="?"===u||"*"===u,d=c&&"/"===e[t.index-1]?1:0,f=e.substring(n,t.index-d);o.push({name:s}),n=r.lastIndex,a+=e2(f)+e4(l,c,d)}return{keys:o,regexp:RegExp("^"+(a+=e2(e.substring(n)))+"(?:\\/)?$","i")}},e3={hook:(e={})=>[eG(e.base,e0(e)),eY((r,t)=>e1(eV(r,e.base),t))],matcher:function(e=e6){let r={},t=t=>r[t]||(r[t]=e(t));return(e,r)=>{let{regexp:n,keys:o}=t(e||""),a=n.exec(r);if(!a)return[!1,null];let i=o.reduce((e,r,t)=>(e[r.name]=a[t+1],e),{});return[!0,i]}}(),base:""},e9=(t={__c:r="__cC"+Y++,__:e3,Consumer:function(e,r){return e.children(r)},Provider:function(e){var t,n;return this.getChildContext||(t=[],(n={})[r]=this,this.getChildContext=function(){return n},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&t.some(function(e){e.__e=!0,en(e)})},this.sub=function(e){t.push(e);var r=e.componentWillUnmount;e.componentWillUnmount=function(){t.splice(t.indexOf(e),1),r&&r.call(e)}}),e.children}}).Provider.__=t.Consumer.contextType=t,e8=()=>{var e,r;return e=e_.context[e9.__c],(r=ex(eg++,9)).c=e9,e?(null==r.__&&(r.__=!0,e.sub(e_)),e.props.value):e9.__},e5=e=>e.hook(e),e7=e=>{let r=e8(),[t]=e5(r);return r.matcher(e,t)},re=({hook:e,matcher:r,ssrPath:t,base:n="",parent:o,children:a})=>{let i=(a,i=o||e3)=>(a.hook=e||i.hook,a.matcher=r||i.matcher,a.ssrPath=t||i.ssrPath,a.ownBase=n,a.parent=o,a),[s]=eR(()=>i({get base(){return(s.parent||e3).base+s.ownBase}}));return eT(()=>{i(s)}),Z(e9.Provider,{value:s,children:a})},rr=({path:e,match:r,component:t,children:n})=>{let o=e7(e),[a,i]=r||o;return a?t?Z(t,{params:i}):"function"==typeof n?n(i):n:null},rt=(e,r)=>{let t=e8(),[,n]=e5(t),{to:o,href:a=o,children:i,onClick:s}=e,u=eY(r=>{r.ctrlKey||r.metaKey||r.altKey||r.shiftKey||0!==r.button||(s&&s(r),r.defaultPrevented||(r.preventDefault(),n(o||a,e)))}),l={href:"~"===a[0]?a.slice(1):t.base+a,onClick:u,to:null,ref:r},c=L(i)?i:Z("a",e);return ep(c,l)},rn=e=>Array.isArray(e)?[].concat(...e.map(e=>e&&e.type===ee?rn(e.props.children):rn(e))):[e],ro=({children:e,location:r})=>{let t=e8(),n=t.matcher,[o]=e5(t);for(let t of rn(e)){let e=0;if(L(t)&&(e=t.props.path?n(t.props.path,r||o):[!0,{}])[0])return ep(t,{match:e})}return null},ra=()=>window.location.hash.replace("#","")||"/",ri=({url:e})=>`/#/play/${encodeURIComponent(e)}`,rs=e=>{if("/"===e)return"home";let r=e.split("/").filter(Boolean)[0];return r||""},ru=()=>{var e;let[r,t]=eR(ra());eC(()=>{let e=()=>{let e=ra();e!==r&&(t(e),window.scrollTo(0,0))};return e(),window.addEventListener("hashchange",e),()=>window.removeEventListener("hashchange",e)},[r,t]);let n=(e=e=>{window.location.hash=e.replace("#/","")},eb=8,ez(function(){return e},[]));return[r,n]},rl=["light","dim","dark","solarized-light","solarized-dark","emo","redrum","toxin","valve","wasp","a8008","a80s_after_dark","a9009","aether","alduin","alpine","arch","aurora","beach","bento","bingsu","bliss","blue_dolphin","blueberry_dark","blueberry_light","botanical","bouquet","breeze","bushido","cafe","camping","carbon","catppuccin","chaos_theory","cheesecake","cherry_blossom","comfy","copper","creamsicle","cyberspace","dark_magic_girl","dark_note","darling","deku","desert_oasis","dev","diner","dino","dmg","dollar","dots","dracula","drowning","dualshot","earthsong","everblush","evil_eye","ez_mode","fire","fledgling","fleuriste","froyo","frozen_llama","fruit_chew","fundamentals","future_funk","godspeed","graen","grand_prix","gruvbox_dark","gruvbox_light","hammerhead","hanok","hedge","honey","horizon","husqy","iceberg_dark","iceberg_light","ishtar","iv_clover","iv_spade","joker","laser","lavender","leather","lil_dragon","lime","luna","magic_girl","mashu","matcha_moccha","material","matrix","menthol","metaverse","metropolis","mexican","miami","miami_nights","midnight","milkshake","mint","mizu","modern_dolch","modern_dolch_light","modern_ink","monokai","moonlight","mountain","mr_sleeves","ms_cupcakes","muted","nautilus","nebula","night_runner","nord","nord_light","norse","oblivion","olive","olivia","onedark","our_theme","paper","passion_fruit","pastel","peach_blossom","peaches","pink_lemonade","pulse","purpurite","red_dragon","red_samurai","repose_dark","repose_light","retro","retrocast","rose_pine","rose_pine_dawn","rose_pine_moon","rudy","ryujinscales","serika","serika_dark","sewing_tin","sewing_tin_light","shadow","shoko","slambook","snes","soaring_skies","sonokai","stealth","strawberry","striker","superuser","sweden","taro","terminal","terra","terror_below","tiramisu","trackday","trance","tron_orange","vaporwave","viridescent","voc","vscode","watermelon","wavez","witch_girl"],rc="elseifplayer/theme",rd=rl[0],rf=()=>{let e=localStorage.getItem(rc);return e||rd},rm=e=>rl.includes(e)?e:rf(),rh=(e=rf())=>{let[r,t]=eR(e),n=e=>{let r=rm(e);t(r),localStorage.setItem(rc,r)};return{currentTheme:r,setTheme:n,setRandomTheme:()=>{let e=rl[Math.floor(Math.random()*rl.length)];n(e)},themes:rl}};function rp({theme:e,setLocation:r,buildLink:t}){return ew("input",{type:"file",onChange:({target:n})=>{let o=n.files[0],a=`${URL.createObjectURL(o)}#${o.name}`;r(t({url:a,theme:e}))}})}function rv({theme:e,setLocation:r,buildLink:t}){let n=/^(http|https):\/\/[^ "]+$/;return ew("input",{type:"text",placeholder:"https://...",onKeyPress:({keyCode:o,target:a})=>{if(13!==o)return;let i=encodeURI(a.value);n.test(i)&&r(t({url:i,theme:e}))}})}function rw({themeEngine:e}){let r=e.themes.map(e=>ew("option",{value:e,children:e},e));return ew("select",{value:e.currentTheme,onChange:({target:r})=>e.setTheme(r.value),children:r})}function rg({themeEngine:e}){let r=ru()[1];return ew("main",{children:[ew("h1",{children:"ElseIFPlayer"}),ew("section",{children:ew("p",{children:["Interactive Fiction interpreter that runs right in your browser.",ew("br",{}),"Source code can be found in this ",ew("a",{target:"_blank",rel:"noopener noreferrer",href:"https://github.com/He4eT/elseifplayer",children:"repository"}),"."]})}),ew("hr",{}),ew("section",{children:[ew("h2",{children:"Interface Theme"}),ew(rw,{themeEngine:e}),ew("p",{children:["Preview and choose from available themes on the ",ew(rt,{href:"/#/themes/",children:"themes page"}),"."]}),ew("p",{children:ew("small",{children:"Double-click the input field during the game to enter full-screen mode."})})]}),ew("hr",{}),ew("section",{children:[ew("h2",{children:"Play a Game from the List"}),ew("p",{children:ew(rt,{href:"/#/games/",children:"IFDB games"})})]}),ew("hr",{}),ew("section",{children:[ew("h2",{children:"Play the Game from a File"}),ew("p",{children:ew("details",{children:[ew("summary",{children:"Supported formats"}),ew("p",{children:"Text-only games are supported:"}),ew("ul",{children:[ew("li",{children:"ADRIFT 4 (.taf)"}),ew("li",{children:"Glulx (.gblorb, .ulx)"}),ew("li",{children:"Hugo (.hex)"}),ew("li",{children:"TADS 2/3 (.gam, .t3)"}),ew("li",{children:"Z-code (.z3, .z4, .z5, .z8, .blorb)"})]})]})}),ew("p",{children:ew("label",{children:["Local file: ",ew("br",{}),ew(rp,{setLocation:r,buildLink:ri,theme:e.currentTheme})]})}),ew("p",{children:ew("label",{children:["Direct link: ",ew("br",{}),ew(rv,{setLocation:r,buildLink:ri,theme:e.currentTheme})]})})]})]})}function r_({name:e,ifdb:r,url:t}){return ew("div",{children:[ew("h4",{children:e}),ew("a",{target:"_blank",rel:"noopener noreferrer",href:r,children:"IFDB page"}),ew("span",{children:" | "}),ew(rt,{href:ri({url:t}),children:"Play"})]})}var ry=[["Lost Pig","https://ifdb.org/viewgame?id=mohwfk47yjzii14w","https://mirror.ifarchive.org/if-archive/games/zcode/LostPig.z8"],["Counterfeit Monkey","https://ifdb.org/viewgame?id=aearuuxv83plclpl","https://mirror.ifarchive.org/if-archive/games/glulx/CounterfeitMonkey.gblorb"],["Anchorhead","https://ifdb.org/viewgame?id=op0uw1gn1tjqmjt7","https://ifarchive.org/if-archive/games/zcode/anchor.z8"],["Galatea","https://ifdb.org/viewgame?id=urxrv27t7qtu52lb","https://mirror.ifarchive.org/if-archive/games/zcode/Galatea.zblorb"],["Photopia","https://ifdb.org/viewgame?id=ju778uv5xaswnlpl","https://mirror.ifarchive.org/if-archive/games/zcode/photopia.z5"],["Spider and Web","https://ifdb.org/viewgame?id=2xyccw3pe0uovfad","https://mirror.ifarchive.org/if-archive/games/zcode/Tangle.z5"],["Slouching Towards Bedlam","https://ifdb.org/viewgame?id=032krqe6bjn5au78","https://mirror.ifarchive.org/if-archive/games/competition2003/zcode/slouch/slouch.z5"],["Curses!","https://ifdb.org/viewgame?id=plvzam05bmz3enh8","https://mirror.ifarchive.org/if-archive/games/zcode/curses.z5"],["Violet","https://ifdb.org/viewgame?id=4glrrfh7wrp9zz7b","https://mirror.ifarchive.org/if-archive/games/zcode/Violet.zblorb"],["The Wizard Sniffer","https://ifdb.org/viewgame?id=uq18rw9gt8j58da","https://ifarchive.org/if-archive/games/competition2017/The%20Wizard%20Sniffer/The_Wizard_Sniffer.gblorb"],["Shade","https://ifdb.org/viewgame?id=hsfc7fnl40k4a30q","https://mirror.ifarchive.org/if-archive/games/zcode/shade.z5"],["Vespers","https://ifdb.org/viewgame?id=6dj2vguyiagrhvc2","https://mirror.ifarchive.org/if-archive/games/zcode/vespers.z8"],["Savoir-Faire","https://ifdb.org/viewgame?id=p0cizeb3kiwzlm2p","https://mirror.ifarchive.org/if-archive/games/zcode/Savoir-Faire.zblorb"],["Aisle","https://ifdb.org/viewgame?id=j49crlvd62mhwuzu","https://mirror.ifarchive.org/if-archive/games/zcode/Aisle.z5"],["Gun Mute","https://ifdb.org/viewgame?id=xwedbibfksczn7eq","https://mirror.ifarchive.org/if-archive/games/tads/GunMute.t3"],["A Beauty Cold and Austere","https://ifdb.org/viewgame?id=y9y7jozi0l76bb82","https://ifarchive.org/if-archive/games/competition2017/A%20Beauty%20Cold%20and%20Austere/A_Beauty_Cold_and_Austere.gblorb"],["Coloratura","https://ifdb.org/viewgame?id=g0fl99ovcrq2sqzk","https://mirror.ifarchive.org/if-archive/games/competition2013/glulx/coloratura/Coloratura.gblorb"],["Lime Ergot","https://ifdb.org/viewgame?id=b8mb4fcwmf1hrxl","https://mirror.ifarchive.org/if-archive/games/glulx/Lime_Ergot.gblorb"],["Rameses","https://ifdb.org/viewgame?id=0stz0hr7a98bp9mp","https://mirror.ifarchive.org/if-archive/games/zcode/rameses.zblorb"],["The Wand","https://ifdb.org/viewgame?id=2jil5vbxmbv8riv1","https://ifarchive.org/if-archive/games/glulx/Wand.ulx"],["1893: A World's Fair Mystery","https://ifdb.org/viewgame?id=00e0t7swrris5pg6","https://mirror.ifarchive.org/if-archive/games/tads/1893.gam"],["Adventure","https://ifdb.org/viewgame?id=fft6pu91j85y4acv","https://mirror.ifarchive.org/if-archive/games/zcode/Advent.z5"],["Alias 'The Magpie'","https://ifdb.org/viewgame?id=yspn49v69hzc8rtb","https://ifarchive.org/if-archive/games/competition2018/Alias%20The%20Magpie/Alias%20%27The%20Magpie%27.gblorb"],["Cragne Manor","https://ifdb.org/viewgame?id=4x7nltu8p851tn4x","https://mirror.ifarchive.org/if-archive/games/glulx/cragne.gblorb"],["The Edifice","https://ifdb.org/viewgame?id=4tb9soabrb4apqzd","https://mirror.ifarchive.org/if-archive/games/zcode/edifice.z5"],["Endless, Nameless","https://ifdb.org/viewgame?id=7vtm1rq16hh3xch","https://ifarchive.org/if-archive/games/zcode/nameless.z8"],["Everybody Dies","https://ifdb.org/viewgame?id=lyblvftb8xtlo0a1","https://mirror.ifarchive.org/if-archive/games/competition2008/glulx/everybodydies/EverybodyDies.gblorb"],["Foo Foo","https://ifdb.org/viewgame?id=ec6x9y8qcmsrxob9","https://ifarchive.org/if-archive/games/springthing/2016/FooFoo.gblorb"],["The Gostak","https://ifdb.org/viewgame?id=w5s3sv43s3p98v45","https://mirror.ifarchive.org/if-archive/games/zcode/gostak.z5"],["Inside the Facility","https://ifdb.org/viewgame?id=stsdri5zh7a4i5my","https://ifarchive.org/if-archive/games/competition2016/Inside%20the%20Facility/Facility.z8"],["Make It Good","https://ifdb.org/viewgame?id=jdrbw1htq4ah8q57","https://mirror.ifarchive.org/if-archive/games/zcode/MakeItGood.z8"],["Sub Rosa","https://ifdb.org/viewgame?id=73nvz9yui87ub3sd","https://mirror.ifarchive.org/if-archive/games/glulx/Sub_Rosa.gblorb"],["Suveh Nux","https://ifdb.org/viewgame?id=xkai23ry99qdxce3","https://mirror.ifarchive.org/if-archive/games/zcode/suvehnux.z5"],["Varicella","https://ifdb.org/viewgame?id=ywwlr3tpxnktjasd","https://mirror.ifarchive.org/if-archive/games/zcode/vgame.z8"]].map(([e,r,t])=>({name:e,ifdb:r,url:t}));let rE={name:"The Dreamhold",ifdb:"https://ifdb.org/viewgame?id=3myqnrs64nbtwdaz",url:"https://mirror.ifarchive.org/if-archive/games/zcode/dreamhold.z8"};function rb(){return ew("main",{className:"-soi4G_games",children:[ew("h1",{children:[ew("a",{target:"_blank",rel:"noopener noreferrer",href:"https://ifdb.org/",title:"The Interactive Fiction Database",children:"IFDB"})," Games"]}),ew("p",{children:["Choose one or ",ew(rt,{href:"/",children:"go back"}),"."]}),ew("section",{className:"-soi4G_tutorial",children:[ew("h2",{children:"Tutorial"}),ew("p",{children:"If you are not familiar with Interactive Fiction, you should start with this tutorial game by\xa0Andrew\xa0Plotkin:"}),ew("ul",{children:ew("li",{children:ew(r_,{...rE})})})]}),ew("h2",{children:"Interactive Fiction Top 50 of All Time"}),ew("p",{children:[ew("a",{target:"_blank",rel:"noopener noreferrer",href:"https://ifdb.org/search?comp&sortby=awn&searchfor=series%3AInteractive+Fiction+Top+50+of+All+Time",children:"Every four years "}),", Victor Gijsbers puts together a list of the top 50 IF games of all time. Here is an almost complete and slightly rearranged version of the ",ew("a",{target:"_blank",rel:"noopener noreferrer",href:"https://ifdb.org/viewcomp?id=1lv599reviaxvwo7",children:"list from 2019"}),":"]}),ew("ol",{children:ry.map(e=>ew("li",{children:ew(r_,{...e})},e.name))})]})}h="qdlvgW_input",p="qdlvgW_message",v="qdlvgW_output",w="qdlvgW_subheader",g="qdlvgW_themePreview";let rk=(e,r)=>ew("section",{className:[g,r].join(" "),children:[ew("div",{className:v,children:[ew("div",{className:[p,h].join(" "),children:"> look"}),ew("div",{children:ew("br",{})}),ew("div",{className:[p,w].join(" "),children:r}),ew("div",{children:"Observe a vibrant demonstration of colors at work, showcasing their versatile usage right before your eyes."}),ew("div",{children:ew("br",{})})]}),ew("button",{onClick:()=>e.setTheme(r),children:"Apply this colors"})]},r);function rS({themeEngine:e}){let r=e.themes.map(r=>rk(e,r));return ew("main",{className:"qdlvgW_themes",children:[ew("h1",{children:"Themes Page"}),ew("p",{children:["Choose one or ",ew(rt,{href:"/",children:"go back"}),"."]}),ew("section",{className:[g,"qdlvgW_current"].join(" "),children:[ew("h2",{children:"Current Theme"}),ew("div",{className:v,children:[ew("div",{className:[p,h].join(" "),children:"> look"}),ew("div",{children:ew("br",{})}),ew("div",{className:[p,w].join(" "),children:["Selected: ",e.currentTheme]}),ew("div",{children:"You can set random one with the button below or choose any theme from the list."}),ew("div",{children:ew("br",{})})]}),ew("button",{onClick:()=>e.setRandomTheme(),children:"Set a random theme"})]}),ew("h2",{children:"Theme List"}),ew("section",{children:r})]})}class rD{constructor(e){this.dialog=e.options.Dialog,this.streaming=this.dialog.streaming,this.FS=e.Module.FS,this.VM=e,this.filename_map={},this.filename_counter=0}close(e){"storyfile"===e.name||(this.streaming?e.fstream.fclose():2!==e.fmode&&this.dialog.file_write(e.fref,e.data))}createNode(e,r,t){let n=this.FS;if(!n.isDir(t)&&!n.isFile(t))throw new n.ErrnoError(28);let o=n.createNode(e,r,t);return o.node_ops=this,o.stream_ops=this,o.timestamp=Date.now(),o}getattr(e){let r="storyfile"===e.name?this.VM.data.length:0;return{atime:new Date(e.timestamp),ctime:new Date(e.timestamp),dev:1,gid:0,ino:e.id,mode:e.mode,mtime:new Date(e.timestamp),nlink:1,rdev:e.rdev,size:r,uid:0}}get_dialog_ref(e){let[r,t]=e.split(".");t=t.replace("glk","");let n="";return"save"===t&&(n=this.VM.Module.AsciiToString(this.VM.Module._gidispatch_get_game_id())),this.dialog.file_construct_ref(r,t,n)}llseek(e,r,t){let n=r;if(1===t)n+=e.position;else if(2===t){if("storyfile"===e.name)n+=e.data.length;else if(this.streaming){let r=e.fstream.ftell();e.fstream.fseek(0,2),n+=e.fstream.ftell(),e.fstream.fseek(r,0)}else n+=e.data.length}if(n<0)throw new this.FS.ErrnoError(28);return n}lookup(e,r){if("storyfile"!==r){let e=this.filename_map[r]||r;if(!this.dialog.file_ref_exists(this.streaming?{filename:e}:this.get_dialog_ref(e)))throw new this.FS.ErrnoError(44)}return this.createNode(e,r,33206)}mknod(e,r,t){return this.createNode(e,r,t)}mmap(){throw Error("EmglkenFS.mmap")}mount(){return this.createNode(null,"/",16895,0)}msync(){throw Error("EmglkenFS.msync")}open(e){if(e.name=e.node.name,"storyfile"===e.name)e.data=this.VM.data;else{var r;let t=1024&(r=e.flags)?5:1&r?1:2&r?3:2,n=this.filename_map[e.name]||e.name;this.streaming?e.fstream=this.dialog.file_fopen(t,{filename:n}):(e.fref=this.get_dialog_ref(n),e.fmode=t,e.data=null,1!==t&&(e.data=this.dialog.file_read(e.fref)),null==e.data&&(e.data=new Uint8Array(0),2!==t&&this.dialog.file_write(e.fref,"",!0)))}}read(e,r,t,n,o){if(0===n)return 0;if("storyfile"===e.name){let a=Math.min(e.data.length-o,n);return r.set(e.data.subarray(o,o+a),t),a}if(this.streaming){e.fstream.fseek(o,0);let a=e.fstream.BufferClass.from(r.buffer,t,n);return e.fstream.fread(a,n)}{let a=Math.min(e.data.length-o,n);return r.set(e.data.subarray(o,o+a),t),a}}readdir(){throw Error("EmglkenFS.readdir")}readlink(){throw new this.FS.ErrnoError(28)}register_filename(e,r){let t="save"===r?".glksave":"data"===r?".glkdata":".txt";if(/\.(glkdata|glksave|txt)$/.test(e)||(e+=t),this.filename_map[e])return this.filename_map[e];let n="emglken_fake_file_"+this.filename_counter++;return this.filename_map[e]=n,this.filename_map[n+t]=e,n}rename(){throw Error("EmglkenFS.rename")}rmdir(){throw Error("EmglkenFS.rmdir")}setattr(){}symlink(){throw Error("EmglkenFS.symlink")}unlink(e,r){let t=this.filename_map[r]||r;this.dialog.file_remove_ref(this.get_dialog_ref(t))}write(e,r,t,n,o){if("storyfile"===e.name)throw Error("EmglkenFS.write: cannot write to storyfile");if(this.streaming){e.fstream.fseek(o,0);let a=e.fstream.BufferClass.from(r).subarray(t,t+n);return e.fstream.fwrite(a,n)}{o=o||e.position;let a=n+o;if(a>e.data.length){let r=e.data;e.data=new Uint8Array(a),e.data.set(r)}return e.data.set(r.subarray(t,t+n),o),n}}}let rF={arguments:["storyfile"]};class rM{init(e,r){this.data=e,this.options=Object.assign({},rF,this.default_options(),r)}async start(){let e=new TextEncoder,r="",t={arguments:this.options.show_help?["-help"]:this.options.arguments,emglken_stdin_buffers:[],emglken_stdin_ready(){},locateFile(){},print:e=>{if(""!==r||""===e||e.startsWith("{")){if(r+=e,e.endsWith("}")){let e;try{e=JSON.parse(r)}catch(e){}e&&(r="",e.specialinput&&"fileref_prompt"===e.specialinput.type&&(this.last_fr_usage=e.specialinput.filetype),this.options.GlkOte.update(e))}}else console.log(e)},preRun:()=>{let e=t.FS;this.EFS=new rD(this),e.mkdir("/emglken"),e.mount(this.EFS,{},"/emglken"),e.chdir("/emglken")},wasmBinary:this.options.wasmBinary};this.Module=t,this.options.accept=r=>{"specialresponse"===r.type&&"fileref_prompt"===r.response&&r.value&&(this.EFS.streaming?r.value=this.EFS.register_filename(r.value.filename,this.last_fr_usage):r.value=r.value.filename);let n=JSON.stringify(r),o=e.encode(n);t.emglken_stdin_buffers.push(o),t.emglken_stdin_ready()},await this.options.vmcore(t),this.options.GlkOte.init(this.options)}}var rA={};rA=B("6kBsm").getBundleURL("ejVIo")+B("n9Yfb").resolve("5EF4K");var rP=(n="file:///node_modules/emglken/build/bocfel-core.js",function(e={}){var r,t,o,a,i,s,u,l,c,d,f,m,h,p,v,w,g,_,e=void 0!==e?e:{};e.ready=new Promise(function(e,r){t=e,o=r});var y=Object.assign({},e),E=[],b="./this.program",k=(e,r)=>{throw r},S="";"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),n&&(S=n),S=0!==S.indexOf("blob:")?S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):"",a=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},i=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{if(200==n.status||0==n.status&&n.response){r(n.response);return}t()},n.onerror=t,n.send(null)};var D=e.print||console.log.bind(console),F=e.printErr||console.warn.bind(console);Object.assign(e,y),y=null,e.arguments&&(E=e.arguments),e.thisProgram&&(b=e.thisProgram),e.quit&&(k=e.quit),e.wasmBinary&&(u=e.wasmBinary);var M=e.noExitRuntime||!1;"object"!=typeof WebAssembly&&V("no native wasm support detected");var A=!1,P=new TextDecoder("utf8");function x(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;return P.decode(e.buffer?e.subarray(r,o):new Uint8Array(e.slice(r,o)))}function R(e,r){if(!e)return"";for(var t=e+r,n=e;!(n>=t)&&f[n];)++n;return P.decode(f.subarray(e,n))}function C(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i)),s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function T(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r}function N(){var r=l.buffer;e.HEAP8=d=new Int8Array(r),e.HEAP16=m=new Int16Array(r),e.HEAP32=h=new Int32Array(r),e.HEAPU8=f=new Uint8Array(r),e.HEAPU16=new Uint16Array(r),e.HEAPU32=p=new Uint32Array(r),e.HEAPF32=new Float32Array(r),e.HEAPF64=new Float64Array(r)}var z=[],B=[],j=[],O=[],I=[],L=!1,U=0,H=0,W=null,q=null;function Y(r){H++,e.monitorRunDependencies&&e.monitorRunDependencies(H)}function G(r){if(H--,e.monitorRunDependencies&&e.monitorRunDependencies(H),0==H&&(null!==W&&(clearInterval(W),W=null),q)){var t=q;q=null,t()}}function V(r){e.onAbort&&e.onAbort(r),F(r="Aborted("+r+")"),A=!0,c=1,r+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(r);throw o(t),t}function X(e){return e.startsWith("data:application/octet-stream;base64,")}function K(e){try{if(e==v&&u)return new Uint8Array(u);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}catch(e){V(e)}}function $(e,r,t){return(u||"function"!=typeof fetch?Promise.resolve().then(function(){return K(e)}):fetch(e,{credentials:"same-origin"}).then(function(r){if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(function(){return K(e)})).then(function(e){return WebAssembly.instantiate(e,r)}).then(function(e){return e}).then(t,function(e){F("failed to asynchronously prepare wasm: "+e),V(e)})}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Z(r){for(;r.length>0;)r.shift()(e)}e.locateFile?X(v="bocfel-core.wasm")||(r=v,v=e.locateFile?e.locateFile(r,S):S+r):v=new URL(rA).href;var Q=[],ee=0,er=0;function et(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){p[this.ptr+4>>2]=e},this.get_type=function(){return p[this.ptr+4>>2]},this.set_destructor=function(e){p[this.ptr+8>>2]=e},this.get_destructor=function(){return p[this.ptr+8>>2]},this.set_refcount=function(e){h[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,d[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=d[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,d[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=d[this.ptr+13>>0]},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=h[this.ptr>>2];h[this.ptr>>2]=e+1},this.release_ref=function(){var e=h[this.ptr>>2];return h[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){p[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return p[this.ptr+16>>2]},this.get_exception_ptr=function(){if(eI(this.get_type()))return p[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}function en(){var e=er;if(!e)return eN(0),0;var r=new et(e);r.set_adjusted_ptr(e);var t=r.get_type();if(!t)return eN(0),e;for(var n=0;n"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=eo.isAbs(e),t="/"===e.substr(-1);return(e=eo.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=eo.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=eo.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return -1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments);return eo.normalize(e.join("/"))},join2:(e,r)=>eo.normalize(e+"/"+r)},ea={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:el.cwd();if("string"!=typeof n)throw TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=eo.isAbs(n)}return e=eo.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"),(r?"/":"")+e||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=ea.resolve(e).substr(1),r=ea.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t:T(e)+1),o=C(e,n,0,n.length);return r&&(n.length=o),n}var es={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){es.ttys[e]={input:[],output:[],ops:r},el.registerDevice(e,es.stream_ops)},stream_ops:{open:function(e){var r=es.ttys[e.node.rdev];if(!r)throw new el.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new el.ErrnoError(60);for(var a,i=0,s=0;s0&&(D(x(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(F(x(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(F(x(e.output,0)),e.output=[])}}},eu={ops_table:null,mount:function(e){return eu.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(el.isBlkdev(t)||el.isFIFO(t))throw new el.ErrnoError(63);eu.ops_table||(eu.ops_table={dir:{node:{getattr:eu.node_ops.getattr,setattr:eu.node_ops.setattr,lookup:eu.node_ops.lookup,mknod:eu.node_ops.mknod,rename:eu.node_ops.rename,unlink:eu.node_ops.unlink,rmdir:eu.node_ops.rmdir,readdir:eu.node_ops.readdir,symlink:eu.node_ops.symlink},stream:{llseek:eu.stream_ops.llseek}},file:{node:{getattr:eu.node_ops.getattr,setattr:eu.node_ops.setattr},stream:{llseek:eu.stream_ops.llseek,read:eu.stream_ops.read,write:eu.stream_ops.write,allocate:eu.stream_ops.allocate,mmap:eu.stream_ops.mmap,msync:eu.stream_ops.msync}},link:{node:{getattr:eu.node_ops.getattr,setattr:eu.node_ops.setattr,readlink:eu.node_ops.readlink},stream:{}},chrdev:{node:{getattr:eu.node_ops.getattr,setattr:eu.node_ops.setattr},stream:el.chrdev_stream_ops}});var o=el.createNode(e,r,t,n);return el.isDir(o.mode)?(o.node_ops=eu.ops_table.dir.node,o.stream_ops=eu.ops_table.dir.stream,o.contents={}):el.isFile(o.mode)?(o.node_ops=eu.ops_table.file.node,o.stream_ops=eu.ops_table.file.stream,o.usedBytes=0,o.contents=null):el.isLink(o.mode)?(o.node_ops=eu.ops_table.link.node,o.stream_ops=eu.ops_table.link.stream):el.isChrdev(o.mode)&&(o.node_ops=eu.ops_table.chrdev.node,o.stream_ops=eu.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r){if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}}},node_ops:{getattr:function(e){var r={};return r.dev=el.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,el.isDir(e.mode)?r.size=4096:el.isFile(e.mode)?r.size=e.usedBytes:el.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&eu.resizeFileStorage(e,r.size)},lookup:function(e,r){throw el.genericErrors[44]},mknod:function(e,r,t,n){return eu.createNode(e,r,t,n)},rename:function(e,r,t){if(el.isDir(e.mode)){var n;try{n=el.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new el.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=el.lookupNode(e,r);for(var n in t.contents)throw new el.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=eu.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!el.isLink(e.mode))throw new el.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||t+r{if(!(e=ea.resolve(e)))return{path:"",node:null};if((r=Object.assign({follow_mount:!0,recurse_count:0},r)).recurse_count>8)throw new el.ErrnoError(32);for(var t=e.split("/").filter(e=>!!e),n=el.root,o="/",a=0;a40)throw new el.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var r;;){if(el.isRoot(e)){var t=e.mount.mountpoint;if(!r)return t;return"/"!==t[t.length-1]?t+"/"+r:t+r}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%el.nameTable.length},hashAddNode:e=>{var r=el.hashName(e.parent.id,e.name);e.name_next=el.nameTable[r],el.nameTable[r]=e},hashRemoveNode:e=>{var r=el.hashName(e.parent.id,e.name);if(el.nameTable[r]===e)el.nameTable[r]=e.name_next;else for(var t=el.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=el.mayLookup(e);if(t)throw new el.ErrnoError(t,e);for(var n=el.hashName(e.id,r),o=el.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return el.lookup(e,r)},createNode:(e,r,t,n)=>{var o=new el.FSNode(e,r,t,n);return el.hashAddNode(o),o},destroyNode:e=>{el.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>(61440&e)==32768,isDir:e=>(61440&e)==16384,isLink:e=>(61440&e)==40960,isChrdev:e=>(61440&e)==8192,isBlkdev:e=>(61440&e)==24576,isFIFO:e=>(61440&e)==4096,isSocket:e=>(49152&e)==49152,flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=el.flagModes[e];if(void 0===r)throw Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>el.ignorePermissions?0:r.includes("r")&&!(292&e.mode)||r.includes("w")&&!(146&e.mode)||r.includes("x")&&!(73&e.mode)?2:0,mayLookup:e=>el.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,r)=>{try{return el.lookupNode(e,r),20}catch(e){}return el.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{try{n=el.lookupNode(e,r)}catch(e){return e.errno}var n,o=el.nodePermissions(e,"wx");if(o)return o;if(t){if(!el.isDir(n.mode))return 54;if(el.isRoot(n)||el.getPath(n)===el.cwd())return 10}else if(el.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?el.isLink(e.mode)?32:el.isDir(e.mode)&&("r"!==el.flagsToPermissionString(r)||512&r)?31:el.nodePermissions(e,el.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,r=el.MAX_OPEN_FDS)=>{for(var t=e;t<=r;t++)if(!el.streams[t])return t;throw new el.ErrnoError(33)},getStream:e=>el.streams[e],createStream:(e,r,t)=>{el.FSStream||(el.FSStream=function(){this.shared={}},el.FSStream.prototype={},Object.defineProperties(el.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return(2097155&this.flags)!=1}},isWrite:{get:function(){return(2097155&this.flags)!=0}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new el.FSStream,e);var n=el.nextfd(r,t);return e.fd=n,el.streams[n]=e,e},closeStream:e=>{el.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=el.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new el.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{el.devices[e]={stream_ops:r}},getDevice:e=>el.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),el.syncFSRequests++,el.syncFSRequests>1&&F("warning: "+el.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=el.getMounts(el.root.mount),n=0;function o(e){return el.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach(r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)})},mount:(e,r,t)=>{var n,o="/"===t,a=!t;if(o&&el.root)throw new el.ErrnoError(10);if(!o&&!a){var i=el.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,el.isMountpoint(n))throw new el.ErrnoError(10);if(!el.isDir(n.mode))throw new el.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?el.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:e=>{var r=el.lookupPath(e,{follow_mount:!1});if(!el.isMountpoint(r.node))throw new el.ErrnoError(28);var t=r.node,n=t.mounted,o=el.getMounts(n);Object.keys(el.nameTable).forEach(e=>{for(var r=el.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&el.destroyNode(r),r=t}}),t.mounted=null;var a=t.mount.mounts.indexOf(n);t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=el.lookupPath(e,{parent:!0}).node,o=eo.basename(e);if(!o||"."===o||".."===o)throw new el.ErrnoError(28);var a=el.mayCreate(n,o);if(a)throw new el.ErrnoError(a);if(!n.node_ops.mknod)throw new el.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=(void 0!==r?r:438)&4095|32768,el.mknod(e,r,0)),mkdir:(e,r)=>(r=(void 0!==r?r:511)&1023|16384,el.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,el.mknod(e,r,t)),symlink:(e,r)=>{if(!ea.resolve(e))throw new el.ErrnoError(44);var t=el.lookupPath(r,{parent:!0}).node;if(!t)throw new el.ErrnoError(44);var n=eo.basename(r),o=el.mayCreate(t,n);if(o)throw new el.ErrnoError(o);if(!t.node_ops.symlink)throw new el.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o,a=eo.dirname(e),i=eo.dirname(r),s=eo.basename(e),u=eo.basename(r);if(t=el.lookupPath(e,{parent:!0}).node,n=el.lookupPath(r,{parent:!0}).node,!t||!n)throw new el.ErrnoError(44);if(t.mount!==n.mount)throw new el.ErrnoError(75);var l=el.lookupNode(t,s),c=ea.relative(e,i);if("."!==c.charAt(0))throw new el.ErrnoError(28);if("."!==(c=ea.relative(r,a)).charAt(0))throw new el.ErrnoError(55);try{o=el.lookupNode(n,u)}catch(e){}if(l!==o){var d=el.isDir(l.mode),f=el.mayDelete(t,s,d);if(f||(f=o?el.mayDelete(n,u,d):el.mayCreate(n,u)))throw new el.ErrnoError(f);if(!t.node_ops.rename)throw new el.ErrnoError(63);if(el.isMountpoint(l)||o&&el.isMountpoint(o))throw new el.ErrnoError(10);if(n!==t&&(f=el.nodePermissions(t,"w")))throw new el.ErrnoError(f);el.hashRemoveNode(l);try{t.node_ops.rename(l,n,u)}catch(e){throw e}finally{el.hashAddNode(l)}}},rmdir:e=>{var r=el.lookupPath(e,{parent:!0}).node,t=eo.basename(e),n=el.lookupNode(r,t),o=el.mayDelete(r,t,!0);if(o)throw new el.ErrnoError(o);if(!r.node_ops.rmdir)throw new el.ErrnoError(63);if(el.isMountpoint(n))throw new el.ErrnoError(10);r.node_ops.rmdir(r,t),el.destroyNode(n)},readdir:e=>{var r=el.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new el.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=el.lookupPath(e,{parent:!0}).node;if(!r)throw new el.ErrnoError(44);var t=eo.basename(e),n=el.lookupNode(r,t),o=el.mayDelete(r,t,!1);if(o)throw new el.ErrnoError(o);if(!r.node_ops.unlink)throw new el.ErrnoError(63);if(el.isMountpoint(n))throw new el.ErrnoError(10);r.node_ops.unlink(r,t),el.destroyNode(n)},readlink:e=>{var r=el.lookupPath(e).node;if(!r)throw new el.ErrnoError(44);if(!r.node_ops.readlink)throw new el.ErrnoError(28);return ea.resolve(el.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=el.lookupPath(e,{follow:!r}).node;if(!t)throw new el.ErrnoError(44);if(!t.node_ops.getattr)throw new el.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>el.stat(e,!0),chmod:(e,r,t)=>{var n;if(!(n="string"==typeof e?el.lookupPath(e,{follow:!t}).node:e).node_ops.setattr)throw new el.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{el.chmod(e,r,!0)},fchmod:(e,r)=>{var t=el.getStream(e);if(!t)throw new el.ErrnoError(8);el.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;if(!(o="string"==typeof e?el.lookupPath(e,{follow:!n}).node:e).node_ops.setattr)throw new el.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{el.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=el.getStream(e);if(!n)throw new el.ErrnoError(8);el.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new el.ErrnoError(28);if("string"==typeof e){var t;t=el.lookupPath(e,{follow:!0}).node}else t=e;if(!t.node_ops.setattr)throw new el.ErrnoError(63);if(el.isDir(t.mode))throw new el.ErrnoError(31);if(!el.isFile(t.mode))throw new el.ErrnoError(28);var n=el.nodePermissions(t,"w");if(n)throw new el.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=el.getStream(e);if(!t)throw new el.ErrnoError(8);if((2097155&t.flags)==0)throw new el.ErrnoError(28);el.truncate(t.node,r)},utime:(e,r,t)=>{var n=el.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(r,t,n)=>{if(""===r)throw new el.ErrnoError(44);if(t="string"==typeof t?el.modeStringToFlags(t):t,n=void 0===n?438:n,n=64&t?4095&n|32768:0,"object"==typeof r)o=r;else{r=eo.normalize(r);try{var o;o=el.lookupPath(r,{follow:!(131072&t)}).node}catch(e){}}var a=!1;if(64&t){if(o){if(128&t)throw new el.ErrnoError(20)}else o=el.mknod(r,n,0),a=!0}if(!o)throw new el.ErrnoError(44);if(el.isChrdev(o.mode)&&(t&=-513),65536&t&&!el.isDir(o.mode))throw new el.ErrnoError(54);if(!a){var i=el.mayOpen(o,t);if(i)throw new el.ErrnoError(i)}512&t&&!a&&el.truncate(o,0),t&=-131713;var s=el.createStream({node:o,path:el.getPath(o),flags:t,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),!e.logReadFiles||1&t||(el.readFiles||(el.readFiles={}),r in el.readFiles||(el.readFiles[r]=1)),s},close:e=>{if(el.isClosed(e))throw new el.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{el.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(el.isClosed(e))throw new el.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new el.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new el.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new el.ErrnoError(28);if(el.isClosed(e)||(2097155&e.flags)==1)throw new el.ErrnoError(8);if(el.isDir(e.node.mode))throw new el.ErrnoError(31);if(!e.stream_ops.read)throw new el.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new el.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new el.ErrnoError(28);if(el.isClosed(e)||(2097155&e.flags)==0)throw new el.ErrnoError(8);if(el.isDir(e.node.mode))throw new el.ErrnoError(31);if(!e.stream_ops.write)throw new el.ErrnoError(28);e.seekable&&1024&e.flags&&el.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new el.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(el.isClosed(e))throw new el.ErrnoError(8);if(r<0||t<=0)throw new el.ErrnoError(28);if((2097155&e.flags)==0)throw new el.ErrnoError(8);if(!el.isFile(e.node.mode)&&!el.isDir(e.node.mode))throw new el.ErrnoError(43);if(!e.stream_ops.allocate)throw new el.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o)=>{if((2&n)!=0&&(2&o)==0&&(2097155&e.flags)!=2||(2097155&e.flags)==1)throw new el.ErrnoError(2);if(!e.stream_ops.mmap)throw new el.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:(e,r,t,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new el.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:(e,r={})=>{if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw Error('Invalid encoding type "'+r.encoding+'"');var t,n=el.open(e,r.flags),o=el.stat(e).size,a=new Uint8Array(o);return el.read(n,a,0,o,0),"utf8"===r.encoding?t=x(a,0):"binary"===r.encoding&&(t=a),el.close(n),t},writeFile:(e,r,t={})=>{t.flags=t.flags||577;var n=el.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(T(r)+1),a=C(r,o,0,o.length);el.write(n,o,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))el.write(n,r,0,r.byteLength,void 0,t.canOwn);else throw Error("Unsupported data type");el.close(n)},cwd:()=>el.currentPath,chdir:e=>{var r=el.lookupPath(e,{follow:!0});if(null===r.node)throw new el.ErrnoError(44);if(!el.isDir(r.node.mode))throw new el.ErrnoError(54);var t=el.nodePermissions(r.node,"x");if(t)throw new el.ErrnoError(t);el.currentPath=r.path},createDefaultDirectories:()=>{el.mkdir("/tmp"),el.mkdir("/home"),el.mkdir("/home/web_user")},createDefaultDevices:()=>{el.mkdir("/dev"),el.registerDevice(el.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),el.mkdev("/dev/null",el.makedev(1,3)),es.register(el.makedev(5,0),es.default_tty_ops),es.register(el.makedev(6,0),es.default_tty1_ops),el.mkdev("/dev/tty",el.makedev(5,0)),el.mkdev("/dev/tty1",el.makedev(6,0));var e=function(){if("object"!=typeof crypto||"function"!=typeof crypto.getRandomValues)return()=>V("randomDevice");var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}();el.createDevice("/dev","random",e),el.createDevice("/dev","urandom",e),el.mkdir("/dev/shm"),el.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{el.mkdir("/proc");var e=el.mkdir("/proc/self");el.mkdir("/proc/self/fd"),el.mount({mount:()=>{var r=el.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=el.getStream(+r);if(!t)throw new el.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>t.path}};return n.parent=n,n}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{e.stdin?el.createDevice("/dev","stdin",e.stdin):el.symlink("/dev/tty","/dev/stdin"),e.stdout?el.createDevice("/dev","stdout",null,e.stdout):el.symlink("/dev/tty","/dev/stdout"),e.stderr?el.createDevice("/dev","stderr",null,e.stderr):el.symlink("/dev/tty1","/dev/stderr"),el.open("/dev/stdin",0),el.open("/dev/stdout",1),el.open("/dev/stderr",1)},ensureErrnoError:()=>{el.ErrnoError||(el.ErrnoError=function(e,r){this.name="ErrnoError",this.node=r,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},el.ErrnoError.prototype=Error(),el.ErrnoError.prototype.constructor=el.ErrnoError,[44].forEach(e=>{el.genericErrors[e]=new el.ErrnoError(e),el.genericErrors[e].stack=""}))},staticInit:()=>{el.ensureErrnoError(),el.nameTable=Array(4096),el.mount(eu,{},"/"),el.createDefaultDirectories(),el.createDefaultDevices(),el.createSpecialDirectories(),el.filesystems={MEMFS:eu}},init:(r,t,n)=>{el.init.initialized=!0,el.ensureErrnoError(),e.stdin=r||e.stdin,e.stdout=t||e.stdout,e.stderr=n||e.stderr,el.createStandardStreams()},quit:()=>{el.init.initialized=!1,eM(0);for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=el.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{var t=el.lookupPath(e,{follow:!r});e=t.path}catch(e){}var n={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var t=el.lookupPath(e,{parent:!0});n.parentExists=!0,n.parentPath=t.path,n.parentObject=t.node,n.name=eo.basename(e),t=el.lookupPath(e,{follow:!r}),n.exists=!0,n.path=t.path,n.object=t.node,n.name=t.node.name,n.isRoot="/"===t.path}catch(e){n.error=e.errno}return n},createPath:(e,r,t,n)=>{e="string"==typeof e?e:el.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=eo.join2(e,a);try{el.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=eo.join2("string"==typeof e?e:el.getPath(e),r),i=el.getMode(n,o);return el.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:el.getPath(e),i=r?eo.join2(e,r):e);var s=el.getMode(n,o),u=el.create(i,s);if(t){if("string"==typeof t){for(var l=Array(t.length),c=0,d=t.length;c{var o=eo.join2("string"==typeof e?e:el.getPath(e),r),a=el.getMode(!!t,!!n);el.createDevice.major||(el.createDevice.major=64);var i=el.makedev(el.createDevice.major++,0);return el.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i,s=0,u=0;u{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(a)try{e.contents=ei(a(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new el.ErrnoError(29)}else throw Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1)&&!(e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e,r=new XMLHttpRequest;if(r.open("HEAD",t,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw Error("Couldn't load "+t+". Status: "+r.status);var n=Number(r.getResponseHeader("Content-length")),o=(e=r.getResponseHeader("Accept-Ranges"))&&"bytes"===e,a=(e=r.getResponseHeader("Content-Encoding"))&&"gzip"===e,i=1048576;o||(i=n);var s=(e,r)=>{if(e>r)throw Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):ei(o.responseText||"",!0)},u=this;u.setDataGetter(e=>{var r=e*i,t=(e+1)*i-1;if(t=Math.min(t,n-1),void 0===u.chunks[e]&&(u.chunks[e]=s(r,t)),void 0===u.chunks[e])throw Error("doXHR failed!");return u.chunks[e]}),(a||!n)&&(i=n=1,i=n=this.getter(0).length,D("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){var i;throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"}var i={isDevice:!1,url:t},s=el.createFile(e,r,i,n,o);i.contents?s.contents=i.contents:i.url&&(s.contents=null,s.url=i.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};function l(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var s=0;s{var r=s.stream_ops[e];u[e]=function(){return el.forceLoadFile(s),r.apply(null,arguments)}}),u.read=(e,r,t,n,o)=>(el.forceLoadFile(s),l(e,r,t,n,o)),u.mmap=(e,r,t,n,o)=>{el.forceLoadFile(s);var a=void V();if(!a)throw new el.ErrnoError(48);return l(e,d,a,r,t),{ptr:a,allocated:!0}},s.stream_ops=u,s},createPreloadedFile:(e,r,t,n,o,a,s,u,l,c)=>{var d,f,m=r?ea.resolve(eo.join2(e,r)):e,h="cp "+m;function p(t){function i(t){c&&c(),u||el.createDataFile(e,r,t,n,o,l),a&&a(),G(h)}Browser.handledByPreloadPlugin(t,m,i,()=>{s&&s(),G(h)})||i(t)}Y(h),"string"==typeof t?(d=e=>p(e),f="al "+t,i(t,e=>{var r;r='Loading data file "'+t+'" failed (no arrayBuffer).',e||V(r),d(new Uint8Array(e)),f&&G(f)},e=>{if(s)s();else throw'Loading data file "'+t+'" failed.'}),f&&Y(f)):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r=()=>{},t=()=>{})=>{var n=el.indexedDB();try{var o=n.open(el.DB_NAME(),el.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{D("creating db"),o.result.createObjectStore(el.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([el.DB_STORE_NAME],"readwrite"),a=n.objectStore(el.DB_STORE_NAME),i=0,s=0,u=e.length;function l(){0==s?r():t()}e.forEach(e=>{var r=a.put(el.analyzePath(e).object.contents,e);r.onsuccess=()=>{++i+s==u&&l()},r.onerror=()=>{i+ ++s==u&&l()}}),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r=()=>{},t=()=>{})=>{var n=el.indexedDB();try{var o=n.open(el.DB_NAME(),el.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var a=n.transaction([el.DB_STORE_NAME],"readonly")}catch(e){t(e);return}var i=a.objectStore(el.DB_STORE_NAME),s=0,u=0,l=e.length;function c(){0==u?r():t()}e.forEach(e=>{var r=i.get(e);r.onsuccess=()=>{el.analyzePath(e).exists&&el.unlink(e),el.createDataFile(eo.dirname(e),eo.basename(e),r.result,!0,!0,!0),++s+u==l&&c()},r.onerror=()=>{s+ ++u==l&&c()}}),a.onerror=t},o.onerror=t}},ec={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(eo.isAbs(r))return r;if(-100===e)n=el.cwd();else{var n;n=ec.getStreamFromFD(e).path}if(0==r.length){if(!t)throw new el.ErrnoError(44);return n}return eo.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&eo.normalize(r)!==eo.normalize(el.getPath(e.node)))return -54;throw e}h[t>>2]=n.dev,h[t+8>>2]=n.ino,h[t+12>>2]=n.mode,p[t+16>>2]=n.nlink,h[t+20>>2]=n.uid,h[t+24>>2]=n.gid,h[t+28>>2]=n.rdev,g=[n.size>>>0,+Math.abs(w=n.size)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+40>>2]=g[0],h[t+44>>2]=g[1],h[t+48>>2]=4096,h[t+52>>2]=n.blocks;var o=n.atime.getTime(),a=n.mtime.getTime(),i=n.ctime.getTime();return g=[Math.floor(o/1e3)>>>0,+Math.abs(w=Math.floor(o/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+56>>2]=g[0],h[t+60>>2]=g[1],p[t+64>>2]=o%1e3*1e3,g=[Math.floor(a/1e3)>>>0,+Math.abs(w=Math.floor(a/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+72>>2]=g[0],h[t+76>>2]=g[1],p[t+80>>2]=a%1e3*1e3,g=[Math.floor(i/1e3)>>>0,+Math.abs(w=Math.floor(i/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+88>>2]=g[0],h[t+92>>2]=g[1],p[t+96>>2]=i%1e3*1e3,g=[n.ino>>>0,+Math.abs(w=n.ino)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+104>>2]=g[0],h[t+108>>2]=g[1],0},doMsync:function(e,r,t,n,o){if(!el.isFile(r.node.mode))throw new el.ErrnoError(43);if(2&n)return 0;var a=f.slice(e,e+t);el.msync(r,a,o,t,n)},varargs:void 0,get:function(){return ec.varargs+=4,h[ec.varargs-4>>2]},getStr:function(e){return R(e)},getStreamFromFD:function(e){var r=el.getStream(e);if(!r)throw new el.ErrnoError(8);return r}};function ed(e){return e%4==0&&(e%100!=0||e%400==0)}var ef=[0,31,60,91,121,152,182,213,244,274,305,335],em=[0,31,59,90,120,151,181,212,243,273,304,334];function eh(e){var r=T(e)+1,t=ex(r);return t&&C(e,d,t,r),t}var ep={};function ev(){if(!ev.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:b||"./this.program"};for(var r in ep)void 0===ep[r]?delete e[r]:e[r]=ep[r];var t=[];for(var r in e)t.push(r+"="+e[r]);ev.strings=t}return ev.strings}function ew(r,t){c=r,M||U>0||(eC(),Z(O),el.quit(),es.shutdown(),L=!0),c=r,M||U>0||(e.onExit&&e.onExit(r),A=!0),k(r,new J(r))}var eg=[31,29,31,30,31,30,31,31,30,31,30,31],e_=[31,28,31,30,31,30,31,31,30,31,30,31];function ey(e,r,t,n){var o=h[n+40>>2],a={tm_sec:h[n>>2],tm_min:h[n+4>>2],tm_hour:h[n+8>>2],tm_mday:h[n+12>>2],tm_mon:h[n+16>>2],tm_year:h[n+20>>2],tm_wday:h[n+24>>2],tm_yday:h[n+28>>2],tm_isdst:h[n+32>>2],tm_gmtoff:h[n+36>>2],tm_zone:o?R(o):""},i=R(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)i=i.replace(RegExp(u,"g"),s[u]);var l=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"];function f(e,r,t){for(var n="number"==typeof e?e.toString():e||"";n.length0?1:0}return 0===(t=n(e.getFullYear()-r.getFullYear()))&&0===(t=n(e.getMonth()-r.getMonth()))&&(t=n(e.getDate()-r.getDate())),t}function v(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function w(e){var r=function(e,r){for(var t=new Date(e.getTime());r>0;){var n=ed(t.getFullYear()),o=t.getMonth(),a=(n?eg:e_)[o];if(r>a-t.getDate())r-=a-t.getDate()+1,t.setDate(1),o<11?t.setMonth(o+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else{t.setDate(t.getDate()+r);break}}return t}(new Date(e.tm_year+1900,0,1),e.tm_yday),t=new Date(r.getFullYear(),0,4),n=new Date(r.getFullYear()+1,0,4),o=v(t),a=v(n);return 0>=p(o,r)?0>=p(a,r)?r.getFullYear()+1:r.getFullYear():r.getFullYear()-1}var g={"%a":function(e){return l[e.tm_wday].substring(0,3)},"%A":function(e){return l[e.tm_wday]},"%b":function(e){return c[e.tm_mon].substring(0,3)},"%B":function(e){return c[e.tm_mon]},"%C":function(e){return m((e.tm_year+1900)/100|0,2)},"%d":function(e){return m(e.tm_mday,2)},"%e":function(e){return f(e.tm_mday,2," ")},"%g":function(e){return w(e).toString().substring(2)},"%G":function(e){return w(e)},"%H":function(e){return m(e.tm_hour,2)},"%I":function(e){var r=e.tm_hour;return 0==r?r=12:r>12&&(r-=12),m(r,2)},"%j":function(e){return m(e.tm_mday+function(e,r){for(var t=0,n=0;n<=r;t+=e[n++]);return t}(ed(e.tm_year+1900)?eg:e_,e.tm_mon-1),3)},"%m":function(e){return m(e.tm_mon+1,2)},"%M":function(e){return m(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return m(e.tm_sec,2)},"%t":function(){return" "},"%u":function(e){return e.tm_wday||7},"%U":function(e){return m(Math.floor((e.tm_yday+7-e.tm_wday)/7),2)},"%V":function(e){var r=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&r++,r){if(53==r){var t=(e.tm_wday+371-e.tm_yday)%7;4==t||3==t&&ed(e.tm_year)||(r=1)}}else{r=52;var n=(e.tm_wday+7-e.tm_yday-1)%7;(4==n||5==n&&ed(e.tm_year%400-1))&&r++}return m(r,2)},"%w":function(e){return e.tm_wday},"%W":function(e){return m(Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var r=e.tm_gmtoff;return(r>=0?"+":"-")+String("0000"+(r=(r=Math.abs(r)/60)/60*100+r%60)).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in i=i.replace(/%%/g,"\x00\x00"),g)i.includes(u)&&(i=i.replace(RegExp(u,"g"),g[u](a)));var _=ei(i=i.replace(/\0\0/g,"%"),!1);return _.length>r?0:(d.set(_,e),_.length-1)}function eE(e){if(e instanceof J||"unwind"==e)return c;k(1,e)}function eb(e){try{return e()}catch(e){V(e)}}var ek={instrumentWasmImports:function(e){var r=["invoke_*","emscripten_sleep","emscripten_wget","emscripten_wget_data","emscripten_idb_load","emscripten_idb_store","emscripten_idb_delete","emscripten_idb_exists","emscripten_idb_load_blob","emscripten_idb_store_blob","SDL_Delay","emscripten_scan_registers","emscripten_lazy_load_code","emscripten_fiber_swap","__load_secondary_module","fd_sync","__wasi_fd_sync","_emval_await","_dlopen_js","__asyncjs__*"];for(var t in e)!function(t){var n=e[t];n.sig,"function"==typeof n&&(r.indexOf(t)>=0||t.startsWith("__asyncjs__"))}(t)},instrumentWasmExports:function(e){var r={};for(var t in e)!function(t){var n=e[t];"function"==typeof n?r[t]=function(){ek.exportCallStack.push(t);try{return n.apply(null,arguments)}finally{A||(ek.exportCallStack.pop()===t||V(void 0),ek.maybeStopUnwind())}}:r[t]=n}(t);return r},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:8192,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(e){var r=ek.callStackNameToId[e];return void 0===r&&(r=ek.callStackId++,ek.callStackNameToId[e]=r,ek.callStackIdToName[r]=e),r},maybeStopUnwind:function(){ek.currData&&ek.state===ek.State.Unwinding&&0===ek.exportCallStack.length&&(ek.state=ek.State.Normal,U+=1,eb(e7),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:function(){return new Promise((e,r)=>{ek.asyncPromiseHandlers={resolve:e,reject:r}})},allocateData:function(){var e=ex(12+ek.StackSize);return ek.setDataHeader(e,e+12,ek.StackSize),ek.setDataRewindFunc(e),e},setDataHeader:function(e,r,t){h[e>>2]=r,h[e+4>>2]=r+t},setDataRewindFunc:function(e){var r=ek.exportCallStack[0],t=ek.getCallStackId(r);h[e+8>>2]=t},getDataRewindFunc:function(r){var t=h[r+8>>2],n=ek.callStackIdToName[t];return e.asm[n]},doRewind:function(e){var r=ek.getDataRewindFunc(e);return U-=1,r()},handleSleep:function(e){if(!A){if(ek.state===ek.State.Normal){var r=!1,t=!1;e((e=0)=>{if(!A&&(ek.handleSleepReturnValue=e,r=!0,t)){ek.state=ek.State.Rewinding,eb(()=>re(ek.currData)),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var n,o=!1;try{n=ek.doRewind(ek.currData)}catch(e){n=e,o=!0}var a=!1;if(!ek.currData){var i=ek.asyncPromiseHandlers;i&&(ek.asyncPromiseHandlers=null,(o?i.reject:i.resolve)(n),a=!0)}if(o&&!a)throw n}}),t=!0,r||(ek.state=ek.State.Unwinding,ek.currData=ek.allocateData(),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause(),eb(()=>e5(ek.currData)))}else ek.state===ek.State.Rewinding?(ek.state=ek.State.Normal,eb(rr),eR(ek.currData),ek.currData=null,ek.sleepCallbacks.forEach(e=>(function(e){if(!L&&!A)try{e(),function(){if(!(M||U>0))try{ew(c)}catch(e){eE(e)}}()}catch(e){eE(e)}})(e))):V("invalid state: "+ek.state);return ek.handleSleepReturnValue}},handleAsync:function(e){return ek.handleSleep(r=>{e().then(r)})}},eS=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=el.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n};Object.defineProperties(eS.prototype,{read:{get:function(){return(365&this.mode)==365},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return(146&this.mode)==146},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return el.isDir(this.mode)}},isDevice:{get:function(){return el.isChrdev(this.mode)}}}),el.FSNode=eS,el.staticInit();var eD={S:function(r,t){return ek.handleAsync(async()=>{e.emglken_stdin_buffers.length||await new Promise(r=>{e.emglken_stdin_ready=r});let n=e.emglken_stdin_buffers.shift(),o=Math.min(n.length,t);return o==n.length?f.set(n,r):(f.set(n.subarray(0,o),r),e.emglken_stdin_buffers.unshift(n.subarray(o))),o})},k:function(e){var r=new et(e);return!r.get_caught()&&(r.set_caught(!0),ee--),r.set_rethrown(!1),Q.push(r),function(e){e.add_ref()}(r),r.get_exception_ptr()},n:function(){eT(0),function(e){if(e.release_ref()&&!e.get_rethrown()){var r,t=e.get_destructor();t&&(r=e.excPtr,eL.apply(null,[t,r])),eF(e.excPtr)}}(Q.pop()),er=0},a:en,d:en,m:en,s:en,x:en,ca:en,K:function(){var e=Q.pop();e||V("no exception to throw");var r=e.excPtr;throw!e.get_rethrown()&&(Q.push(e),e.set_rethrown(!0),e.set_caught(!1),ee++),er=r,r},o:function(e,r,t){throw new et(e).init(r,t),er=e,ee++,e},ba:function(){return ee},g:function(e){throw er||(er=e),e},aa:function(e,r,t,n){try{if(r=ec.getStr(r),r=ec.calculateAt(e,r),-8&t)return -28;var o=el.lookupPath(r,{follow:!0}).node;if(!o)return -44;var a="";if(4&t&&(a+="r"),2&t&&(a+="w"),1&t&&(a+="x"),a&&el.nodePermissions(o,a))return -2;return 0}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return-e.errno}},J:function(e,r,t){ec.varargs=t;try{var n=ec.getStreamFromFD(e);switch(r){case 0:var o=ec.get();if(o<0)return -28;return el.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=ec.get();return n.flags|=o,0;case 5:var o=ec.get();return m[o+0>>1]=2,0;case 16:case 8:default:return -28;case 9:return h[eA()>>2]=28,-1}}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return-e.errno}},$:function(e,r){try{if(0===r)return -28;var t=el.cwd(),n=T(t)+1;if(r>2]=0,0;case 21520:if(!n.tty)return -59;return -28;case 21531:var o=ec.get();return el.ioctl(n,r,o);default:return -28}}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return-e.errno}},Z:function(e,r,t,n){ec.varargs=n;try{r=ec.getStr(r),r=ec.calculateAt(e,r);var o=n?ec.get():0;return el.open(r,t,o).fd}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return-e.errno}},V:function(){return!0},U:function(e,r){var t=new Date(1e3*(p[e>>2]+4294967296*h[e+4>>2]));h[r>>2]=t.getSeconds(),h[r+4>>2]=t.getMinutes(),h[r+8>>2]=t.getHours(),h[r+12>>2]=t.getDate(),h[r+16>>2]=t.getMonth(),h[r+20>>2]=t.getFullYear()-1900,h[r+24>>2]=t.getDay();var n=0|(ed(t.getFullYear())?ef:em)[t.getMonth()]+t.getDate()-1;h[r+28>>2]=n,h[r+36>>2]=-(60*t.getTimezoneOffset());var o=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=0|(a!=i&&t.getTimezoneOffset()==Math.min(i,a));h[r+32>>2]=s},T:function(e,r,t){var n=new Date().getFullYear(),o=new Date(n,0,1),a=new Date(n,6,1),i=o.getTimezoneOffset(),s=a.getTimezoneOffset();function u(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}p[e>>2]=60*Math.max(i,s),h[r>>2]=Number(i!=s);var l=u(o),c=u(a),d=eh(l),f=eh(c);s>2]=d,p[t+4>>2]=f):(p[t>>2]=f,p[t+4>>2]=d)},D:function(){V("")},B:function(){return Date.now()},R:function(e,r,t){f.copyWithin(e,r,r+t)},Q:function(e){var r=f.length;if((e>>>=0)>2147483648)return!1;let t=(e,r)=>e+(r-e%r)%r;for(var n=1;n<=4;n*=2){var o=r*(1+.2/n);if(o=Math.min(o,e+100663296),function(e){var r=l.buffer;try{return l.grow(e-r.byteLength+65535>>>16),N(),1}catch(e){}}(Math.min(2147483648,t(Math.max(e,o),65536))))return!0}return!1},Y:function(e,r){var t=0;return ev().forEach(function(n,o){var a=r+t;p[e+4*o>>2]=a,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);d[r>>0]=0}(n,a),t+=n.length+1}),0},X:function(e,r){var t=ev();p[e>>2]=t.length;var n=0;return t.forEach(function(e){n+=e.length+1}),p[r>>2]=n,0},C:ew,I:function(e){try{var r=ec.getStreamFromFD(e);return el.close(r),0}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return e.errno}},W:function(e,r,t,n){try{var o=ec.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=el.read(e,d,i,s,n);if(u<0)return -1;if(o+=u,u>2]=a,0}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return e.errno}},P:function(e,r,t,n,o){try{var a=t+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*t:NaN;if(isNaN(a))return 61;var i=ec.getStreamFromFD(e);return el.llseek(i,a,n),g=[i.position>>>0,(w=i.position,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[o>>2]=g[0],h[o+4>>2]=g[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return e.errno}},H:function(e,r,t,n){try{var o=ec.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=el.write(e,d,i,s,n);if(u<0)return -1;o+=u,void 0!==n&&(n+=u)}return o}(o,r,t);return p[n>>2]=a,0}catch(e){if(void 0===el||"ErrnoError"!==e.name)throw e;return e.errno}},G:function(e,r,t,n){var o=ez();try{return e4(e,r,t,n)}catch(e){if(eB(o),e!==e+0)throw e;eT(1,0)}},F:function(e,r,t,n){var o=ez();try{return e2(e,r,t,n)}catch(e){if(eB(o),e!==e+0)throw e;eT(1,0)}},q:function(e){var r=ez();try{return eK(e)}catch(e){if(eB(r),e!==e+0)throw e;eT(1,0)}},b:function(e,r){var t=ez();try{return eL(e,r)}catch(e){if(eB(t),e!==e+0)throw e;eT(1,0)}},c:function(e,r,t){var n=ez();try{return eY(e,r,t)}catch(e){if(eB(n),e!==e+0)throw e;eT(1,0)}},e:function(e,r,t,n){var o=ez();try{return eU(e,r,t,n)}catch(e){if(eB(o),e!==e+0)throw e;eT(1,0)}},p:function(e,r,t,n,o){var a=ez();try{return eX(e,r,t,n,o)}catch(e){if(eB(a),e!==e+0)throw e;eT(1,0)}},u:function(e,r,t,n,o,a){var i=ez();try{return eV(e,r,t,n,o,a)}catch(e){if(eB(i),e!==e+0)throw e;eT(1,0)}},w:function(e,r,t,n,o,a,i){var s=ez();try{return e$(e,r,t,n,o,a,i)}catch(e){if(eB(s),e!==e+0)throw e;eT(1,0)}},E:function(e,r,t,n,o,a,i,s){var u=ez();try{return e0(e,r,t,n,o,a,i,s)}catch(e){if(eB(u),e!==e+0)throw e;eT(1,0)}},A:function(e,r,t,n,o,a,i,s,u,l,c,d){var f=ez();try{return e3(e,r,t,n,o,a,i,s,u,l,c,d)}catch(e){if(eB(f),e!==e+0)throw e;eT(1,0)}},O:function(e,r){var t=ez();try{return eZ(e,r)}catch(e){if(eB(t),e!==e+0)throw e;eT(1,0)}},N:function(e,r,t,n,o){var a=ez();try{return e1(e,r,t,n,o)}catch(e){if(eB(a),e!==e+0)throw e;eT(1,0)}},h:function(e){var r=ez();try{eW(e)}catch(e){if(eB(r),e!==e+0)throw e;eT(1,0)}},i:function(e,r){var t=ez();try{eq(e,r)}catch(e){if(eB(t),e!==e+0)throw e;eT(1,0)}},f:function(e,r,t){var n=ez();try{eG(e,r,t)}catch(e){if(eB(n),e!==e+0)throw e;eT(1,0)}},j:function(e,r,t,n){var o=ez();try{eH(e,r,t,n)}catch(e){if(eB(o),e!==e+0)throw e;eT(1,0)}},r:function(e,r,t,n,o){var a=ez();try{eJ(e,r,t,n,o)}catch(e){if(eB(a),e!==e+0)throw e;eT(1,0)}},t:function(e,r,t,n,o,a){var i=ez();try{eQ(e,r,t,n,o,a)}catch(e){if(eB(i),e!==e+0)throw e;eT(1,0)}},v:function(e,r,t,n,o,a,i,s){var u=ez();try{e6(e,r,t,n,o,a,i,s)}catch(e){if(eB(u),e!==e+0)throw e;eT(1,0)}},y:function(e,r,t,n,o,a,i,s,u,l,c){var d=ez();try{e9(e,r,t,n,o,a,i,s,u,l,c)}catch(e){if(eB(d),e!==e+0)throw e;eT(1,0)}},z:function(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p){var v=ez();try{e8(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p)}catch(e){if(eB(v),e!==e+0)throw e;eT(1,0)}},l:function(e){return e},M:ey,L:function(e,r,t,n,o){return ey(e,r,t,n)}};!function(){var r,t,n,a={a:eD};function i(r,t){var n,o=r.exports;return o=ek.instrumentWasmExports(o),e.asm=o,l=e.asm.da,N(),e.asm.na,n=e.asm.ea,B.unshift(n),G("wasm-instantiate"),o}if(Y("wasm-instantiate"),e.instantiateWasm)try{return e.instantiateWasm(a,i)}catch(e){F("Module.instantiateWasm callback failed with error: "+e),o(e)}(r=u,t=v,n=function(e){i(e.instance)},r||"function"!=typeof WebAssembly.instantiateStreaming||X(t)||"function"!=typeof fetch?$(t,a,n):fetch(t,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,a).then(n,function(e){return F("wasm streaming compile failed: "+e),F("falling back to ArrayBuffer instantiation"),$(t,a,n)})})).catch(o)}();var eF=function(){return(eF=e.asm.fa).apply(null,arguments)},eM=e._fflush=function(){return(eM=e._fflush=e.asm.ga).apply(null,arguments)},eA=function(){return(eA=e.asm.ha).apply(null,arguments)},eP=e._main=function(){return(eP=e._main=e.asm.ia).apply(null,arguments)},ex=function(){return(ex=e.asm.ja).apply(null,arguments)},eR=function(){return(eR=e.asm.ka).apply(null,arguments)},eC=(e._gidispatch_get_game_id=function(){return(e._gidispatch_get_game_id=e.asm.la).apply(null,arguments)},function(){return(eC=e.asm.ma).apply(null,arguments)}),eT=function(){return(eT=e.asm.oa).apply(null,arguments)},eN=function(){return(eN=e.asm.pa).apply(null,arguments)},ez=function(){return(ez=e.asm.qa).apply(null,arguments)},eB=function(){return(eB=e.asm.ra).apply(null,arguments)},ej=function(){return(ej=e.asm.sa).apply(null,arguments)},eO=function(){return(eO=e.asm.ta).apply(null,arguments)},eI=function(){return(eI=e.asm.ua).apply(null,arguments)},eL=e.dynCall_ii=function(){return(eL=e.dynCall_ii=e.asm.va).apply(null,arguments)},eU=e.dynCall_iiii=function(){return(eU=e.dynCall_iiii=e.asm.wa).apply(null,arguments)},eH=e.dynCall_viii=function(){return(eH=e.dynCall_viii=e.asm.xa).apply(null,arguments)},eW=e.dynCall_v=function(){return(eW=e.dynCall_v=e.asm.ya).apply(null,arguments)},eq=e.dynCall_vi=function(){return(eq=e.dynCall_vi=e.asm.za).apply(null,arguments)},eY=e.dynCall_iii=function(){return(eY=e.dynCall_iii=e.asm.Aa).apply(null,arguments)},eG=e.dynCall_vii=function(){return(eG=e.dynCall_vii=e.asm.Ba).apply(null,arguments)},eV=e.dynCall_iiiiii=function(){return(eV=e.dynCall_iiiiii=e.asm.Ca).apply(null,arguments)},eX=e.dynCall_iiiii=function(){return(eX=e.dynCall_iiiii=e.asm.Da).apply(null,arguments)},eK=e.dynCall_i=function(){return(eK=e.dynCall_i=e.asm.Ea).apply(null,arguments)},e$=e.dynCall_iiiiiii=function(){return(e$=e.dynCall_iiiiiii=e.asm.Fa).apply(null,arguments)},eJ=e.dynCall_viiii=function(){return(eJ=e.dynCall_viiii=e.asm.Ga).apply(null,arguments)},eZ=e.dynCall_ji=function(){return(eZ=e.dynCall_ji=e.asm.Ha).apply(null,arguments)},eQ=e.dynCall_viiiii=function(){return(eQ=e.dynCall_viiiii=e.asm.Ia).apply(null,arguments)},e0=e.dynCall_iiiiiiii=function(){return(e0=e.dynCall_iiiiiiii=e.asm.Ja).apply(null,arguments)},e1=e.dynCall_jiiii=function(){return(e1=e.dynCall_jiiii=e.asm.Ka).apply(null,arguments)},e2=e.dynCall_fiii=function(){return(e2=e.dynCall_fiii=e.asm.La).apply(null,arguments)},e4=e.dynCall_diii=function(){return(e4=e.dynCall_diii=e.asm.Ma).apply(null,arguments)},e6=e.dynCall_viiiiiii=function(){return(e6=e.dynCall_viiiiiii=e.asm.Na).apply(null,arguments)},e3=e.dynCall_iiiiiiiiiiii=function(){return(e3=e.dynCall_iiiiiiiiiiii=e.asm.Oa).apply(null,arguments)},e9=e.dynCall_viiiiiiiiii=function(){return(e9=e.dynCall_viiiiiiiiii=e.asm.Pa).apply(null,arguments)},e8=e.dynCall_viiiiiiiiiiiiiii=function(){return(e8=e.dynCall_viiiiiiiiiiiiiii=e.asm.Qa).apply(null,arguments)},e5=function(){return(e5=e.asm.Ra).apply(null,arguments)},e7=function(){return(e7=e.asm.Sa).apply(null,arguments)},re=function(){return(re=e.asm.Ta).apply(null,arguments)},rr=function(){return(rr=e.asm.Ua).apply(null,arguments)};function rt(r=E){!(H>0)&&(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;){var r;r=e.preRun.shift(),z.unshift(r)}Z(z)}(),H>0||(e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),n()},1)):n()));function n(){!_&&(_=!0,e.calledRun=!0,A||(e.noFSInit||el.init.initialized||el.init(),el.ignorePermissions=!1,es.init(),Z(B),Z(j),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),rn&&function(e=[]){var r=eP;e.unshift(b);var t=e.length,n=ej((t+1)*4),o=n>>2;e.forEach(e=>{var r,t;h[o++]=(t=ej(r=T(e)+1),C(e,d,t,r),t)}),h[o]=0;try{var a=r(t,n);ew(a,!0)}catch(e){return eE(e)}}(r),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;){var r;r=e.postRun.shift(),I.unshift(r)}Z(I)}()))}}if(e.___start_em_js=52440,e.___stop_em_js=55125,e.AsciiToString=function(e){for(var r="";;){var t=f[e++>>0];if(!t)return r;r+=String.fromCharCode(t)}},e.FS=el,q=function e(){_||rt(),_||(q=e)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();var rn=!0;return e.noInitialRun&&(rn=!1),rt(),e.ready}),rx={};rx=B("6kBsm").getBundleURL("ejVIo")+B("n9Yfb").resolve("9Qh6d");var rR=(o="file:///node_modules/emglken/build/git-core.js",function(e={}){var r,t,n,a,i,s,u,l,c,d,f,m,h,p,v,w,g,_,e=void 0!==e?e:{};e.ready=new Promise(function(e,r){t=e,n=r});var y=Object.assign({},e),E=[],b="./this.program",k=(e,r)=>{throw r},S="";"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),o&&(S=o),S=0!==S.indexOf("blob:")?S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):"",a=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},i=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{if(200==n.status||0==n.status&&n.response){r(n.response);return}t()},n.onerror=t,n.send(null)};var D=e.print||console.log.bind(console),F=e.printErr||console.warn.bind(console);Object.assign(e,y),y=null,e.arguments&&(E=e.arguments),e.thisProgram&&(b=e.thisProgram),e.quit&&(k=e.quit),e.wasmBinary&&(u=e.wasmBinary);var M=e.noExitRuntime||!1;"object"!=typeof WebAssembly&&G("no native wasm support detected");var A=!1,P=new TextDecoder("utf8");function x(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;return P.decode(e.buffer?e.subarray(r,o):new Uint8Array(e.slice(r,o)))}function R(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i)),s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function C(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r}function T(){var r=l.buffer;e.HEAP8=d=new Int8Array(r),e.HEAP16=m=new Int16Array(r),e.HEAP32=h=new Int32Array(r),e.HEAPU8=f=new Uint8Array(r),e.HEAPU16=new Uint16Array(r),e.HEAPU32=p=new Uint32Array(r),e.HEAPF32=new Float32Array(r),e.HEAPF64=new Float64Array(r)}var N=[],z=[],B=[],j=[],O=[],I=!1,L=0,U=0,H=null,W=null;function q(r){U++,e.monitorRunDependencies&&e.monitorRunDependencies(U)}function Y(r){if(U--,e.monitorRunDependencies&&e.monitorRunDependencies(U),0==U&&(null!==H&&(clearInterval(H),H=null),W)){var t=W;W=null,t()}}function G(r){e.onAbort&&e.onAbort(r),F(r="Aborted("+r+")"),A=!0,c=1,r+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(r);throw n(t),t}function V(e){return e.startsWith("data:application/octet-stream;base64,")}function X(e){try{if(e==v&&u)return new Uint8Array(u);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}catch(e){G(e)}}function K(e,r,t){return(u||"function"!=typeof fetch?Promise.resolve().then(function(){return X(e)}):fetch(e,{credentials:"same-origin"}).then(function(r){if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(function(){return X(e)})).then(function(e){return WebAssembly.instantiate(e,r)}).then(function(e){return e}).then(t,function(e){F("failed to asynchronously prepare wasm: "+e),G(e)})}function $(e,r,t,n,o){let a=e>>2,i=p.subarray(a,a+t),s=o?i:i.reduce((e,r)=>e+String.fromCodePoint(r),""),u=n(s),l=Uint32Array.from(u,e=>e.codePointAt(0)),c=l.length;return p.set(l.subarray(0,Math.min(r,c)),a),c}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Z(r){for(;r.length>0;)r.shift()(e)}e.locateFile?V(v="git-core.wasm")||(r=v,v=e.locateFile?e.locateFile(r,S):S+r):v=new URL(rx).href;var Q={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=Q.isAbs(e),t="/"===e.substr(-1);return(e=Q.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=Q.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=Q.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return -1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments);return Q.normalize(e.join("/"))},join2:(e,r)=>Q.normalize(e+"/"+r)},ee={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:eo.cwd();if("string"!=typeof n)throw TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=Q.isAbs(n)}return e=Q.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"),(r?"/":"")+e||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=ee.resolve(e).substr(1),r=ee.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t:C(e)+1),o=R(e,n,0,n.length);return r&&(n.length=o),n}var et={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){et.ttys[e]={input:[],output:[],ops:r},eo.registerDevice(e,et.stream_ops)},stream_ops:{open:function(e){var r=et.ttys[e.node.rdev];if(!r)throw new eo.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new eo.ErrnoError(60);for(var a,i=0,s=0;s0&&(D(x(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(F(x(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(F(x(e.output,0)),e.output=[])}}},en={ops_table:null,mount:function(e){return en.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(eo.isBlkdev(t)||eo.isFIFO(t))throw new eo.ErrnoError(63);en.ops_table||(en.ops_table={dir:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr,lookup:en.node_ops.lookup,mknod:en.node_ops.mknod,rename:en.node_ops.rename,unlink:en.node_ops.unlink,rmdir:en.node_ops.rmdir,readdir:en.node_ops.readdir,symlink:en.node_ops.symlink},stream:{llseek:en.stream_ops.llseek}},file:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr},stream:{llseek:en.stream_ops.llseek,read:en.stream_ops.read,write:en.stream_ops.write,allocate:en.stream_ops.allocate,mmap:en.stream_ops.mmap,msync:en.stream_ops.msync}},link:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr,readlink:en.node_ops.readlink},stream:{}},chrdev:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr},stream:eo.chrdev_stream_ops}});var o=eo.createNode(e,r,t,n);return eo.isDir(o.mode)?(o.node_ops=en.ops_table.dir.node,o.stream_ops=en.ops_table.dir.stream,o.contents={}):eo.isFile(o.mode)?(o.node_ops=en.ops_table.file.node,o.stream_ops=en.ops_table.file.stream,o.usedBytes=0,o.contents=null):eo.isLink(o.mode)?(o.node_ops=en.ops_table.link.node,o.stream_ops=en.ops_table.link.stream):eo.isChrdev(o.mode)&&(o.node_ops=en.ops_table.chrdev.node,o.stream_ops=en.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r){if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}}},node_ops:{getattr:function(e){var r={};return r.dev=eo.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,eo.isDir(e.mode)?r.size=4096:eo.isFile(e.mode)?r.size=e.usedBytes:eo.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&en.resizeFileStorage(e,r.size)},lookup:function(e,r){throw eo.genericErrors[44]},mknod:function(e,r,t,n){return en.createNode(e,r,t,n)},rename:function(e,r,t){if(eo.isDir(e.mode)){var n;try{n=eo.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new eo.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=eo.lookupNode(e,r);for(var n in t.contents)throw new eo.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=en.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!eo.isLink(e.mode))throw new eo.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||t+r{if(!(e=ee.resolve(e)))return{path:"",node:null};if((r=Object.assign({follow_mount:!0,recurse_count:0},r)).recurse_count>8)throw new eo.ErrnoError(32);for(var t=e.split("/").filter(e=>!!e),n=eo.root,o="/",a=0;a40)throw new eo.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var r;;){if(eo.isRoot(e)){var t=e.mount.mountpoint;if(!r)return t;return"/"!==t[t.length-1]?t+"/"+r:t+r}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%eo.nameTable.length},hashAddNode:e=>{var r=eo.hashName(e.parent.id,e.name);e.name_next=eo.nameTable[r],eo.nameTable[r]=e},hashRemoveNode:e=>{var r=eo.hashName(e.parent.id,e.name);if(eo.nameTable[r]===e)eo.nameTable[r]=e.name_next;else for(var t=eo.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=eo.mayLookup(e);if(t)throw new eo.ErrnoError(t,e);for(var n=eo.hashName(e.id,r),o=eo.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return eo.lookup(e,r)},createNode:(e,r,t,n)=>{var o=new eo.FSNode(e,r,t,n);return eo.hashAddNode(o),o},destroyNode:e=>{eo.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>(61440&e)==32768,isDir:e=>(61440&e)==16384,isLink:e=>(61440&e)==40960,isChrdev:e=>(61440&e)==8192,isBlkdev:e=>(61440&e)==24576,isFIFO:e=>(61440&e)==4096,isSocket:e=>(49152&e)==49152,flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=eo.flagModes[e];if(void 0===r)throw Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>eo.ignorePermissions?0:r.includes("r")&&!(292&e.mode)||r.includes("w")&&!(146&e.mode)||r.includes("x")&&!(73&e.mode)?2:0,mayLookup:e=>eo.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,r)=>{try{return eo.lookupNode(e,r),20}catch(e){}return eo.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{try{n=eo.lookupNode(e,r)}catch(e){return e.errno}var n,o=eo.nodePermissions(e,"wx");if(o)return o;if(t){if(!eo.isDir(n.mode))return 54;if(eo.isRoot(n)||eo.getPath(n)===eo.cwd())return 10}else if(eo.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?eo.isLink(e.mode)?32:eo.isDir(e.mode)&&("r"!==eo.flagsToPermissionString(r)||512&r)?31:eo.nodePermissions(e,eo.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,r=eo.MAX_OPEN_FDS)=>{for(var t=e;t<=r;t++)if(!eo.streams[t])return t;throw new eo.ErrnoError(33)},getStream:e=>eo.streams[e],createStream:(e,r,t)=>{eo.FSStream||(eo.FSStream=function(){this.shared={}},eo.FSStream.prototype={},Object.defineProperties(eo.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return(2097155&this.flags)!=1}},isWrite:{get:function(){return(2097155&this.flags)!=0}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new eo.FSStream,e);var n=eo.nextfd(r,t);return e.fd=n,eo.streams[n]=e,e},closeStream:e=>{eo.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=eo.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new eo.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{eo.devices[e]={stream_ops:r}},getDevice:e=>eo.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),eo.syncFSRequests++,eo.syncFSRequests>1&&F("warning: "+eo.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=eo.getMounts(eo.root.mount),n=0;function o(e){return eo.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach(r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)})},mount:(e,r,t)=>{var n,o="/"===t,a=!t;if(o&&eo.root)throw new eo.ErrnoError(10);if(!o&&!a){var i=eo.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,eo.isMountpoint(n))throw new eo.ErrnoError(10);if(!eo.isDir(n.mode))throw new eo.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?eo.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:e=>{var r=eo.lookupPath(e,{follow_mount:!1});if(!eo.isMountpoint(r.node))throw new eo.ErrnoError(28);var t=r.node,n=t.mounted,o=eo.getMounts(n);Object.keys(eo.nameTable).forEach(e=>{for(var r=eo.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&eo.destroyNode(r),r=t}}),t.mounted=null;var a=t.mount.mounts.indexOf(n);t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=eo.lookupPath(e,{parent:!0}).node,o=Q.basename(e);if(!o||"."===o||".."===o)throw new eo.ErrnoError(28);var a=eo.mayCreate(n,o);if(a)throw new eo.ErrnoError(a);if(!n.node_ops.mknod)throw new eo.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=(void 0!==r?r:438)&4095|32768,eo.mknod(e,r,0)),mkdir:(e,r)=>(r=(void 0!==r?r:511)&1023|16384,eo.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,eo.mknod(e,r,t)),symlink:(e,r)=>{if(!ee.resolve(e))throw new eo.ErrnoError(44);var t=eo.lookupPath(r,{parent:!0}).node;if(!t)throw new eo.ErrnoError(44);var n=Q.basename(r),o=eo.mayCreate(t,n);if(o)throw new eo.ErrnoError(o);if(!t.node_ops.symlink)throw new eo.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o,a=Q.dirname(e),i=Q.dirname(r),s=Q.basename(e),u=Q.basename(r);if(t=eo.lookupPath(e,{parent:!0}).node,n=eo.lookupPath(r,{parent:!0}).node,!t||!n)throw new eo.ErrnoError(44);if(t.mount!==n.mount)throw new eo.ErrnoError(75);var l=eo.lookupNode(t,s),c=ee.relative(e,i);if("."!==c.charAt(0))throw new eo.ErrnoError(28);if("."!==(c=ee.relative(r,a)).charAt(0))throw new eo.ErrnoError(55);try{o=eo.lookupNode(n,u)}catch(e){}if(l!==o){var d=eo.isDir(l.mode),f=eo.mayDelete(t,s,d);if(f||(f=o?eo.mayDelete(n,u,d):eo.mayCreate(n,u)))throw new eo.ErrnoError(f);if(!t.node_ops.rename)throw new eo.ErrnoError(63);if(eo.isMountpoint(l)||o&&eo.isMountpoint(o))throw new eo.ErrnoError(10);if(n!==t&&(f=eo.nodePermissions(t,"w")))throw new eo.ErrnoError(f);eo.hashRemoveNode(l);try{t.node_ops.rename(l,n,u)}catch(e){throw e}finally{eo.hashAddNode(l)}}},rmdir:e=>{var r=eo.lookupPath(e,{parent:!0}).node,t=Q.basename(e),n=eo.lookupNode(r,t),o=eo.mayDelete(r,t,!0);if(o)throw new eo.ErrnoError(o);if(!r.node_ops.rmdir)throw new eo.ErrnoError(63);if(eo.isMountpoint(n))throw new eo.ErrnoError(10);r.node_ops.rmdir(r,t),eo.destroyNode(n)},readdir:e=>{var r=eo.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new eo.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=eo.lookupPath(e,{parent:!0}).node;if(!r)throw new eo.ErrnoError(44);var t=Q.basename(e),n=eo.lookupNode(r,t),o=eo.mayDelete(r,t,!1);if(o)throw new eo.ErrnoError(o);if(!r.node_ops.unlink)throw new eo.ErrnoError(63);if(eo.isMountpoint(n))throw new eo.ErrnoError(10);r.node_ops.unlink(r,t),eo.destroyNode(n)},readlink:e=>{var r=eo.lookupPath(e).node;if(!r)throw new eo.ErrnoError(44);if(!r.node_ops.readlink)throw new eo.ErrnoError(28);return ee.resolve(eo.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=eo.lookupPath(e,{follow:!r}).node;if(!t)throw new eo.ErrnoError(44);if(!t.node_ops.getattr)throw new eo.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>eo.stat(e,!0),chmod:(e,r,t)=>{var n;if(!(n="string"==typeof e?eo.lookupPath(e,{follow:!t}).node:e).node_ops.setattr)throw new eo.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{eo.chmod(e,r,!0)},fchmod:(e,r)=>{var t=eo.getStream(e);if(!t)throw new eo.ErrnoError(8);eo.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;if(!(o="string"==typeof e?eo.lookupPath(e,{follow:!n}).node:e).node_ops.setattr)throw new eo.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{eo.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=eo.getStream(e);if(!n)throw new eo.ErrnoError(8);eo.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new eo.ErrnoError(28);if("string"==typeof e){var t;t=eo.lookupPath(e,{follow:!0}).node}else t=e;if(!t.node_ops.setattr)throw new eo.ErrnoError(63);if(eo.isDir(t.mode))throw new eo.ErrnoError(31);if(!eo.isFile(t.mode))throw new eo.ErrnoError(28);var n=eo.nodePermissions(t,"w");if(n)throw new eo.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=eo.getStream(e);if(!t)throw new eo.ErrnoError(8);if((2097155&t.flags)==0)throw new eo.ErrnoError(28);eo.truncate(t.node,r)},utime:(e,r,t)=>{var n=eo.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(r,t,n)=>{if(""===r)throw new eo.ErrnoError(44);if(t="string"==typeof t?eo.modeStringToFlags(t):t,n=void 0===n?438:n,n=64&t?4095&n|32768:0,"object"==typeof r)o=r;else{r=Q.normalize(r);try{var o;o=eo.lookupPath(r,{follow:!(131072&t)}).node}catch(e){}}var a=!1;if(64&t){if(o){if(128&t)throw new eo.ErrnoError(20)}else o=eo.mknod(r,n,0),a=!0}if(!o)throw new eo.ErrnoError(44);if(eo.isChrdev(o.mode)&&(t&=-513),65536&t&&!eo.isDir(o.mode))throw new eo.ErrnoError(54);if(!a){var i=eo.mayOpen(o,t);if(i)throw new eo.ErrnoError(i)}512&t&&!a&&eo.truncate(o,0),t&=-131713;var s=eo.createStream({node:o,path:eo.getPath(o),flags:t,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),!e.logReadFiles||1&t||(eo.readFiles||(eo.readFiles={}),r in eo.readFiles||(eo.readFiles[r]=1)),s},close:e=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{eo.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new eo.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new eo.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new eo.ErrnoError(28);if(eo.isClosed(e)||(2097155&e.flags)==1)throw new eo.ErrnoError(8);if(eo.isDir(e.node.mode))throw new eo.ErrnoError(31);if(!e.stream_ops.read)throw new eo.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new eo.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new eo.ErrnoError(28);if(eo.isClosed(e)||(2097155&e.flags)==0)throw new eo.ErrnoError(8);if(eo.isDir(e.node.mode))throw new eo.ErrnoError(31);if(!e.stream_ops.write)throw new eo.ErrnoError(28);e.seekable&&1024&e.flags&&eo.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new eo.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);if(r<0||t<=0)throw new eo.ErrnoError(28);if((2097155&e.flags)==0)throw new eo.ErrnoError(8);if(!eo.isFile(e.node.mode)&&!eo.isDir(e.node.mode))throw new eo.ErrnoError(43);if(!e.stream_ops.allocate)throw new eo.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o)=>{if((2&n)!=0&&(2&o)==0&&(2097155&e.flags)!=2||(2097155&e.flags)==1)throw new eo.ErrnoError(2);if(!e.stream_ops.mmap)throw new eo.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:(e,r,t,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new eo.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:(e,r={})=>{if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw Error('Invalid encoding type "'+r.encoding+'"');var t,n=eo.open(e,r.flags),o=eo.stat(e).size,a=new Uint8Array(o);return eo.read(n,a,0,o,0),"utf8"===r.encoding?t=x(a,0):"binary"===r.encoding&&(t=a),eo.close(n),t},writeFile:(e,r,t={})=>{t.flags=t.flags||577;var n=eo.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(C(r)+1),a=R(r,o,0,o.length);eo.write(n,o,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))eo.write(n,r,0,r.byteLength,void 0,t.canOwn);else throw Error("Unsupported data type");eo.close(n)},cwd:()=>eo.currentPath,chdir:e=>{var r=eo.lookupPath(e,{follow:!0});if(null===r.node)throw new eo.ErrnoError(44);if(!eo.isDir(r.node.mode))throw new eo.ErrnoError(54);var t=eo.nodePermissions(r.node,"x");if(t)throw new eo.ErrnoError(t);eo.currentPath=r.path},createDefaultDirectories:()=>{eo.mkdir("/tmp"),eo.mkdir("/home"),eo.mkdir("/home/web_user")},createDefaultDevices:()=>{eo.mkdir("/dev"),eo.registerDevice(eo.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),eo.mkdev("/dev/null",eo.makedev(1,3)),et.register(eo.makedev(5,0),et.default_tty_ops),et.register(eo.makedev(6,0),et.default_tty1_ops),eo.mkdev("/dev/tty",eo.makedev(5,0)),eo.mkdev("/dev/tty1",eo.makedev(6,0));var e=function(){if("object"!=typeof crypto||"function"!=typeof crypto.getRandomValues)return()=>G("randomDevice");var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}();eo.createDevice("/dev","random",e),eo.createDevice("/dev","urandom",e),eo.mkdir("/dev/shm"),eo.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{eo.mkdir("/proc");var e=eo.mkdir("/proc/self");eo.mkdir("/proc/self/fd"),eo.mount({mount:()=>{var r=eo.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=eo.getStream(+r);if(!t)throw new eo.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>t.path}};return n.parent=n,n}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{e.stdin?eo.createDevice("/dev","stdin",e.stdin):eo.symlink("/dev/tty","/dev/stdin"),e.stdout?eo.createDevice("/dev","stdout",null,e.stdout):eo.symlink("/dev/tty","/dev/stdout"),e.stderr?eo.createDevice("/dev","stderr",null,e.stderr):eo.symlink("/dev/tty1","/dev/stderr"),eo.open("/dev/stdin",0),eo.open("/dev/stdout",1),eo.open("/dev/stderr",1)},ensureErrnoError:()=>{eo.ErrnoError||(eo.ErrnoError=function(e,r){this.name="ErrnoError",this.node=r,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},eo.ErrnoError.prototype=Error(),eo.ErrnoError.prototype.constructor=eo.ErrnoError,[44].forEach(e=>{eo.genericErrors[e]=new eo.ErrnoError(e),eo.genericErrors[e].stack=""}))},staticInit:()=>{eo.ensureErrnoError(),eo.nameTable=Array(4096),eo.mount(en,{},"/"),eo.createDefaultDirectories(),eo.createDefaultDevices(),eo.createSpecialDirectories(),eo.filesystems={MEMFS:en}},init:(r,t,n)=>{eo.init.initialized=!0,eo.ensureErrnoError(),e.stdin=r||e.stdin,e.stdout=t||e.stdout,e.stderr=n||e.stderr,eo.createStandardStreams()},quit:()=>{eo.init.initialized=!1,ey(0);for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=eo.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{var t=eo.lookupPath(e,{follow:!r});e=t.path}catch(e){}var n={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var t=eo.lookupPath(e,{parent:!0});n.parentExists=!0,n.parentPath=t.path,n.parentObject=t.node,n.name=Q.basename(e),t=eo.lookupPath(e,{follow:!r}),n.exists=!0,n.path=t.path,n.object=t.node,n.name=t.node.name,n.isRoot="/"===t.path}catch(e){n.error=e.errno}return n},createPath:(e,r,t,n)=>{e="string"==typeof e?e:eo.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=Q.join2(e,a);try{eo.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=Q.join2("string"==typeof e?e:eo.getPath(e),r),i=eo.getMode(n,o);return eo.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:eo.getPath(e),i=r?Q.join2(e,r):e);var s=eo.getMode(n,o),u=eo.create(i,s);if(t){if("string"==typeof t){for(var l=Array(t.length),c=0,d=t.length;c{var o=Q.join2("string"==typeof e?e:eo.getPath(e),r),a=eo.getMode(!!t,!!n);eo.createDevice.major||(eo.createDevice.major=64);var i=eo.makedev(eo.createDevice.major++,0);return eo.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i,s=0,u=0;u{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(a)try{e.contents=er(a(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new eo.ErrnoError(29)}else throw Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1)&&!(e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e,r=new XMLHttpRequest;if(r.open("HEAD",t,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw Error("Couldn't load "+t+". Status: "+r.status);var n=Number(r.getResponseHeader("Content-length")),o=(e=r.getResponseHeader("Accept-Ranges"))&&"bytes"===e,a=(e=r.getResponseHeader("Content-Encoding"))&&"gzip"===e,i=1048576;o||(i=n);var s=(e,r)=>{if(e>r)throw Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):er(o.responseText||"",!0)},u=this;u.setDataGetter(e=>{var r=e*i,t=(e+1)*i-1;if(t=Math.min(t,n-1),void 0===u.chunks[e]&&(u.chunks[e]=s(r,t)),void 0===u.chunks[e])throw Error("doXHR failed!");return u.chunks[e]}),(a||!n)&&(i=n=1,i=n=this.getter(0).length,D("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){var i;throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"}var i={isDevice:!1,url:t},s=eo.createFile(e,r,i,n,o);i.contents?s.contents=i.contents:i.url&&(s.contents=null,s.url=i.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};function l(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var s=0;s{var r=s.stream_ops[e];u[e]=function(){return eo.forceLoadFile(s),r.apply(null,arguments)}}),u.read=(e,r,t,n,o)=>(eo.forceLoadFile(s),l(e,r,t,n,o)),u.mmap=(e,r,t,n,o)=>{eo.forceLoadFile(s);var a=void G();if(!a)throw new eo.ErrnoError(48);return l(e,d,a,r,t),{ptr:a,allocated:!0}},s.stream_ops=u,s},createPreloadedFile:(e,r,t,n,o,a,s,u,l,c)=>{var d,f,m=r?ee.resolve(Q.join2(e,r)):e,h="cp "+m;function p(t){function i(t){c&&c(),u||eo.createDataFile(e,r,t,n,o,l),a&&a(),Y(h)}Browser.handledByPreloadPlugin(t,m,i,()=>{s&&s(),Y(h)})||i(t)}q(h),"string"==typeof t?(d=e=>p(e),f="al "+t,i(t,e=>{var r;r='Loading data file "'+t+'" failed (no arrayBuffer).',e||G(r),d(new Uint8Array(e)),f&&Y(f)},e=>{if(s)s();else throw'Loading data file "'+t+'" failed.'}),f&&q(f)):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r=()=>{},t=()=>{})=>{var n=eo.indexedDB();try{var o=n.open(eo.DB_NAME(),eo.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{D("creating db"),o.result.createObjectStore(eo.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([eo.DB_STORE_NAME],"readwrite"),a=n.objectStore(eo.DB_STORE_NAME),i=0,s=0,u=e.length;function l(){0==s?r():t()}e.forEach(e=>{var r=a.put(eo.analyzePath(e).object.contents,e);r.onsuccess=()=>{++i+s==u&&l()},r.onerror=()=>{i+ ++s==u&&l()}}),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r=()=>{},t=()=>{})=>{var n=eo.indexedDB();try{var o=n.open(eo.DB_NAME(),eo.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var a=n.transaction([eo.DB_STORE_NAME],"readonly")}catch(e){t(e);return}var i=a.objectStore(eo.DB_STORE_NAME),s=0,u=0,l=e.length;function c(){0==u?r():t()}e.forEach(e=>{var r=i.get(e);r.onsuccess=()=>{eo.analyzePath(e).exists&&eo.unlink(e),eo.createDataFile(Q.dirname(e),Q.basename(e),r.result,!0,!0,!0),++s+u==l&&c()},r.onerror=()=>{s+ ++u==l&&c()}}),a.onerror=t},o.onerror=t}},ea={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(Q.isAbs(r))return r;if(-100===e)n=eo.cwd();else{var n;n=ea.getStreamFromFD(e).path}if(0==r.length){if(!t)throw new eo.ErrnoError(44);return n}return Q.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&Q.normalize(r)!==Q.normalize(eo.getPath(e.node)))return -54;throw e}h[t>>2]=n.dev,h[t+8>>2]=n.ino,h[t+12>>2]=n.mode,p[t+16>>2]=n.nlink,h[t+20>>2]=n.uid,h[t+24>>2]=n.gid,h[t+28>>2]=n.rdev,g=[n.size>>>0,+Math.abs(w=n.size)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+40>>2]=g[0],h[t+44>>2]=g[1],h[t+48>>2]=4096,h[t+52>>2]=n.blocks;var o=n.atime.getTime(),a=n.mtime.getTime(),i=n.ctime.getTime();return g=[Math.floor(o/1e3)>>>0,+Math.abs(w=Math.floor(o/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+56>>2]=g[0],h[t+60>>2]=g[1],p[t+64>>2]=o%1e3*1e3,g=[Math.floor(a/1e3)>>>0,+Math.abs(w=Math.floor(a/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+72>>2]=g[0],h[t+76>>2]=g[1],p[t+80>>2]=a%1e3*1e3,g=[Math.floor(i/1e3)>>>0,+Math.abs(w=Math.floor(i/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+88>>2]=g[0],h[t+92>>2]=g[1],p[t+96>>2]=i%1e3*1e3,g=[n.ino>>>0,+Math.abs(w=n.ino)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+104>>2]=g[0],h[t+108>>2]=g[1],0},doMsync:function(e,r,t,n,o){if(!eo.isFile(r.node.mode))throw new eo.ErrnoError(43);if(2&n)return 0;var a=f.slice(e,e+t);eo.msync(r,a,o,t,n)},varargs:void 0,get:function(){return ea.varargs+=4,h[ea.varargs-4>>2]},getStr:function(e){return function(e,r){if(!e)return"";for(var t=e+void 0,n=e;!(n>=t)&&f[n];)++n;return P.decode(f.subarray(e,n))}(e)},getStreamFromFD:function(e){var r=eo.getStream(e);if(!r)throw new eo.ErrnoError(8);return r}};function ei(e){return p[e>>2]+4294967296*h[e+4>>2]}var es=[0,31,60,91,121,152,182,213,244,274,305,335],eu=[0,31,59,90,120,151,181,212,243,273,304,334];function el(e){var r;return((r=e.getFullYear())%4==0&&(r%100!=0||r%400==0)?es:eu)[e.getMonth()]+e.getDate()-1}function ec(e){var r=C(e)+1,t=ew(r);return t&&R(e,d,t,r),t}function ed(r,t){c=r,M||L>0||(eb(),Z(j),eo.quit(),et.shutdown(),I=!0),c=r,M||L>0||(e.onExit&&e.onExit(r),A=!0),k(r,new J(r))}function ef(e){if(e instanceof J||"unwind"==e)return c;k(1,e)}function em(e){try{return e()}catch(e){G(e)}}var eh={instrumentWasmImports:function(e){var r=["emscripten_sleep","emscripten_wget","emscripten_wget_data","emscripten_idb_load","emscripten_idb_store","emscripten_idb_delete","emscripten_idb_exists","emscripten_idb_load_blob","emscripten_idb_store_blob","SDL_Delay","emscripten_scan_registers","emscripten_lazy_load_code","emscripten_fiber_swap","__load_secondary_module","fd_sync","__wasi_fd_sync","_emval_await","_dlopen_js","__asyncjs__*"];for(var t in e)!function(t){var n=e[t];n.sig,"function"==typeof n&&(r.indexOf(t)>=0||t.startsWith("__asyncjs__"))}(t)},instrumentWasmExports:function(e){var r={};for(var t in e)!function(t){var n=e[t];"function"==typeof n?r[t]=function(){eh.exportCallStack.push(t);try{return n.apply(null,arguments)}finally{A||(eh.exportCallStack.pop()===t||G(void 0),eh.maybeStopUnwind())}}:r[t]=n}(t);return r},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:8192,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(e){var r=eh.callStackNameToId[e];return void 0===r&&(r=eh.callStackId++,eh.callStackNameToId[e]=r,eh.callStackIdToName[r]=e),r},maybeStopUnwind:function(){eh.currData&&eh.state===eh.State.Unwinding&&0===eh.exportCallStack.length&&(eh.state=eh.State.Normal,L+=1,em(ex),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:function(){return new Promise((e,r)=>{eh.asyncPromiseHandlers={resolve:e,reject:r}})},allocateData:function(){var e=ew(12+eh.StackSize);return eh.setDataHeader(e,e+12,eh.StackSize),eh.setDataRewindFunc(e),e},setDataHeader:function(e,r,t){h[e>>2]=r,h[e+4>>2]=r+t},setDataRewindFunc:function(e){var r=eh.exportCallStack[0],t=eh.getCallStackId(r);h[e+8>>2]=t},getDataRewindFunc:function(r){var t=h[r+8>>2],n=eh.callStackIdToName[t];return e.asm[n]},doRewind:function(e){var r=eh.getDataRewindFunc(e);return L-=1,r()},handleSleep:function(e){if(!A){if(eh.state===eh.State.Normal){var r=!1,t=!1;e((e=0)=>{if(!A&&(eh.handleSleepReturnValue=e,r=!0,t)){eh.state=eh.State.Rewinding,em(()=>eR(eh.currData)),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var n,o=!1;try{n=eh.doRewind(eh.currData)}catch(e){n=e,o=!0}var a=!1;if(!eh.currData){var i=eh.asyncPromiseHandlers;i&&(eh.asyncPromiseHandlers=null,(o?i.reject:i.resolve)(n),a=!0)}if(o&&!a)throw n}}),t=!0,r||(eh.state=eh.State.Unwinding,eh.currData=eh.allocateData(),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause(),em(()=>eP(eh.currData)))}else eh.state===eh.State.Rewinding?(eh.state=eh.State.Normal,em(eC),eg(eh.currData),eh.currData=null,eh.sleepCallbacks.forEach(e=>(function(e){if(!I&&!A)try{e(),function(){if(!(M||L>0))try{ed(c)}catch(e){ef(e)}}()}catch(e){ef(e)}})(e))):G("invalid state: "+eh.state);return eh.handleSleepReturnValue}},handleAsync:function(e){return eh.handleSleep(r=>{e().then(r)})}},ep=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=eo.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n};Object.defineProperties(ep.prototype,{read:{get:function(){return(365&this.mode)==365},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return(146&this.mode)==146},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return eo.isDir(this.mode)}},isDevice:{get:function(){return eo.isChrdev(this.mode)}}}),eo.FSNode=ep,eo.staticInit();var ev={q:function(r,t){return eh.handleAsync(async()=>{e.emglken_stdin_buffers.length||await new Promise(r=>{e.emglken_stdin_ready=r});let n=e.emglken_stdin_buffers.shift(),o=Math.min(n.length,t);return o==n.length?f.set(n,r):(f.set(n.subarray(0,o),r),e.emglken_stdin_buffers.unshift(n.subarray(o))),o})},D:function(e,r,t,n){try{if(r=ea.getStr(r),r=ea.calculateAt(e,r),-8&t)return -28;var o=eo.lookupPath(r,{follow:!0}).node;if(!o)return -44;var a="";if(4&t&&(a+="r"),2&t&&(a+="w"),1&t&&(a+="x"),a&&eo.nodePermissions(o,a))return -2;return 0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},l:function(e,r,t){ea.varargs=t;try{var n=ea.getStreamFromFD(e);switch(r){case 0:var o=ea.get();if(o<0)return -28;return eo.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=ea.get();return n.flags|=o,0;case 5:var o=ea.get();return m[o+0>>1]=2,0;case 16:case 8:default:return -28;case 9:return h[eE()>>2]=28,-1}}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},C:function(e,r){try{if(0===r)return -28;var t=eo.cwd(),n=C(t)+1;if(r>2]=0,0;case 21520:if(!n.tty)return -59;return -28;case 21531:var o=ea.get();return eo.ioctl(n,r,o);default:return -28}}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},k:function(e,r,t,n){ea.varargs=n;try{r=ea.getStr(r),r=ea.calculateAt(e,r);var o=n?ea.get():0;return eo.open(r,t,o).fd}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},A:function(e,r){try{return e=ea.getStr(e),ea.doStat(eo.stat,e,r)}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},z:function(e,r,t){try{return r=ea.getStr(r),r=ea.calculateAt(e,r),0===t?eo.unlink(r):512===t?eo.rmdir(r):G("Invalid flags passed to unlinkat"),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},x:function(){return!0},w:function(){throw 1/0},v:function(e,r){var t=new Date(1e3*ei(e));h[r>>2]=t.getUTCSeconds(),h[r+4>>2]=t.getUTCMinutes(),h[r+8>>2]=t.getUTCHours(),h[r+12>>2]=t.getUTCDate(),h[r+16>>2]=t.getUTCMonth(),h[r+20>>2]=t.getUTCFullYear()-1900,h[r+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-n)/864e5|0;h[r+28>>2]=o},u:function(e,r){var t=new Date(1e3*ei(e));h[r>>2]=t.getSeconds(),h[r+4>>2]=t.getMinutes(),h[r+8>>2]=t.getHours(),h[r+12>>2]=t.getDate(),h[r+16>>2]=t.getMonth(),h[r+20>>2]=t.getFullYear()-1900,h[r+24>>2]=t.getDay();var n=0|el(t);h[r+28>>2]=n,h[r+36>>2]=-(60*t.getTimezoneOffset());var o=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=0|(a!=i&&t.getTimezoneOffset()==Math.min(i,a));h[r+32>>2]=s},t:function(e){var r=new Date(h[e+20>>2]+1900,h[e+16>>2],h[e+12>>2],h[e+8>>2],h[e+4>>2],h[e>>2],0),t=h[e+32>>2],n=r.getTimezoneOffset(),o=new Date(r.getFullYear(),0,1),a=new Date(r.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=Math.min(i,a);if(t<0)h[e+32>>2]=Number(a!=i&&s==n);else if(t>0!=(s==n)){var u=t>0?s:Math.max(i,a);r.setTime(r.getTime()+(u-n)*6e4)}h[e+24>>2]=r.getDay();var l=0|el(r);return h[e+28>>2]=l,h[e>>2]=r.getSeconds(),h[e+4>>2]=r.getMinutes(),h[e+8>>2]=r.getHours(),h[e+12>>2]=r.getDate(),h[e+16>>2]=r.getMonth(),h[e+20>>2]=r.getYear(),r.getTime()/1e3|0},s:function(e){var r=Date.UTC(h[e+20>>2]+1900,h[e+16>>2],h[e+12>>2],h[e+8>>2],h[e+4>>2],h[e>>2],0),t=new Date(r);h[e+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-n)/864e5|0;return h[e+28>>2]=o,t.getTime()/1e3|0},r:function(e,r,t){var n=new Date().getFullYear(),o=new Date(n,0,1),a=new Date(n,6,1),i=o.getTimezoneOffset(),s=a.getTimezoneOffset();function u(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}p[e>>2]=60*Math.max(i,s),h[r>>2]=Number(i!=s);var l=u(o),c=u(a),d=ec(l),f=ec(c);s>2]=d,p[t+4>>2]=f):(p[t>>2]=f,p[t+4>>2]=d)},i:function(){return Date.now()},p:function(e,r,t){f.copyWithin(e,r,r+t)},o:function(e){var r=f.length;if((e>>>=0)>2147483648)return!1;let t=(e,r)=>e+(r-e%r)%r;for(var n=1;n<=4;n*=2){var o=r*(1+.2/n);if(o=Math.min(o,e+100663296),function(e){var r=l.buffer;try{return l.grow(e-r.byteLength+65535>>>16),T(),1}catch(e){}}(Math.min(2147483648,t(Math.max(e,o),65536))))return!0}return!1},a:ed,c:function(e){try{var r=ea.getStreamFromFD(e);return eo.close(r),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},y:function(e,r,t,n){try{var o=ea.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=eo.read(e,d,i,s,n);if(u<0)return -1;if(o+=u,u>2]=a,0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},m:function(e,r,t,n,o){try{var a=t+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*t:NaN;if(isNaN(a))return 61;var i=ea.getStreamFromFD(e);return eo.llseek(i,a,n),g=[i.position>>>0,(w=i.position,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[o>>2]=g[0],h[o+4>>2]=g[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},j:function(e,r,t,n){try{var o=ea.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=eo.write(e,d,i,s,n);if(u<0)return -1;o+=u,void 0!==n&&(n+=u)}return o}(o,r,t);return p[n>>2]=a,0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},h:function(e,r,t){return $(e,r,t,e=>e.normalize("NFD"))},g:function(e,r,t){return $(e,r,t,e=>e.normalize("NFC"))},f:function(e,r,t){return $(e,r,t,e=>e.toLowerCase())},e:function(e,r,t,n){return $(e,r,t,e=>e.reduce((e,r,t)=>{let o={ß:"Ss",DŽ:"Dž",Dž:"Dž",dž:"Dž",LJ:"Lj",Lj:"Lj",lj:"Lj",NJ:"Nj",Nj:"Nj",nj:"Nj",DZ:"Dz",Dz:"Dz",dz:"Dz",և:"Եւ",ᾲ:"Ὰͅ",ᾳ:"ᾼ",ᾴ:"Άͅ",ᾷ:"ᾼ͂",ᾼ:"ᾼ",ῂ:"Ὴͅ",ῃ:"ῌ",ῄ:"Ήͅ",ῇ:"ῌ͂",ῌ:"ῌ",ῲ:"Ὼͅ",ῳ:"ῼ",ῴ:"Ώͅ",ῷ:"ῼ͂",ῼ:"ῼ",ff:"Ff",fi:"Fi",fl:"Fl",ffi:"Ffi",ffl:"Ffl",ſt:"St",st:"St",ﬓ:"Մն",ﬔ:"Մե",ﬕ:"Մի",ﬖ:"Վն",ﬗ:"Մխ"},a=String.fromCodePoint(r);return 0===t?a=o[a]?o[a]:r>=8064&&r<8112?["ᾈᾉᾊᾋᾌᾍᾎᾏ","ᾘᾙᾚᾛᾜᾝᾞᾟ","ᾨᾩᾪᾫᾬᾭᾮᾯ"][(r-8064)/16|0][r%8]:a.toUpperCase():n&&(a=a.toLowerCase()),e+a},""),1)},d:function(e,r,t){return $(e,r,t,e=>e.toUpperCase())},n:function(e,r){var t=eS();try{eA(e,r)}catch(e){if(eD(t),e!==e+0)throw e;ek(1,0)}},b:function(e,r,t){var n=eS();try{eM(e,r,t)}catch(e){if(eD(n),e!==e+0)throw e;ek(1,0)}}};!function(){var r,t,o,a={a:ev};function i(r,t){var n,o=r.exports;return o=eh.instrumentWasmExports(o),e.asm=o,l=e.asm.E,T(),e.asm.N,n=e.asm.F,z.unshift(n),Y("wasm-instantiate"),o}if(q("wasm-instantiate"),e.instantiateWasm)try{return e.instantiateWasm(a,i)}catch(e){F("Module.instantiateWasm callback failed with error: "+e),n(e)}(r=u,t=v,o=function(e){i(e.instance)},r||"function"!=typeof WebAssembly.instantiateStreaming||V(t)||"function"!=typeof fetch?K(t,a,o):fetch(t,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,a).then(o,function(e){return F("wasm streaming compile failed: "+e),F("falling back to ArrayBuffer instantiation"),K(t,a,o)})})).catch(n)}();var ew=function(){return(ew=e.asm.G).apply(null,arguments)},eg=function(){return(eg=e.asm.H).apply(null,arguments)},e_=e._main=function(){return(e_=e._main=e.asm.I).apply(null,arguments)},ey=(e._gidispatch_get_game_id=function(){return(e._gidispatch_get_game_id=e.asm.J).apply(null,arguments)},e._fflush=function(){return(ey=e._fflush=e.asm.K).apply(null,arguments)}),eE=function(){return(eE=e.asm.L).apply(null,arguments)},eb=function(){return(eb=e.asm.M).apply(null,arguments)},ek=function(){return(ek=e.asm.O).apply(null,arguments)},eS=function(){return(eS=e.asm.P).apply(null,arguments)},eD=function(){return(eD=e.asm.Q).apply(null,arguments)},eF=function(){return(eF=e.asm.R).apply(null,arguments)},eM=e.dynCall_vii=function(){return(eM=e.dynCall_vii=e.asm.S).apply(null,arguments)},eA=e.dynCall_vi=function(){return(eA=e.dynCall_vi=e.asm.T).apply(null,arguments)},eP=function(){return(eP=e.asm.U).apply(null,arguments)},ex=function(){return(ex=e.asm.V).apply(null,arguments)},eR=function(){return(eR=e.asm.W).apply(null,arguments)},eC=function(){return(eC=e.asm.X).apply(null,arguments)};function eT(r=E){!(U>0)&&(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;){var r;r=e.preRun.shift(),N.unshift(r)}Z(N)}(),U>0||(e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),n()},1)):n()));function n(){!_&&(_=!0,e.calledRun=!0,A||(e.noFSInit||eo.init.initialized||eo.init(),eo.ignorePermissions=!1,et.init(),Z(z),Z(B),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),eN&&function(e=[]){var r=e_;e.unshift(b);var t=e.length,n=eF((t+1)*4),o=n>>2;e.forEach(e=>{var r,t;h[o++]=(t=eF(r=C(e)+1),R(e,d,t,r),t)}),h[o]=0;try{var a=r(t,n);ed(a,!0)}catch(e){return ef(e)}}(r),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;){var r;r=e.postRun.shift(),O.unshift(r)}Z(O)}()))}}if(e.___start_em_js=33568,e.___stop_em_js=36253,e.AsciiToString=function(e){for(var r="";;){var t=f[e++>>0];if(!t)return r;r+=String.fromCharCode(t)}},e.FS=eo,W=function e(){_||eT(),_||(W=e)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();var eN=!0;return e.noInitialRun&&(eN=!1),eT(),e.ready}),rC={};rC=B("6kBsm").getBundleURL("ejVIo")+B("n9Yfb").resolve("huVfu");var rT=(a="file:///node_modules/emglken/build/hugo-core.js",function(e={}){var r,t,n,o,i,s,u,l,c,d,f,m,h,p,v,w,g,_,e=void 0!==e?e:{};e.ready=new Promise(function(e,r){t=e,n=r});var y=Object.assign({},e),E=[],b="./this.program",k=(e,r)=>{throw r},S="";"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),a&&(S=a),S=0!==S.indexOf("blob:")?S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):"",o=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},i=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{if(200==n.status||0==n.status&&n.response){r(n.response);return}t()},n.onerror=t,n.send(null)};var D=e.print||console.log.bind(console),F=e.printErr||console.warn.bind(console);Object.assign(e,y),y=null,e.arguments&&(E=e.arguments),e.thisProgram&&(b=e.thisProgram),e.quit&&(k=e.quit),e.wasmBinary&&(u=e.wasmBinary);var M=e.noExitRuntime||!1;"object"!=typeof WebAssembly&&V("no native wasm support detected");var A=!1,P=new TextDecoder("utf8");function x(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;return P.decode(e.buffer?e.subarray(r,o):new Uint8Array(e.slice(r,o)))}function R(e,r){if(!e)return"";for(var t=e+r,n=e;!(n>=t)&&f[n];)++n;return P.decode(f.subarray(e,n))}function C(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i)),s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function T(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r}function N(){var r=l.buffer;e.HEAP8=d=new Int8Array(r),e.HEAP16=m=new Int16Array(r),e.HEAP32=h=new Int32Array(r),e.HEAPU8=f=new Uint8Array(r),e.HEAPU16=new Uint16Array(r),e.HEAPU32=p=new Uint32Array(r),e.HEAPF32=new Float32Array(r),e.HEAPF64=new Float64Array(r)}var z=[],B=[],j=[],O=[],I=[],L=!1,U=0,H=0,W=null,q=null;function Y(r){H++,e.monitorRunDependencies&&e.monitorRunDependencies(H)}function G(r){if(H--,e.monitorRunDependencies&&e.monitorRunDependencies(H),0==H&&(null!==W&&(clearInterval(W),W=null),q)){var t=q;q=null,t()}}function V(r){e.onAbort&&e.onAbort(r),F(r="Aborted("+r+")"),A=!0,c=1,r+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(r);throw n(t),t}function X(e){return e.startsWith("data:application/octet-stream;base64,")}function K(e){try{if(e==v&&u)return new Uint8Array(u);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}catch(e){V(e)}}function $(e,r,t){return(u||"function"!=typeof fetch?Promise.resolve().then(function(){return K(e)}):fetch(e,{credentials:"same-origin"}).then(function(r){if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(function(){return K(e)})).then(function(e){return WebAssembly.instantiate(e,r)}).then(function(e){return e}).then(t,function(e){F("failed to asynchronously prepare wasm: "+e),V(e)})}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Z(r){for(;r.length>0;)r.shift()(e)}e.locateFile?X(v="hugo-core.wasm")||(r=v,v=e.locateFile?e.locateFile(r,S):S+r):v=new URL(rC).href;var Q={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=Q.isAbs(e),t="/"===e.substr(-1);return(e=Q.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=Q.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=Q.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return -1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments);return Q.normalize(e.join("/"))},join2:(e,r)=>Q.normalize(e+"/"+r)},ee={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:eo.cwd();if("string"!=typeof n)throw TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=Q.isAbs(n)}return e=Q.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"),(r?"/":"")+e||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=ee.resolve(e).substr(1),r=ee.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t:T(e)+1),o=C(e,n,0,n.length);return r&&(n.length=o),n}var et={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){et.ttys[e]={input:[],output:[],ops:r},eo.registerDevice(e,et.stream_ops)},stream_ops:{open:function(e){var r=et.ttys[e.node.rdev];if(!r)throw new eo.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new eo.ErrnoError(60);for(var a,i=0,s=0;s0&&(D(x(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(F(x(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(F(x(e.output,0)),e.output=[])}}},en={ops_table:null,mount:function(e){return en.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(eo.isBlkdev(t)||eo.isFIFO(t))throw new eo.ErrnoError(63);en.ops_table||(en.ops_table={dir:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr,lookup:en.node_ops.lookup,mknod:en.node_ops.mknod,rename:en.node_ops.rename,unlink:en.node_ops.unlink,rmdir:en.node_ops.rmdir,readdir:en.node_ops.readdir,symlink:en.node_ops.symlink},stream:{llseek:en.stream_ops.llseek}},file:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr},stream:{llseek:en.stream_ops.llseek,read:en.stream_ops.read,write:en.stream_ops.write,allocate:en.stream_ops.allocate,mmap:en.stream_ops.mmap,msync:en.stream_ops.msync}},link:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr,readlink:en.node_ops.readlink},stream:{}},chrdev:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr},stream:eo.chrdev_stream_ops}});var o=eo.createNode(e,r,t,n);return eo.isDir(o.mode)?(o.node_ops=en.ops_table.dir.node,o.stream_ops=en.ops_table.dir.stream,o.contents={}):eo.isFile(o.mode)?(o.node_ops=en.ops_table.file.node,o.stream_ops=en.ops_table.file.stream,o.usedBytes=0,o.contents=null):eo.isLink(o.mode)?(o.node_ops=en.ops_table.link.node,o.stream_ops=en.ops_table.link.stream):eo.isChrdev(o.mode)&&(o.node_ops=en.ops_table.chrdev.node,o.stream_ops=en.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r){if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}}},node_ops:{getattr:function(e){var r={};return r.dev=eo.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,eo.isDir(e.mode)?r.size=4096:eo.isFile(e.mode)?r.size=e.usedBytes:eo.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&en.resizeFileStorage(e,r.size)},lookup:function(e,r){throw eo.genericErrors[44]},mknod:function(e,r,t,n){return en.createNode(e,r,t,n)},rename:function(e,r,t){if(eo.isDir(e.mode)){var n;try{n=eo.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new eo.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=eo.lookupNode(e,r);for(var n in t.contents)throw new eo.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=en.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!eo.isLink(e.mode))throw new eo.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||t+r{if(!(e=ee.resolve(e)))return{path:"",node:null};if((r=Object.assign({follow_mount:!0,recurse_count:0},r)).recurse_count>8)throw new eo.ErrnoError(32);for(var t=e.split("/").filter(e=>!!e),n=eo.root,o="/",a=0;a40)throw new eo.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var r;;){if(eo.isRoot(e)){var t=e.mount.mountpoint;if(!r)return t;return"/"!==t[t.length-1]?t+"/"+r:t+r}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%eo.nameTable.length},hashAddNode:e=>{var r=eo.hashName(e.parent.id,e.name);e.name_next=eo.nameTable[r],eo.nameTable[r]=e},hashRemoveNode:e=>{var r=eo.hashName(e.parent.id,e.name);if(eo.nameTable[r]===e)eo.nameTable[r]=e.name_next;else for(var t=eo.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=eo.mayLookup(e);if(t)throw new eo.ErrnoError(t,e);for(var n=eo.hashName(e.id,r),o=eo.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return eo.lookup(e,r)},createNode:(e,r,t,n)=>{var o=new eo.FSNode(e,r,t,n);return eo.hashAddNode(o),o},destroyNode:e=>{eo.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>(61440&e)==32768,isDir:e=>(61440&e)==16384,isLink:e=>(61440&e)==40960,isChrdev:e=>(61440&e)==8192,isBlkdev:e=>(61440&e)==24576,isFIFO:e=>(61440&e)==4096,isSocket:e=>(49152&e)==49152,flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=eo.flagModes[e];if(void 0===r)throw Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>eo.ignorePermissions?0:r.includes("r")&&!(292&e.mode)||r.includes("w")&&!(146&e.mode)||r.includes("x")&&!(73&e.mode)?2:0,mayLookup:e=>eo.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,r)=>{try{return eo.lookupNode(e,r),20}catch(e){}return eo.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{try{n=eo.lookupNode(e,r)}catch(e){return e.errno}var n,o=eo.nodePermissions(e,"wx");if(o)return o;if(t){if(!eo.isDir(n.mode))return 54;if(eo.isRoot(n)||eo.getPath(n)===eo.cwd())return 10}else if(eo.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?eo.isLink(e.mode)?32:eo.isDir(e.mode)&&("r"!==eo.flagsToPermissionString(r)||512&r)?31:eo.nodePermissions(e,eo.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,r=eo.MAX_OPEN_FDS)=>{for(var t=e;t<=r;t++)if(!eo.streams[t])return t;throw new eo.ErrnoError(33)},getStream:e=>eo.streams[e],createStream:(e,r,t)=>{eo.FSStream||(eo.FSStream=function(){this.shared={}},eo.FSStream.prototype={},Object.defineProperties(eo.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return(2097155&this.flags)!=1}},isWrite:{get:function(){return(2097155&this.flags)!=0}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new eo.FSStream,e);var n=eo.nextfd(r,t);return e.fd=n,eo.streams[n]=e,e},closeStream:e=>{eo.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=eo.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new eo.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{eo.devices[e]={stream_ops:r}},getDevice:e=>eo.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),eo.syncFSRequests++,eo.syncFSRequests>1&&F("warning: "+eo.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=eo.getMounts(eo.root.mount),n=0;function o(e){return eo.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach(r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)})},mount:(e,r,t)=>{var n,o="/"===t,a=!t;if(o&&eo.root)throw new eo.ErrnoError(10);if(!o&&!a){var i=eo.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,eo.isMountpoint(n))throw new eo.ErrnoError(10);if(!eo.isDir(n.mode))throw new eo.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?eo.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:e=>{var r=eo.lookupPath(e,{follow_mount:!1});if(!eo.isMountpoint(r.node))throw new eo.ErrnoError(28);var t=r.node,n=t.mounted,o=eo.getMounts(n);Object.keys(eo.nameTable).forEach(e=>{for(var r=eo.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&eo.destroyNode(r),r=t}}),t.mounted=null;var a=t.mount.mounts.indexOf(n);t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=eo.lookupPath(e,{parent:!0}).node,o=Q.basename(e);if(!o||"."===o||".."===o)throw new eo.ErrnoError(28);var a=eo.mayCreate(n,o);if(a)throw new eo.ErrnoError(a);if(!n.node_ops.mknod)throw new eo.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=(void 0!==r?r:438)&4095|32768,eo.mknod(e,r,0)),mkdir:(e,r)=>(r=(void 0!==r?r:511)&1023|16384,eo.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,eo.mknod(e,r,t)),symlink:(e,r)=>{if(!ee.resolve(e))throw new eo.ErrnoError(44);var t=eo.lookupPath(r,{parent:!0}).node;if(!t)throw new eo.ErrnoError(44);var n=Q.basename(r),o=eo.mayCreate(t,n);if(o)throw new eo.ErrnoError(o);if(!t.node_ops.symlink)throw new eo.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o,a=Q.dirname(e),i=Q.dirname(r),s=Q.basename(e),u=Q.basename(r);if(t=eo.lookupPath(e,{parent:!0}).node,n=eo.lookupPath(r,{parent:!0}).node,!t||!n)throw new eo.ErrnoError(44);if(t.mount!==n.mount)throw new eo.ErrnoError(75);var l=eo.lookupNode(t,s),c=ee.relative(e,i);if("."!==c.charAt(0))throw new eo.ErrnoError(28);if("."!==(c=ee.relative(r,a)).charAt(0))throw new eo.ErrnoError(55);try{o=eo.lookupNode(n,u)}catch(e){}if(l!==o){var d=eo.isDir(l.mode),f=eo.mayDelete(t,s,d);if(f||(f=o?eo.mayDelete(n,u,d):eo.mayCreate(n,u)))throw new eo.ErrnoError(f);if(!t.node_ops.rename)throw new eo.ErrnoError(63);if(eo.isMountpoint(l)||o&&eo.isMountpoint(o))throw new eo.ErrnoError(10);if(n!==t&&(f=eo.nodePermissions(t,"w")))throw new eo.ErrnoError(f);eo.hashRemoveNode(l);try{t.node_ops.rename(l,n,u)}catch(e){throw e}finally{eo.hashAddNode(l)}}},rmdir:e=>{var r=eo.lookupPath(e,{parent:!0}).node,t=Q.basename(e),n=eo.lookupNode(r,t),o=eo.mayDelete(r,t,!0);if(o)throw new eo.ErrnoError(o);if(!r.node_ops.rmdir)throw new eo.ErrnoError(63);if(eo.isMountpoint(n))throw new eo.ErrnoError(10);r.node_ops.rmdir(r,t),eo.destroyNode(n)},readdir:e=>{var r=eo.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new eo.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=eo.lookupPath(e,{parent:!0}).node;if(!r)throw new eo.ErrnoError(44);var t=Q.basename(e),n=eo.lookupNode(r,t),o=eo.mayDelete(r,t,!1);if(o)throw new eo.ErrnoError(o);if(!r.node_ops.unlink)throw new eo.ErrnoError(63);if(eo.isMountpoint(n))throw new eo.ErrnoError(10);r.node_ops.unlink(r,t),eo.destroyNode(n)},readlink:e=>{var r=eo.lookupPath(e).node;if(!r)throw new eo.ErrnoError(44);if(!r.node_ops.readlink)throw new eo.ErrnoError(28);return ee.resolve(eo.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=eo.lookupPath(e,{follow:!r}).node;if(!t)throw new eo.ErrnoError(44);if(!t.node_ops.getattr)throw new eo.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>eo.stat(e,!0),chmod:(e,r,t)=>{var n;if(!(n="string"==typeof e?eo.lookupPath(e,{follow:!t}).node:e).node_ops.setattr)throw new eo.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{eo.chmod(e,r,!0)},fchmod:(e,r)=>{var t=eo.getStream(e);if(!t)throw new eo.ErrnoError(8);eo.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;if(!(o="string"==typeof e?eo.lookupPath(e,{follow:!n}).node:e).node_ops.setattr)throw new eo.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{eo.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=eo.getStream(e);if(!n)throw new eo.ErrnoError(8);eo.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new eo.ErrnoError(28);if("string"==typeof e){var t;t=eo.lookupPath(e,{follow:!0}).node}else t=e;if(!t.node_ops.setattr)throw new eo.ErrnoError(63);if(eo.isDir(t.mode))throw new eo.ErrnoError(31);if(!eo.isFile(t.mode))throw new eo.ErrnoError(28);var n=eo.nodePermissions(t,"w");if(n)throw new eo.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=eo.getStream(e);if(!t)throw new eo.ErrnoError(8);if((2097155&t.flags)==0)throw new eo.ErrnoError(28);eo.truncate(t.node,r)},utime:(e,r,t)=>{var n=eo.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(r,t,n)=>{if(""===r)throw new eo.ErrnoError(44);if(t="string"==typeof t?eo.modeStringToFlags(t):t,n=void 0===n?438:n,n=64&t?4095&n|32768:0,"object"==typeof r)o=r;else{r=Q.normalize(r);try{var o;o=eo.lookupPath(r,{follow:!(131072&t)}).node}catch(e){}}var a=!1;if(64&t){if(o){if(128&t)throw new eo.ErrnoError(20)}else o=eo.mknod(r,n,0),a=!0}if(!o)throw new eo.ErrnoError(44);if(eo.isChrdev(o.mode)&&(t&=-513),65536&t&&!eo.isDir(o.mode))throw new eo.ErrnoError(54);if(!a){var i=eo.mayOpen(o,t);if(i)throw new eo.ErrnoError(i)}512&t&&!a&&eo.truncate(o,0),t&=-131713;var s=eo.createStream({node:o,path:eo.getPath(o),flags:t,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),!e.logReadFiles||1&t||(eo.readFiles||(eo.readFiles={}),r in eo.readFiles||(eo.readFiles[r]=1)),s},close:e=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{eo.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new eo.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new eo.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new eo.ErrnoError(28);if(eo.isClosed(e)||(2097155&e.flags)==1)throw new eo.ErrnoError(8);if(eo.isDir(e.node.mode))throw new eo.ErrnoError(31);if(!e.stream_ops.read)throw new eo.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new eo.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new eo.ErrnoError(28);if(eo.isClosed(e)||(2097155&e.flags)==0)throw new eo.ErrnoError(8);if(eo.isDir(e.node.mode))throw new eo.ErrnoError(31);if(!e.stream_ops.write)throw new eo.ErrnoError(28);e.seekable&&1024&e.flags&&eo.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new eo.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);if(r<0||t<=0)throw new eo.ErrnoError(28);if((2097155&e.flags)==0)throw new eo.ErrnoError(8);if(!eo.isFile(e.node.mode)&&!eo.isDir(e.node.mode))throw new eo.ErrnoError(43);if(!e.stream_ops.allocate)throw new eo.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o)=>{if((2&n)!=0&&(2&o)==0&&(2097155&e.flags)!=2||(2097155&e.flags)==1)throw new eo.ErrnoError(2);if(!e.stream_ops.mmap)throw new eo.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:(e,r,t,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new eo.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:(e,r={})=>{if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw Error('Invalid encoding type "'+r.encoding+'"');var t,n=eo.open(e,r.flags),o=eo.stat(e).size,a=new Uint8Array(o);return eo.read(n,a,0,o,0),"utf8"===r.encoding?t=x(a,0):"binary"===r.encoding&&(t=a),eo.close(n),t},writeFile:(e,r,t={})=>{t.flags=t.flags||577;var n=eo.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(T(r)+1),a=C(r,o,0,o.length);eo.write(n,o,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))eo.write(n,r,0,r.byteLength,void 0,t.canOwn);else throw Error("Unsupported data type");eo.close(n)},cwd:()=>eo.currentPath,chdir:e=>{var r=eo.lookupPath(e,{follow:!0});if(null===r.node)throw new eo.ErrnoError(44);if(!eo.isDir(r.node.mode))throw new eo.ErrnoError(54);var t=eo.nodePermissions(r.node,"x");if(t)throw new eo.ErrnoError(t);eo.currentPath=r.path},createDefaultDirectories:()=>{eo.mkdir("/tmp"),eo.mkdir("/home"),eo.mkdir("/home/web_user")},createDefaultDevices:()=>{eo.mkdir("/dev"),eo.registerDevice(eo.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),eo.mkdev("/dev/null",eo.makedev(1,3)),et.register(eo.makedev(5,0),et.default_tty_ops),et.register(eo.makedev(6,0),et.default_tty1_ops),eo.mkdev("/dev/tty",eo.makedev(5,0)),eo.mkdev("/dev/tty1",eo.makedev(6,0));var e=function(){if("object"!=typeof crypto||"function"!=typeof crypto.getRandomValues)return()=>V("randomDevice");var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}();eo.createDevice("/dev","random",e),eo.createDevice("/dev","urandom",e),eo.mkdir("/dev/shm"),eo.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{eo.mkdir("/proc");var e=eo.mkdir("/proc/self");eo.mkdir("/proc/self/fd"),eo.mount({mount:()=>{var r=eo.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=eo.getStream(+r);if(!t)throw new eo.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>t.path}};return n.parent=n,n}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{e.stdin?eo.createDevice("/dev","stdin",e.stdin):eo.symlink("/dev/tty","/dev/stdin"),e.stdout?eo.createDevice("/dev","stdout",null,e.stdout):eo.symlink("/dev/tty","/dev/stdout"),e.stderr?eo.createDevice("/dev","stderr",null,e.stderr):eo.symlink("/dev/tty1","/dev/stderr"),eo.open("/dev/stdin",0),eo.open("/dev/stdout",1),eo.open("/dev/stderr",1)},ensureErrnoError:()=>{eo.ErrnoError||(eo.ErrnoError=function(e,r){this.name="ErrnoError",this.node=r,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},eo.ErrnoError.prototype=Error(),eo.ErrnoError.prototype.constructor=eo.ErrnoError,[44].forEach(e=>{eo.genericErrors[e]=new eo.ErrnoError(e),eo.genericErrors[e].stack=""}))},staticInit:()=>{eo.ensureErrnoError(),eo.nameTable=Array(4096),eo.mount(en,{},"/"),eo.createDefaultDirectories(),eo.createDefaultDevices(),eo.createSpecialDirectories(),eo.filesystems={MEMFS:en}},init:(r,t,n)=>{eo.init.initialized=!0,eo.ensureErrnoError(),e.stdin=r||e.stdin,e.stdout=t||e.stdout,e.stderr=n||e.stderr,eo.createStandardStreams()},quit:()=>{eo.init.initialized=!1,eE(0);for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=eo.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{var t=eo.lookupPath(e,{follow:!r});e=t.path}catch(e){}var n={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var t=eo.lookupPath(e,{parent:!0});n.parentExists=!0,n.parentPath=t.path,n.parentObject=t.node,n.name=Q.basename(e),t=eo.lookupPath(e,{follow:!r}),n.exists=!0,n.path=t.path,n.object=t.node,n.name=t.node.name,n.isRoot="/"===t.path}catch(e){n.error=e.errno}return n},createPath:(e,r,t,n)=>{e="string"==typeof e?e:eo.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=Q.join2(e,a);try{eo.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=Q.join2("string"==typeof e?e:eo.getPath(e),r),i=eo.getMode(n,o);return eo.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:eo.getPath(e),i=r?Q.join2(e,r):e);var s=eo.getMode(n,o),u=eo.create(i,s);if(t){if("string"==typeof t){for(var l=Array(t.length),c=0,d=t.length;c{var o=Q.join2("string"==typeof e?e:eo.getPath(e),r),a=eo.getMode(!!t,!!n);eo.createDevice.major||(eo.createDevice.major=64);var i=eo.makedev(eo.createDevice.major++,0);return eo.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i,s=0,u=0;u{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(o)try{e.contents=er(o(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new eo.ErrnoError(29)}else throw Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1)&&!(e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e,r=new XMLHttpRequest;if(r.open("HEAD",t,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw Error("Couldn't load "+t+". Status: "+r.status);var n=Number(r.getResponseHeader("Content-length")),o=(e=r.getResponseHeader("Accept-Ranges"))&&"bytes"===e,a=(e=r.getResponseHeader("Content-Encoding"))&&"gzip"===e,i=1048576;o||(i=n);var s=(e,r)=>{if(e>r)throw Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):er(o.responseText||"",!0)},u=this;u.setDataGetter(e=>{var r=e*i,t=(e+1)*i-1;if(t=Math.min(t,n-1),void 0===u.chunks[e]&&(u.chunks[e]=s(r,t)),void 0===u.chunks[e])throw Error("doXHR failed!");return u.chunks[e]}),(a||!n)&&(i=n=1,i=n=this.getter(0).length,D("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){var i;throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"}var i={isDevice:!1,url:t},s=eo.createFile(e,r,i,n,o);i.contents?s.contents=i.contents:i.url&&(s.contents=null,s.url=i.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};function l(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var s=0;s{var r=s.stream_ops[e];u[e]=function(){return eo.forceLoadFile(s),r.apply(null,arguments)}}),u.read=(e,r,t,n,o)=>(eo.forceLoadFile(s),l(e,r,t,n,o)),u.mmap=(e,r,t,n,o)=>{eo.forceLoadFile(s);var a=void V();if(!a)throw new eo.ErrnoError(48);return l(e,d,a,r,t),{ptr:a,allocated:!0}},s.stream_ops=u,s},createPreloadedFile:(e,r,t,n,o,a,s,u,l,c)=>{var d,f,m=r?ee.resolve(Q.join2(e,r)):e,h="cp "+m;function p(t){function i(t){c&&c(),u||eo.createDataFile(e,r,t,n,o,l),a&&a(),G(h)}Browser.handledByPreloadPlugin(t,m,i,()=>{s&&s(),G(h)})||i(t)}Y(h),"string"==typeof t?(d=e=>p(e),f="al "+t,i(t,e=>{var r;r='Loading data file "'+t+'" failed (no arrayBuffer).',e||V(r),d(new Uint8Array(e)),f&&G(f)},e=>{if(s)s();else throw'Loading data file "'+t+'" failed.'}),f&&Y(f)):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r=()=>{},t=()=>{})=>{var n=eo.indexedDB();try{var o=n.open(eo.DB_NAME(),eo.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{D("creating db"),o.result.createObjectStore(eo.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([eo.DB_STORE_NAME],"readwrite"),a=n.objectStore(eo.DB_STORE_NAME),i=0,s=0,u=e.length;function l(){0==s?r():t()}e.forEach(e=>{var r=a.put(eo.analyzePath(e).object.contents,e);r.onsuccess=()=>{++i+s==u&&l()},r.onerror=()=>{i+ ++s==u&&l()}}),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r=()=>{},t=()=>{})=>{var n=eo.indexedDB();try{var o=n.open(eo.DB_NAME(),eo.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var a=n.transaction([eo.DB_STORE_NAME],"readonly")}catch(e){t(e);return}var i=a.objectStore(eo.DB_STORE_NAME),s=0,u=0,l=e.length;function c(){0==u?r():t()}e.forEach(e=>{var r=i.get(e);r.onsuccess=()=>{eo.analyzePath(e).exists&&eo.unlink(e),eo.createDataFile(Q.dirname(e),Q.basename(e),r.result,!0,!0,!0),++s+u==l&&c()},r.onerror=()=>{s+ ++u==l&&c()}}),a.onerror=t},o.onerror=t}},ea={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(Q.isAbs(r))return r;if(-100===e)n=eo.cwd();else{var n;n=ea.getStreamFromFD(e).path}if(0==r.length){if(!t)throw new eo.ErrnoError(44);return n}return Q.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&Q.normalize(r)!==Q.normalize(eo.getPath(e.node)))return -54;throw e}h[t>>2]=n.dev,h[t+8>>2]=n.ino,h[t+12>>2]=n.mode,p[t+16>>2]=n.nlink,h[t+20>>2]=n.uid,h[t+24>>2]=n.gid,h[t+28>>2]=n.rdev,g=[n.size>>>0,+Math.abs(w=n.size)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+40>>2]=g[0],h[t+44>>2]=g[1],h[t+48>>2]=4096,h[t+52>>2]=n.blocks;var o=n.atime.getTime(),a=n.mtime.getTime(),i=n.ctime.getTime();return g=[Math.floor(o/1e3)>>>0,+Math.abs(w=Math.floor(o/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+56>>2]=g[0],h[t+60>>2]=g[1],p[t+64>>2]=o%1e3*1e3,g=[Math.floor(a/1e3)>>>0,+Math.abs(w=Math.floor(a/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+72>>2]=g[0],h[t+76>>2]=g[1],p[t+80>>2]=a%1e3*1e3,g=[Math.floor(i/1e3)>>>0,+Math.abs(w=Math.floor(i/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+88>>2]=g[0],h[t+92>>2]=g[1],p[t+96>>2]=i%1e3*1e3,g=[n.ino>>>0,+Math.abs(w=n.ino)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+104>>2]=g[0],h[t+108>>2]=g[1],0},doMsync:function(e,r,t,n,o){if(!eo.isFile(r.node.mode))throw new eo.ErrnoError(43);if(2&n)return 0;var a=f.slice(e,e+t);eo.msync(r,a,o,t,n)},varargs:void 0,get:function(){return ea.varargs+=4,h[ea.varargs-4>>2]},getStr:function(e){return R(e)},getStreamFromFD:function(e){var r=eo.getStream(e);if(!r)throw new eo.ErrnoError(8);return r}};function ei(e){return e%4==0&&(e%100!=0||e%400==0)}var es=[0,31,60,91,121,152,182,213,244,274,305,335],eu=[0,31,59,90,120,151,181,212,243,273,304,334];function el(e){var r=T(e)+1,t=eg(r);return t&&C(e,d,t,r),t}function ec(r,t){c=r,M||U>0||(ek(),Z(O),eo.quit(),et.shutdown(),L=!0),c=r,M||U>0||(e.onExit&&e.onExit(r),A=!0),k(r,new J(r))}var ed=[31,29,31,30,31,30,31,31,30,31,30,31],ef=[31,28,31,30,31,30,31,31,30,31,30,31];function em(e){if(e instanceof J||"unwind"==e)return c;k(1,e)}function eh(e){try{return e()}catch(e){V(e)}}var ep={instrumentWasmImports:function(e){var r=["emscripten_sleep","emscripten_wget","emscripten_wget_data","emscripten_idb_load","emscripten_idb_store","emscripten_idb_delete","emscripten_idb_exists","emscripten_idb_load_blob","emscripten_idb_store_blob","SDL_Delay","emscripten_scan_registers","emscripten_lazy_load_code","emscripten_fiber_swap","__load_secondary_module","fd_sync","__wasi_fd_sync","_emval_await","_dlopen_js","__asyncjs__*"];for(var t in e)!function(t){var n=e[t];n.sig,"function"==typeof n&&(r.indexOf(t)>=0||t.startsWith("__asyncjs__"))}(t)},instrumentWasmExports:function(e){var r={};for(var t in e)!function(t){var n=e[t];"function"==typeof n?r[t]=function(){ep.exportCallStack.push(t);try{return n.apply(null,arguments)}finally{A||(ep.exportCallStack.pop()===t||V(void 0),ep.maybeStopUnwind())}}:r[t]=n}(t);return r},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:8192,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(e){var r=ep.callStackNameToId[e];return void 0===r&&(r=ep.callStackId++,ep.callStackNameToId[e]=r,ep.callStackIdToName[r]=e),r},maybeStopUnwind:function(){ep.currData&&ep.state===ep.State.Unwinding&&0===ep.exportCallStack.length&&(ep.state=ep.State.Normal,U+=1,eh(eF),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:function(){return new Promise((e,r)=>{ep.asyncPromiseHandlers={resolve:e,reject:r}})},allocateData:function(){var e=eg(12+ep.StackSize);return ep.setDataHeader(e,e+12,ep.StackSize),ep.setDataRewindFunc(e),e},setDataHeader:function(e,r,t){h[e>>2]=r,h[e+4>>2]=r+t},setDataRewindFunc:function(e){var r=ep.exportCallStack[0],t=ep.getCallStackId(r);h[e+8>>2]=t},getDataRewindFunc:function(r){var t=h[r+8>>2],n=ep.callStackIdToName[t];return e.asm[n]},doRewind:function(e){var r=ep.getDataRewindFunc(e);return U-=1,r()},handleSleep:function(e){if(!A){if(ep.state===ep.State.Normal){var r=!1,t=!1;e((e=0)=>{if(!A&&(ep.handleSleepReturnValue=e,r=!0,t)){ep.state=ep.State.Rewinding,eh(()=>eM(ep.currData)),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var n,o=!1;try{n=ep.doRewind(ep.currData)}catch(e){n=e,o=!0}var a=!1;if(!ep.currData){var i=ep.asyncPromiseHandlers;i&&(ep.asyncPromiseHandlers=null,(o?i.reject:i.resolve)(n),a=!0)}if(o&&!a)throw n}}),t=!0,r||(ep.state=ep.State.Unwinding,ep.currData=ep.allocateData(),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause(),eh(()=>eD(ep.currData)))}else ep.state===ep.State.Rewinding?(ep.state=ep.State.Normal,eh(eA),e_(ep.currData),ep.currData=null,ep.sleepCallbacks.forEach(e=>(function(e){if(!L&&!A)try{e(),function(){if(!(M||U>0))try{ec(c)}catch(e){em(e)}}()}catch(e){em(e)}})(e))):V("invalid state: "+ep.state);return ep.handleSleepReturnValue}},handleAsync:function(e){return ep.handleSleep(r=>{e().then(r)})}},ev=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=eo.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n};Object.defineProperties(ev.prototype,{read:{get:function(){return(365&this.mode)==365},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return(146&this.mode)==146},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return eo.isDir(this.mode)}},isDevice:{get:function(){return eo.isChrdev(this.mode)}}}),eo.FSNode=ev,eo.staticInit();var ew={j:function(r,t){return ep.handleAsync(async()=>{e.emglken_stdin_buffers.length||await new Promise(r=>{e.emglken_stdin_ready=r});let n=e.emglken_stdin_buffers.shift(),o=Math.min(n.length,t);return o==n.length?f.set(n,r):(f.set(n.subarray(0,o),r),e.emglken_stdin_buffers.unshift(n.subarray(o))),o})},s:function(e,r,t,n){try{if(r=ea.getStr(r),r=ea.calculateAt(e,r),-8&t)return -28;var o=eo.lookupPath(r,{follow:!0}).node;if(!o)return -44;var a="";if(4&t&&(a+="r"),2&t&&(a+="w"),1&t&&(a+="x"),a&&eo.nodePermissions(o,a))return -2;return 0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},e:function(e,r,t){ea.varargs=t;try{var n=ea.getStreamFromFD(e);switch(r){case 0:var o=ea.get();if(o<0)return -28;return eo.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=ea.get();return n.flags|=o,0;case 5:var o=ea.get();return m[o+0>>1]=2,0;case 16:case 8:default:return -28;case 9:return h[eb()>>2]=28,-1}}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},r:function(e,r){try{if(0===r)return -28;var t=eo.cwd(),n=T(t)+1;if(r>2]=0,0;case 21520:if(!n.tty)return -59;return -28;case 21531:var o=ea.get();return eo.ioctl(n,r,o);default:return -28}}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},p:function(e,r,t,n){ea.varargs=n;try{r=ea.getStr(r),r=ea.calculateAt(e,r);var o=n?ea.get():0;return eo.open(r,t,o).fd}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},o:function(e,r){try{return e=ea.getStr(e),ea.doStat(eo.stat,e,r)}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},m:function(){return!0},l:function(e,r){var t=new Date(1e3*(p[e>>2]+4294967296*h[e+4>>2]));h[r>>2]=t.getSeconds(),h[r+4>>2]=t.getMinutes(),h[r+8>>2]=t.getHours(),h[r+12>>2]=t.getDate(),h[r+16>>2]=t.getMonth(),h[r+20>>2]=t.getFullYear()-1900,h[r+24>>2]=t.getDay();var n=0|(ei(t.getFullYear())?es:eu)[t.getMonth()]+t.getDate()-1;h[r+28>>2]=n,h[r+36>>2]=-(60*t.getTimezoneOffset());var o=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=0|(a!=i&&t.getTimezoneOffset()==Math.min(i,a));h[r+32>>2]=s},k:function(e,r,t){var n=new Date().getFullYear(),o=new Date(n,0,1),a=new Date(n,6,1),i=o.getTimezoneOffset(),s=a.getTimezoneOffset();function u(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}p[e>>2]=60*Math.max(i,s),h[r>>2]=Number(i!=s);var l=u(o),c=u(a),d=el(l),f=el(c);s>2]=d,p[t+4>>2]=f):(p[t>>2]=f,p[t+4>>2]=d)},b:function(){return Date.now()},i:function(e,r,t){f.copyWithin(e,r,r+t)},h:function(e){var r=f.length;if((e>>>=0)>2147483648)return!1;let t=(e,r)=>e+(r-e%r)%r;for(var n=1;n<=4;n*=2){var o=r*(1+.2/n);if(o=Math.min(o,e+100663296),function(e){var r=l.buffer;try{return l.grow(e-r.byteLength+65535>>>16),N(),1}catch(e){}}(Math.min(2147483648,t(Math.max(e,o),65536))))return!0}return!1},a:ec,d:function(e){try{var r=ea.getStreamFromFD(e);return eo.close(r),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},n:function(e,r,t,n){try{var o=ea.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=eo.read(e,d,i,s,n);if(u<0)return -1;if(o+=u,u>2]=a,0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},g:function(e,r,t,n,o){try{var a=t+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*t:NaN;if(isNaN(a))return 61;var i=ea.getStreamFromFD(e);return eo.llseek(i,a,n),g=[i.position>>>0,(w=i.position,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[o>>2]=g[0],h[o+4>>2]=g[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},c:function(e,r,t,n){try{var o=ea.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=eo.write(e,d,i,s,n);if(u<0)return -1;o+=u,void 0!==n&&(n+=u)}return o}(o,r,t);return p[n>>2]=a,0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},f:function(e,r,t,n){var o=h[n+40>>2],a={tm_sec:h[n>>2],tm_min:h[n+4>>2],tm_hour:h[n+8>>2],tm_mday:h[n+12>>2],tm_mon:h[n+16>>2],tm_year:h[n+20>>2],tm_wday:h[n+24>>2],tm_yday:h[n+28>>2],tm_isdst:h[n+32>>2],tm_gmtoff:h[n+36>>2],tm_zone:o?R(o):""},i=R(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)i=i.replace(RegExp(u,"g"),s[u]);var l=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"];function f(e,r,t){for(var n="number"==typeof e?e.toString():e||"";n.length0?1:0}return 0===(t=n(e.getFullYear()-r.getFullYear()))&&0===(t=n(e.getMonth()-r.getMonth()))&&(t=n(e.getDate()-r.getDate())),t}function v(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function w(e){var r=function(e,r){for(var t=new Date(e.getTime());r>0;){var n=ei(t.getFullYear()),o=t.getMonth(),a=(n?ed:ef)[o];if(r>a-t.getDate())r-=a-t.getDate()+1,t.setDate(1),o<11?t.setMonth(o+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else{t.setDate(t.getDate()+r);break}}return t}(new Date(e.tm_year+1900,0,1),e.tm_yday),t=new Date(r.getFullYear(),0,4),n=new Date(r.getFullYear()+1,0,4),o=v(t),a=v(n);return 0>=p(o,r)?0>=p(a,r)?r.getFullYear()+1:r.getFullYear():r.getFullYear()-1}var g={"%a":function(e){return l[e.tm_wday].substring(0,3)},"%A":function(e){return l[e.tm_wday]},"%b":function(e){return c[e.tm_mon].substring(0,3)},"%B":function(e){return c[e.tm_mon]},"%C":function(e){return m((e.tm_year+1900)/100|0,2)},"%d":function(e){return m(e.tm_mday,2)},"%e":function(e){return f(e.tm_mday,2," ")},"%g":function(e){return w(e).toString().substring(2)},"%G":function(e){return w(e)},"%H":function(e){return m(e.tm_hour,2)},"%I":function(e){var r=e.tm_hour;return 0==r?r=12:r>12&&(r-=12),m(r,2)},"%j":function(e){return m(e.tm_mday+function(e,r){for(var t=0,n=0;n<=r;t+=e[n++]);return t}(ei(e.tm_year+1900)?ed:ef,e.tm_mon-1),3)},"%m":function(e){return m(e.tm_mon+1,2)},"%M":function(e){return m(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return m(e.tm_sec,2)},"%t":function(){return" "},"%u":function(e){return e.tm_wday||7},"%U":function(e){return m(Math.floor((e.tm_yday+7-e.tm_wday)/7),2)},"%V":function(e){var r=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&r++,r){if(53==r){var t=(e.tm_wday+371-e.tm_yday)%7;4==t||3==t&&ei(e.tm_year)||(r=1)}}else{r=52;var n=(e.tm_wday+7-e.tm_yday-1)%7;(4==n||5==n&&ei(e.tm_year%400-1))&&r++}return m(r,2)},"%w":function(e){return e.tm_wday},"%W":function(e){return m(Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var r=e.tm_gmtoff;return(r>=0?"+":"-")+String("0000"+(r=(r=Math.abs(r)/60)/60*100+r%60)).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in i=i.replace(/%%/g,"\x00\x00"),g)i.includes(u)&&(i=i.replace(RegExp(u,"g"),g[u](a)));var _=er(i=i.replace(/\0\0/g,"%"),!1);return _.length>r?0:(d.set(_,e),_.length-1)}};!function(){var r,t,o,a={a:ew};function i(r,t){var n,o=r.exports;return o=ep.instrumentWasmExports(o),e.asm=o,l=e.asm.t,N(),e.asm.C,n=e.asm.u,B.unshift(n),G("wasm-instantiate"),o}if(Y("wasm-instantiate"),e.instantiateWasm)try{return e.instantiateWasm(a,i)}catch(e){F("Module.instantiateWasm callback failed with error: "+e),n(e)}(r=u,t=v,o=function(e){i(e.instance)},r||"function"!=typeof WebAssembly.instantiateStreaming||X(t)||"function"!=typeof fetch?$(t,a,o):fetch(t,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,a).then(o,function(e){return F("wasm streaming compile failed: "+e),F("falling back to ArrayBuffer instantiation"),$(t,a,o)})})).catch(n)}();var eg=function(){return(eg=e.asm.v).apply(null,arguments)},e_=function(){return(e_=e.asm.w).apply(null,arguments)},ey=e._main=function(){return(ey=e._main=e.asm.x).apply(null,arguments)},eE=(e._gidispatch_get_game_id=function(){return(e._gidispatch_get_game_id=e.asm.y).apply(null,arguments)},e._fflush=function(){return(eE=e._fflush=e.asm.z).apply(null,arguments)}),eb=function(){return(eb=e.asm.A).apply(null,arguments)},ek=function(){return(ek=e.asm.B).apply(null,arguments)},eS=function(){return(eS=e.asm.D).apply(null,arguments)},eD=function(){return(eD=e.asm.E).apply(null,arguments)},eF=function(){return(eF=e.asm.F).apply(null,arguments)},eM=function(){return(eM=e.asm.G).apply(null,arguments)},eA=function(){return(eA=e.asm.H).apply(null,arguments)};function eP(r=E){!(H>0)&&(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;){var r;r=e.preRun.shift(),z.unshift(r)}Z(z)}(),H>0||(e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),n()},1)):n()));function n(){!_&&(_=!0,e.calledRun=!0,A||(e.noFSInit||eo.init.initialized||eo.init(),eo.ignorePermissions=!1,et.init(),Z(B),Z(j),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),ex&&function(e=[]){var r=ey;e.unshift(b);var t=e.length,n=eS((t+1)*4),o=n>>2;e.forEach(e=>{var r,t;h[o++]=(t=eS(r=T(e)+1),C(e,d,t,r),t)}),h[o]=0;try{var a=r(t,n);ec(a,!0)}catch(e){return em(e)}}(r),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;){var r;r=e.postRun.shift(),I.unshift(r)}Z(I)}()))}}if(e.___start_em_js=18128,e.___stop_em_js=20813,e.AsciiToString=function(e){for(var r="";;){var t=f[e++>>0];if(!t)return r;r+=String.fromCharCode(t)}},e.FS=eo,q=function e(){_||eP(),_||(q=e)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();var ex=!0;return e.noInitialRun&&(ex=!1),eP(),e.ready}),rN={};rN=B("6kBsm").getBundleURL("ejVIo")+B("n9Yfb").resolve("b8QSH");var rz=(i="file:///node_modules/emglken/build/tads-core.js",function(e={}){var r,t,n,o,a,s,u,l,c,d,f,m,h,p,v,w,g,_,e=void 0!==e?e:{};e.ready=new Promise(function(e,r){t=e,n=r});var y=Object.assign({},e),E=[],b="./this.program",k=(e,r)=>{throw r},S="";"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),i&&(S=i),S=0!==S.indexOf("blob:")?S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):"",o=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},a=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{if(200==n.status||0==n.status&&n.response){r(n.response);return}t()},n.onerror=t,n.send(null)};var D=e.print||console.log.bind(console),F=e.printErr||console.warn.bind(console);Object.assign(e,y),y=null,e.arguments&&(E=e.arguments),e.thisProgram&&(b=e.thisProgram),e.quit&&(k=e.quit),e.wasmBinary&&(u=e.wasmBinary);var M=e.noExitRuntime||!1;"object"!=typeof WebAssembly&&V("no native wasm support detected");var A=!1,P=new TextDecoder("utf8");function x(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;return P.decode(e.buffer?e.subarray(r,o):new Uint8Array(e.slice(r,o)))}function R(e,r){if(!e)return"";for(var t=e+r,n=e;!(n>=t)&&f[n];)++n;return P.decode(f.subarray(e,n))}function C(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i)),s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function T(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r}function N(){var r=l.buffer;e.HEAP8=d=new Int8Array(r),e.HEAP16=m=new Int16Array(r),e.HEAP32=h=new Int32Array(r),e.HEAPU8=f=new Uint8Array(r),e.HEAPU16=new Uint16Array(r),e.HEAPU32=p=new Uint32Array(r),e.HEAPF32=new Float32Array(r),e.HEAPF64=new Float64Array(r)}var z=[],B=[],j=[],O=[],I=[],L=!1,U=0,H=0,W=null,q=null;function Y(r){H++,e.monitorRunDependencies&&e.monitorRunDependencies(H)}function G(r){if(H--,e.monitorRunDependencies&&e.monitorRunDependencies(H),0==H&&(null!==W&&(clearInterval(W),W=null),q)){var t=q;q=null,t()}}function V(r){e.onAbort&&e.onAbort(r),F(r="Aborted("+r+")"),A=!0,c=1,r+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(r);throw n(t),t}function X(e){return e.startsWith("data:application/octet-stream;base64,")}function K(e){try{if(e==v&&u)return new Uint8Array(u);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}catch(e){V(e)}}function $(e,r,t){return(u||"function"!=typeof fetch?Promise.resolve().then(function(){return K(e)}):fetch(e,{credentials:"same-origin"}).then(function(r){if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(function(){return K(e)})).then(function(e){return WebAssembly.instantiate(e,r)}).then(function(e){return e}).then(t,function(e){F("failed to asynchronously prepare wasm: "+e),V(e)})}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Z(r){for(;r.length>0;)r.shift()(e)}e.locateFile?X(v="tads-core.wasm")||(r=v,v=e.locateFile?e.locateFile(r,S):S+r):v=new URL(rN).href;var Q={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=Q.isAbs(e),t="/"===e.substr(-1);return(e=Q.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=Q.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=Q.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return -1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments);return Q.normalize(e.join("/"))},join2:(e,r)=>Q.normalize(e+"/"+r)},ee={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:eo.cwd();if("string"!=typeof n)throw TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=Q.isAbs(n)}return e=Q.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"),(r?"/":"")+e||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=ee.resolve(e).substr(1),r=ee.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t:T(e)+1),o=C(e,n,0,n.length);return r&&(n.length=o),n}var et={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){et.ttys[e]={input:[],output:[],ops:r},eo.registerDevice(e,et.stream_ops)},stream_ops:{open:function(e){var r=et.ttys[e.node.rdev];if(!r)throw new eo.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new eo.ErrnoError(60);for(var a,i=0,s=0;s0&&(D(x(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(F(x(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(F(x(e.output,0)),e.output=[])}}},en={ops_table:null,mount:function(e){return en.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(eo.isBlkdev(t)||eo.isFIFO(t))throw new eo.ErrnoError(63);en.ops_table||(en.ops_table={dir:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr,lookup:en.node_ops.lookup,mknod:en.node_ops.mknod,rename:en.node_ops.rename,unlink:en.node_ops.unlink,rmdir:en.node_ops.rmdir,readdir:en.node_ops.readdir,symlink:en.node_ops.symlink},stream:{llseek:en.stream_ops.llseek}},file:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr},stream:{llseek:en.stream_ops.llseek,read:en.stream_ops.read,write:en.stream_ops.write,allocate:en.stream_ops.allocate,mmap:en.stream_ops.mmap,msync:en.stream_ops.msync}},link:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr,readlink:en.node_ops.readlink},stream:{}},chrdev:{node:{getattr:en.node_ops.getattr,setattr:en.node_ops.setattr},stream:eo.chrdev_stream_ops}});var o=eo.createNode(e,r,t,n);return eo.isDir(o.mode)?(o.node_ops=en.ops_table.dir.node,o.stream_ops=en.ops_table.dir.stream,o.contents={}):eo.isFile(o.mode)?(o.node_ops=en.ops_table.file.node,o.stream_ops=en.ops_table.file.stream,o.usedBytes=0,o.contents=null):eo.isLink(o.mode)?(o.node_ops=en.ops_table.link.node,o.stream_ops=en.ops_table.link.stream):eo.isChrdev(o.mode)&&(o.node_ops=en.ops_table.chrdev.node,o.stream_ops=en.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r){if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}}},node_ops:{getattr:function(e){var r={};return r.dev=eo.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,eo.isDir(e.mode)?r.size=4096:eo.isFile(e.mode)?r.size=e.usedBytes:eo.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&en.resizeFileStorage(e,r.size)},lookup:function(e,r){throw eo.genericErrors[44]},mknod:function(e,r,t,n){return en.createNode(e,r,t,n)},rename:function(e,r,t){if(eo.isDir(e.mode)){var n;try{n=eo.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new eo.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=eo.lookupNode(e,r);for(var n in t.contents)throw new eo.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=en.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!eo.isLink(e.mode))throw new eo.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||t+r{if(!(e=ee.resolve(e)))return{path:"",node:null};if((r=Object.assign({follow_mount:!0,recurse_count:0},r)).recurse_count>8)throw new eo.ErrnoError(32);for(var t=e.split("/").filter(e=>!!e),n=eo.root,o="/",a=0;a40)throw new eo.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var r;;){if(eo.isRoot(e)){var t=e.mount.mountpoint;if(!r)return t;return"/"!==t[t.length-1]?t+"/"+r:t+r}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%eo.nameTable.length},hashAddNode:e=>{var r=eo.hashName(e.parent.id,e.name);e.name_next=eo.nameTable[r],eo.nameTable[r]=e},hashRemoveNode:e=>{var r=eo.hashName(e.parent.id,e.name);if(eo.nameTable[r]===e)eo.nameTable[r]=e.name_next;else for(var t=eo.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=eo.mayLookup(e);if(t)throw new eo.ErrnoError(t,e);for(var n=eo.hashName(e.id,r),o=eo.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return eo.lookup(e,r)},createNode:(e,r,t,n)=>{var o=new eo.FSNode(e,r,t,n);return eo.hashAddNode(o),o},destroyNode:e=>{eo.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>(61440&e)==32768,isDir:e=>(61440&e)==16384,isLink:e=>(61440&e)==40960,isChrdev:e=>(61440&e)==8192,isBlkdev:e=>(61440&e)==24576,isFIFO:e=>(61440&e)==4096,isSocket:e=>(49152&e)==49152,flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=eo.flagModes[e];if(void 0===r)throw Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>eo.ignorePermissions?0:r.includes("r")&&!(292&e.mode)||r.includes("w")&&!(146&e.mode)||r.includes("x")&&!(73&e.mode)?2:0,mayLookup:e=>eo.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,r)=>{try{return eo.lookupNode(e,r),20}catch(e){}return eo.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{try{n=eo.lookupNode(e,r)}catch(e){return e.errno}var n,o=eo.nodePermissions(e,"wx");if(o)return o;if(t){if(!eo.isDir(n.mode))return 54;if(eo.isRoot(n)||eo.getPath(n)===eo.cwd())return 10}else if(eo.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?eo.isLink(e.mode)?32:eo.isDir(e.mode)&&("r"!==eo.flagsToPermissionString(r)||512&r)?31:eo.nodePermissions(e,eo.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,r=eo.MAX_OPEN_FDS)=>{for(var t=e;t<=r;t++)if(!eo.streams[t])return t;throw new eo.ErrnoError(33)},getStream:e=>eo.streams[e],createStream:(e,r,t)=>{eo.FSStream||(eo.FSStream=function(){this.shared={}},eo.FSStream.prototype={},Object.defineProperties(eo.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return(2097155&this.flags)!=1}},isWrite:{get:function(){return(2097155&this.flags)!=0}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new eo.FSStream,e);var n=eo.nextfd(r,t);return e.fd=n,eo.streams[n]=e,e},closeStream:e=>{eo.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=eo.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new eo.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{eo.devices[e]={stream_ops:r}},getDevice:e=>eo.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),eo.syncFSRequests++,eo.syncFSRequests>1&&F("warning: "+eo.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=eo.getMounts(eo.root.mount),n=0;function o(e){return eo.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach(r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)})},mount:(e,r,t)=>{var n,o="/"===t,a=!t;if(o&&eo.root)throw new eo.ErrnoError(10);if(!o&&!a){var i=eo.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,eo.isMountpoint(n))throw new eo.ErrnoError(10);if(!eo.isDir(n.mode))throw new eo.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?eo.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:e=>{var r=eo.lookupPath(e,{follow_mount:!1});if(!eo.isMountpoint(r.node))throw new eo.ErrnoError(28);var t=r.node,n=t.mounted,o=eo.getMounts(n);Object.keys(eo.nameTable).forEach(e=>{for(var r=eo.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&eo.destroyNode(r),r=t}}),t.mounted=null;var a=t.mount.mounts.indexOf(n);t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=eo.lookupPath(e,{parent:!0}).node,o=Q.basename(e);if(!o||"."===o||".."===o)throw new eo.ErrnoError(28);var a=eo.mayCreate(n,o);if(a)throw new eo.ErrnoError(a);if(!n.node_ops.mknod)throw new eo.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=(void 0!==r?r:438)&4095|32768,eo.mknod(e,r,0)),mkdir:(e,r)=>(r=(void 0!==r?r:511)&1023|16384,eo.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,eo.mknod(e,r,t)),symlink:(e,r)=>{if(!ee.resolve(e))throw new eo.ErrnoError(44);var t=eo.lookupPath(r,{parent:!0}).node;if(!t)throw new eo.ErrnoError(44);var n=Q.basename(r),o=eo.mayCreate(t,n);if(o)throw new eo.ErrnoError(o);if(!t.node_ops.symlink)throw new eo.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o,a=Q.dirname(e),i=Q.dirname(r),s=Q.basename(e),u=Q.basename(r);if(t=eo.lookupPath(e,{parent:!0}).node,n=eo.lookupPath(r,{parent:!0}).node,!t||!n)throw new eo.ErrnoError(44);if(t.mount!==n.mount)throw new eo.ErrnoError(75);var l=eo.lookupNode(t,s),c=ee.relative(e,i);if("."!==c.charAt(0))throw new eo.ErrnoError(28);if("."!==(c=ee.relative(r,a)).charAt(0))throw new eo.ErrnoError(55);try{o=eo.lookupNode(n,u)}catch(e){}if(l!==o){var d=eo.isDir(l.mode),f=eo.mayDelete(t,s,d);if(f||(f=o?eo.mayDelete(n,u,d):eo.mayCreate(n,u)))throw new eo.ErrnoError(f);if(!t.node_ops.rename)throw new eo.ErrnoError(63);if(eo.isMountpoint(l)||o&&eo.isMountpoint(o))throw new eo.ErrnoError(10);if(n!==t&&(f=eo.nodePermissions(t,"w")))throw new eo.ErrnoError(f);eo.hashRemoveNode(l);try{t.node_ops.rename(l,n,u)}catch(e){throw e}finally{eo.hashAddNode(l)}}},rmdir:e=>{var r=eo.lookupPath(e,{parent:!0}).node,t=Q.basename(e),n=eo.lookupNode(r,t),o=eo.mayDelete(r,t,!0);if(o)throw new eo.ErrnoError(o);if(!r.node_ops.rmdir)throw new eo.ErrnoError(63);if(eo.isMountpoint(n))throw new eo.ErrnoError(10);r.node_ops.rmdir(r,t),eo.destroyNode(n)},readdir:e=>{var r=eo.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new eo.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=eo.lookupPath(e,{parent:!0}).node;if(!r)throw new eo.ErrnoError(44);var t=Q.basename(e),n=eo.lookupNode(r,t),o=eo.mayDelete(r,t,!1);if(o)throw new eo.ErrnoError(o);if(!r.node_ops.unlink)throw new eo.ErrnoError(63);if(eo.isMountpoint(n))throw new eo.ErrnoError(10);r.node_ops.unlink(r,t),eo.destroyNode(n)},readlink:e=>{var r=eo.lookupPath(e).node;if(!r)throw new eo.ErrnoError(44);if(!r.node_ops.readlink)throw new eo.ErrnoError(28);return ee.resolve(eo.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=eo.lookupPath(e,{follow:!r}).node;if(!t)throw new eo.ErrnoError(44);if(!t.node_ops.getattr)throw new eo.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>eo.stat(e,!0),chmod:(e,r,t)=>{var n;if(!(n="string"==typeof e?eo.lookupPath(e,{follow:!t}).node:e).node_ops.setattr)throw new eo.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{eo.chmod(e,r,!0)},fchmod:(e,r)=>{var t=eo.getStream(e);if(!t)throw new eo.ErrnoError(8);eo.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;if(!(o="string"==typeof e?eo.lookupPath(e,{follow:!n}).node:e).node_ops.setattr)throw new eo.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{eo.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=eo.getStream(e);if(!n)throw new eo.ErrnoError(8);eo.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new eo.ErrnoError(28);if("string"==typeof e){var t;t=eo.lookupPath(e,{follow:!0}).node}else t=e;if(!t.node_ops.setattr)throw new eo.ErrnoError(63);if(eo.isDir(t.mode))throw new eo.ErrnoError(31);if(!eo.isFile(t.mode))throw new eo.ErrnoError(28);var n=eo.nodePermissions(t,"w");if(n)throw new eo.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=eo.getStream(e);if(!t)throw new eo.ErrnoError(8);if((2097155&t.flags)==0)throw new eo.ErrnoError(28);eo.truncate(t.node,r)},utime:(e,r,t)=>{var n=eo.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(r,t,n)=>{if(""===r)throw new eo.ErrnoError(44);if(t="string"==typeof t?eo.modeStringToFlags(t):t,n=void 0===n?438:n,n=64&t?4095&n|32768:0,"object"==typeof r)o=r;else{r=Q.normalize(r);try{var o;o=eo.lookupPath(r,{follow:!(131072&t)}).node}catch(e){}}var a=!1;if(64&t){if(o){if(128&t)throw new eo.ErrnoError(20)}else o=eo.mknod(r,n,0),a=!0}if(!o)throw new eo.ErrnoError(44);if(eo.isChrdev(o.mode)&&(t&=-513),65536&t&&!eo.isDir(o.mode))throw new eo.ErrnoError(54);if(!a){var i=eo.mayOpen(o,t);if(i)throw new eo.ErrnoError(i)}512&t&&!a&&eo.truncate(o,0),t&=-131713;var s=eo.createStream({node:o,path:eo.getPath(o),flags:t,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),!e.logReadFiles||1&t||(eo.readFiles||(eo.readFiles={}),r in eo.readFiles||(eo.readFiles[r]=1)),s},close:e=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{eo.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new eo.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new eo.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new eo.ErrnoError(28);if(eo.isClosed(e)||(2097155&e.flags)==1)throw new eo.ErrnoError(8);if(eo.isDir(e.node.mode))throw new eo.ErrnoError(31);if(!e.stream_ops.read)throw new eo.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new eo.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new eo.ErrnoError(28);if(eo.isClosed(e)||(2097155&e.flags)==0)throw new eo.ErrnoError(8);if(eo.isDir(e.node.mode))throw new eo.ErrnoError(31);if(!e.stream_ops.write)throw new eo.ErrnoError(28);e.seekable&&1024&e.flags&&eo.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new eo.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(eo.isClosed(e))throw new eo.ErrnoError(8);if(r<0||t<=0)throw new eo.ErrnoError(28);if((2097155&e.flags)==0)throw new eo.ErrnoError(8);if(!eo.isFile(e.node.mode)&&!eo.isDir(e.node.mode))throw new eo.ErrnoError(43);if(!e.stream_ops.allocate)throw new eo.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o)=>{if((2&n)!=0&&(2&o)==0&&(2097155&e.flags)!=2||(2097155&e.flags)==1)throw new eo.ErrnoError(2);if(!e.stream_ops.mmap)throw new eo.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:(e,r,t,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new eo.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:(e,r={})=>{if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw Error('Invalid encoding type "'+r.encoding+'"');var t,n=eo.open(e,r.flags),o=eo.stat(e).size,a=new Uint8Array(o);return eo.read(n,a,0,o,0),"utf8"===r.encoding?t=x(a,0):"binary"===r.encoding&&(t=a),eo.close(n),t},writeFile:(e,r,t={})=>{t.flags=t.flags||577;var n=eo.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(T(r)+1),a=C(r,o,0,o.length);eo.write(n,o,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))eo.write(n,r,0,r.byteLength,void 0,t.canOwn);else throw Error("Unsupported data type");eo.close(n)},cwd:()=>eo.currentPath,chdir:e=>{var r=eo.lookupPath(e,{follow:!0});if(null===r.node)throw new eo.ErrnoError(44);if(!eo.isDir(r.node.mode))throw new eo.ErrnoError(54);var t=eo.nodePermissions(r.node,"x");if(t)throw new eo.ErrnoError(t);eo.currentPath=r.path},createDefaultDirectories:()=>{eo.mkdir("/tmp"),eo.mkdir("/home"),eo.mkdir("/home/web_user")},createDefaultDevices:()=>{eo.mkdir("/dev"),eo.registerDevice(eo.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),eo.mkdev("/dev/null",eo.makedev(1,3)),et.register(eo.makedev(5,0),et.default_tty_ops),et.register(eo.makedev(6,0),et.default_tty1_ops),eo.mkdev("/dev/tty",eo.makedev(5,0)),eo.mkdev("/dev/tty1",eo.makedev(6,0));var e=function(){if("object"!=typeof crypto||"function"!=typeof crypto.getRandomValues)return()=>V("randomDevice");var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}();eo.createDevice("/dev","random",e),eo.createDevice("/dev","urandom",e),eo.mkdir("/dev/shm"),eo.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{eo.mkdir("/proc");var e=eo.mkdir("/proc/self");eo.mkdir("/proc/self/fd"),eo.mount({mount:()=>{var r=eo.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=eo.getStream(+r);if(!t)throw new eo.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>t.path}};return n.parent=n,n}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{e.stdin?eo.createDevice("/dev","stdin",e.stdin):eo.symlink("/dev/tty","/dev/stdin"),e.stdout?eo.createDevice("/dev","stdout",null,e.stdout):eo.symlink("/dev/tty","/dev/stdout"),e.stderr?eo.createDevice("/dev","stderr",null,e.stderr):eo.symlink("/dev/tty1","/dev/stderr"),eo.open("/dev/stdin",0),eo.open("/dev/stdout",1),eo.open("/dev/stderr",1)},ensureErrnoError:()=>{eo.ErrnoError||(eo.ErrnoError=function(e,r){this.name="ErrnoError",this.node=r,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},eo.ErrnoError.prototype=Error(),eo.ErrnoError.prototype.constructor=eo.ErrnoError,[44].forEach(e=>{eo.genericErrors[e]=new eo.ErrnoError(e),eo.genericErrors[e].stack=""}))},staticInit:()=>{eo.ensureErrnoError(),eo.nameTable=Array(4096),eo.mount(en,{},"/"),eo.createDefaultDirectories(),eo.createDefaultDevices(),eo.createSpecialDirectories(),eo.filesystems={MEMFS:en}},init:(r,t,n)=>{eo.init.initialized=!0,eo.ensureErrnoError(),e.stdin=r||e.stdin,e.stdout=t||e.stdout,e.stderr=n||e.stderr,eo.createStandardStreams()},quit:()=>{eo.init.initialized=!1,ek(0);for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=eo.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{var t=eo.lookupPath(e,{follow:!r});e=t.path}catch(e){}var n={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var t=eo.lookupPath(e,{parent:!0});n.parentExists=!0,n.parentPath=t.path,n.parentObject=t.node,n.name=Q.basename(e),t=eo.lookupPath(e,{follow:!r}),n.exists=!0,n.path=t.path,n.object=t.node,n.name=t.node.name,n.isRoot="/"===t.path}catch(e){n.error=e.errno}return n},createPath:(e,r,t,n)=>{e="string"==typeof e?e:eo.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=Q.join2(e,a);try{eo.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=Q.join2("string"==typeof e?e:eo.getPath(e),r),i=eo.getMode(n,o);return eo.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:eo.getPath(e),i=r?Q.join2(e,r):e);var s=eo.getMode(n,o),u=eo.create(i,s);if(t){if("string"==typeof t){for(var l=Array(t.length),c=0,d=t.length;c{var o=Q.join2("string"==typeof e?e:eo.getPath(e),r),a=eo.getMode(!!t,!!n);eo.createDevice.major||(eo.createDevice.major=64);var i=eo.makedev(eo.createDevice.major++,0);return eo.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i,s=0,u=0;u{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(o)try{e.contents=er(o(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new eo.ErrnoError(29)}else throw Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1)&&!(e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e,r=new XMLHttpRequest;if(r.open("HEAD",t,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw Error("Couldn't load "+t+". Status: "+r.status);var n=Number(r.getResponseHeader("Content-length")),o=(e=r.getResponseHeader("Accept-Ranges"))&&"bytes"===e,a=(e=r.getResponseHeader("Content-Encoding"))&&"gzip"===e,i=1048576;o||(i=n);var s=(e,r)=>{if(e>r)throw Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):er(o.responseText||"",!0)},u=this;u.setDataGetter(e=>{var r=e*i,t=(e+1)*i-1;if(t=Math.min(t,n-1),void 0===u.chunks[e]&&(u.chunks[e]=s(r,t)),void 0===u.chunks[e])throw Error("doXHR failed!");return u.chunks[e]}),(a||!n)&&(i=n=1,i=n=this.getter(0).length,D("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){var i;throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"}var i={isDevice:!1,url:t},s=eo.createFile(e,r,i,n,o);i.contents?s.contents=i.contents:i.url&&(s.contents=null,s.url=i.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};function l(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var s=0;s{var r=s.stream_ops[e];u[e]=function(){return eo.forceLoadFile(s),r.apply(null,arguments)}}),u.read=(e,r,t,n,o)=>(eo.forceLoadFile(s),l(e,r,t,n,o)),u.mmap=(e,r,t,n,o)=>{eo.forceLoadFile(s);var a=void V();if(!a)throw new eo.ErrnoError(48);return l(e,d,a,r,t),{ptr:a,allocated:!0}},s.stream_ops=u,s},createPreloadedFile:(e,r,t,n,o,i,s,u,l,c)=>{var d,f,m=r?ee.resolve(Q.join2(e,r)):e,h="cp "+m;function p(t){function a(t){c&&c(),u||eo.createDataFile(e,r,t,n,o,l),i&&i(),G(h)}Browser.handledByPreloadPlugin(t,m,a,()=>{s&&s(),G(h)})||a(t)}Y(h),"string"==typeof t?(d=e=>p(e),f="al "+t,a(t,e=>{var r;r='Loading data file "'+t+'" failed (no arrayBuffer).',e||V(r),d(new Uint8Array(e)),f&&G(f)},e=>{if(s)s();else throw'Loading data file "'+t+'" failed.'}),f&&Y(f)):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r=()=>{},t=()=>{})=>{var n=eo.indexedDB();try{var o=n.open(eo.DB_NAME(),eo.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{D("creating db"),o.result.createObjectStore(eo.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([eo.DB_STORE_NAME],"readwrite"),a=n.objectStore(eo.DB_STORE_NAME),i=0,s=0,u=e.length;function l(){0==s?r():t()}e.forEach(e=>{var r=a.put(eo.analyzePath(e).object.contents,e);r.onsuccess=()=>{++i+s==u&&l()},r.onerror=()=>{i+ ++s==u&&l()}}),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r=()=>{},t=()=>{})=>{var n=eo.indexedDB();try{var o=n.open(eo.DB_NAME(),eo.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var a=n.transaction([eo.DB_STORE_NAME],"readonly")}catch(e){t(e);return}var i=a.objectStore(eo.DB_STORE_NAME),s=0,u=0,l=e.length;function c(){0==u?r():t()}e.forEach(e=>{var r=i.get(e);r.onsuccess=()=>{eo.analyzePath(e).exists&&eo.unlink(e),eo.createDataFile(Q.dirname(e),Q.basename(e),r.result,!0,!0,!0),++s+u==l&&c()},r.onerror=()=>{s+ ++u==l&&c()}}),a.onerror=t},o.onerror=t}},ea={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(Q.isAbs(r))return r;if(-100===e)n=eo.cwd();else{var n;n=ea.getStreamFromFD(e).path}if(0==r.length){if(!t)throw new eo.ErrnoError(44);return n}return Q.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&Q.normalize(r)!==Q.normalize(eo.getPath(e.node)))return -54;throw e}h[t>>2]=n.dev,h[t+8>>2]=n.ino,h[t+12>>2]=n.mode,p[t+16>>2]=n.nlink,h[t+20>>2]=n.uid,h[t+24>>2]=n.gid,h[t+28>>2]=n.rdev,g=[n.size>>>0,+Math.abs(w=n.size)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+40>>2]=g[0],h[t+44>>2]=g[1],h[t+48>>2]=4096,h[t+52>>2]=n.blocks;var o=n.atime.getTime(),a=n.mtime.getTime(),i=n.ctime.getTime();return g=[Math.floor(o/1e3)>>>0,+Math.abs(w=Math.floor(o/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+56>>2]=g[0],h[t+60>>2]=g[1],p[t+64>>2]=o%1e3*1e3,g=[Math.floor(a/1e3)>>>0,+Math.abs(w=Math.floor(a/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+72>>2]=g[0],h[t+76>>2]=g[1],p[t+80>>2]=a%1e3*1e3,g=[Math.floor(i/1e3)>>>0,+Math.abs(w=Math.floor(i/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+88>>2]=g[0],h[t+92>>2]=g[1],p[t+96>>2]=i%1e3*1e3,g=[n.ino>>>0,+Math.abs(w=n.ino)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+104>>2]=g[0],h[t+108>>2]=g[1],0},doMsync:function(e,r,t,n,o){if(!eo.isFile(r.node.mode))throw new eo.ErrnoError(43);if(2&n)return 0;var a=f.slice(e,e+t);eo.msync(r,a,o,t,n)},varargs:void 0,get:function(){return ea.varargs+=4,h[ea.varargs-4>>2]},getStr:function(e){return R(e)},getStreamFromFD:function(e){var r=eo.getStream(e);if(!r)throw new eo.ErrnoError(8);return r}};function ei(e){return p[e>>2]+4294967296*h[e+4>>2]}function es(e){return e%4==0&&(e%100!=0||e%400==0)}var eu=[0,31,60,91,121,152,182,213,244,274,305,335],el=[0,31,59,90,120,151,181,212,243,273,304,334];function ec(e){var r=T(e)+1,t=eE(r);return t&&C(e,d,t,r),t}var ed={};function ef(){if(!ef.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:b||"./this.program"};for(var r in ed)void 0===ed[r]?delete e[r]:e[r]=ed[r];var t=[];for(var r in e)t.push(r+"="+e[r]);ef.strings=t}return ef.strings}function em(r,t){c=r,M||U>0||(eF(),Z(O),eo.quit(),et.shutdown(),L=!0),c=r,M||U>0||(e.onExit&&e.onExit(r),A=!0),k(r,new J(r))}var eh=[31,29,31,30,31,30,31,31,30,31,30,31],ep=[31,28,31,30,31,30,31,31,30,31,30,31];function ev(e){if(e instanceof J||"unwind"==e)return c;k(1,e)}function ew(e){try{return e()}catch(e){V(e)}}var eg={instrumentWasmImports:function(e){var r=["invoke_*","emscripten_sleep","emscripten_wget","emscripten_wget_data","emscripten_idb_load","emscripten_idb_store","emscripten_idb_delete","emscripten_idb_exists","emscripten_idb_load_blob","emscripten_idb_store_blob","SDL_Delay","emscripten_scan_registers","emscripten_lazy_load_code","emscripten_fiber_swap","__load_secondary_module","fd_sync","__wasi_fd_sync","_emval_await","_dlopen_js","__asyncjs__*"];for(var t in e)!function(t){var n=e[t];n.sig,"function"==typeof n&&(r.indexOf(t)>=0||t.startsWith("__asyncjs__"))}(t)},instrumentWasmExports:function(e){var r={};for(var t in e)!function(t){var n=e[t];"function"==typeof n?r[t]=function(){eg.exportCallStack.push(t);try{return n.apply(null,arguments)}finally{A||(eg.exportCallStack.pop()===t||V(void 0),eg.maybeStopUnwind())}}:r[t]=n}(t);return r},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:8192,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(e){var r=eg.callStackNameToId[e];return void 0===r&&(r=eg.callStackId++,eg.callStackNameToId[e]=r,eg.callStackIdToName[r]=e),r},maybeStopUnwind:function(){eg.currData&&eg.state===eg.State.Unwinding&&0===eg.exportCallStack.length&&(eg.state=eg.State.Normal,U+=1,ew(e3),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:function(){return new Promise((e,r)=>{eg.asyncPromiseHandlers={resolve:e,reject:r}})},allocateData:function(){var e=eE(12+eg.StackSize);return eg.setDataHeader(e,e+12,eg.StackSize),eg.setDataRewindFunc(e),e},setDataHeader:function(e,r,t){h[e>>2]=r,h[e+4>>2]=r+t},setDataRewindFunc:function(e){var r=eg.exportCallStack[0],t=eg.getCallStackId(r);h[e+8>>2]=t},getDataRewindFunc:function(r){var t=h[r+8>>2],n=eg.callStackIdToName[t];return e.asm[n]},doRewind:function(e){var r=eg.getDataRewindFunc(e);return U-=1,r()},handleSleep:function(e){if(!A){if(eg.state===eg.State.Normal){var r=!1,t=!1;e((e=0)=>{if(!A&&(eg.handleSleepReturnValue=e,r=!0,t)){eg.state=eg.State.Rewinding,ew(()=>e9(eg.currData)),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var n,o=!1;try{n=eg.doRewind(eg.currData)}catch(e){n=e,o=!0}var a=!1;if(!eg.currData){var i=eg.asyncPromiseHandlers;i&&(eg.asyncPromiseHandlers=null,(o?i.reject:i.resolve)(n),a=!0)}if(o&&!a)throw n}}),t=!0,r||(eg.state=eg.State.Unwinding,eg.currData=eg.allocateData(),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause(),ew(()=>e6(eg.currData)))}else eg.state===eg.State.Rewinding?(eg.state=eg.State.Normal,ew(e8),eb(eg.currData),eg.currData=null,eg.sleepCallbacks.forEach(e=>(function(e){if(!L&&!A)try{e(),function(){if(!(M||U>0))try{em(c)}catch(e){ev(e)}}()}catch(e){ev(e)}})(e))):V("invalid state: "+eg.state);return eg.handleSleepReturnValue}},handleAsync:function(e){return eg.handleSleep(r=>{e().then(r)})}},e_=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=eo.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n};Object.defineProperties(e_.prototype,{read:{get:function(){return(365&this.mode)==365},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return(146&this.mode)==146},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return eo.isDir(this.mode)}},isDevice:{get:function(){return eo.isChrdev(this.mode)}}}),eo.FSNode=e_,eo.staticInit();var ey={O:function(r,t){return eg.handleAsync(async()=>{e.emglken_stdin_buffers.length||await new Promise(r=>{e.emglken_stdin_ready=r});let n=e.emglken_stdin_buffers.shift(),o=Math.min(n.length,t);return o==n.length?f.set(n,r):(f.set(n.subarray(0,o),r),e.emglken_stdin_buffers.unshift(n.subarray(o))),o})},ga:function(e){try{var r=ea.getStreamFromFD(e);return eo.createStream(r,0).fd}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},fa:function(e,r,t,n){try{if(r=ea.getStr(r),r=ea.calculateAt(e,r),-8&t)return -28;var o=eo.lookupPath(r,{follow:!0}).node;if(!o)return -44;var a="";if(4&t&&(a+="r"),2&t&&(a+="w"),1&t&&(a+="x"),a&&eo.nodePermissions(o,a))return -2;return 0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},G:function(e,r,t){ea.varargs=t;try{var n=ea.getStreamFromFD(e);switch(r){case 0:var o=ea.get();if(o<0)return -28;return eo.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=ea.get();return n.flags|=o,0;case 5:var o=ea.get();return m[o+0>>1]=2,0;case 16:case 8:default:return -28;case 9:return h[eD()>>2]=28,-1}}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},ea:function(e,r){try{if(0===r)return -28;var t=eo.cwd(),n=T(t)+1;if(r>>0,(w=u,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[r+o>>2]=g[0],h[r+o+4>>2]=g[1],g=[(i+1)*280>>>0,(w=(i+1)*280,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[r+o+8>>2]=g[0],h[r+o+12>>2]=g[1],m[r+o+16>>1]=280,d[r+o+18>>0]=l,s=r+o+19,C(c,f,s,256),o+=280,i+=1}return eo.llseek(n,280*i,0),o}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},ca:function(e,r,t){ea.varargs=t;try{var n=ea.getStreamFromFD(e);switch(r){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:if(!n.tty)return -59;return 0;case 21519:if(!n.tty)return -59;var o=ea.get();return h[o>>2]=0,0;case 21520:if(!n.tty)return -59;return -28;case 21531:var o=ea.get();return eo.ioctl(n,r,o);default:return -28}}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},ba:function(e,r){try{return e=ea.getStr(e),ea.doStat(eo.lstat,e,r)}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},aa:function(e,r,t){try{return r=ea.getStr(r),r=ea.calculateAt(e,r),r=Q.normalize(r),"/"===r[r.length-1]&&(r=r.substr(0,r.length-1)),eo.mkdir(r,t,0),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},$:function(e,r,t,n){try{r=ea.getStr(r);var o=256&n,a=4096&n;return n&=-6401,r=ea.calculateAt(e,r,a),ea.doStat(o?eo.lstat:eo.stat,r,t)}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},F:function(e,r,t,n){ea.varargs=n;try{r=ea.getStr(r),r=ea.calculateAt(e,r);var o=n?ea.get():0;return eo.open(r,t,o).fd}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},_:function(e,r,t,n){try{if(r=ea.getStr(r),r=ea.calculateAt(e,r),n<=0)return -28;var o=eo.readlink(r),a=Math.min(n,T(o)),i=d[t+a];return C(o,f,t,n+1),d[t+a]=i,a}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},Z:function(e,r,t,n){try{return r=ea.getStr(r),n=ea.getStr(n),r=ea.calculateAt(e,r),n=ea.calculateAt(t,n),eo.rename(r,n),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},E:function(e){try{return e=ea.getStr(e),eo.rmdir(e),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},Y:function(e,r){try{return e=ea.getStr(e),ea.doStat(eo.stat,e,r)}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},X:function(e,r,t){try{return r=ea.getStr(r),r=ea.calculateAt(e,r),0===t?eo.unlink(r):512===t?eo.rmdir(r):V("Invalid flags passed to unlinkat"),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return-e.errno}},T:function(){return!0},S:function(){throw 1/0},R:function(e,r){var t=new Date(1e3*ei(e));h[r>>2]=t.getUTCSeconds(),h[r+4>>2]=t.getUTCMinutes(),h[r+8>>2]=t.getUTCHours(),h[r+12>>2]=t.getUTCDate(),h[r+16>>2]=t.getUTCMonth(),h[r+20>>2]=t.getUTCFullYear()-1900,h[r+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-n)/864e5|0;h[r+28>>2]=o},Q:function(e,r){var t=new Date(1e3*ei(e));h[r>>2]=t.getSeconds(),h[r+4>>2]=t.getMinutes(),h[r+8>>2]=t.getHours(),h[r+12>>2]=t.getDate(),h[r+16>>2]=t.getMonth(),h[r+20>>2]=t.getFullYear()-1900,h[r+24>>2]=t.getDay();var n=0|(es(t.getFullYear())?eu:el)[t.getMonth()]+t.getDate()-1;h[r+28>>2]=n,h[r+36>>2]=-(60*t.getTimezoneOffset());var o=new Date(t.getFullYear(),0,1),a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=0|(a!=i&&t.getTimezoneOffset()==Math.min(i,a));h[r+32>>2]=s},P:function(e,r,t){var n=new Date().getFullYear(),o=new Date(n,0,1),a=new Date(n,6,1),i=o.getTimezoneOffset(),s=a.getTimezoneOffset();function u(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}p[e>>2]=60*Math.max(i,s),h[r>>2]=Number(i!=s);var l=u(o),c=u(a),d=ec(l),f=ec(c);s>2]=d,p[t+4>>2]=f):(p[t>>2]=f,p[t+4>>2]=d)},C:function(){V("")},B:function(){return Date.now()},A:()=>performance.now(),N:function(e,r,t){f.copyWithin(e,r,r+t)},M:function(e){var r=f.length;if((e>>>=0)>2147483648)return!1;let t=(e,r)=>e+(r-e%r)%r;for(var n=1;n<=4;n*=2){var o=r*(1+.2/n);if(o=Math.min(o,e+100663296),function(e){var r=l.buffer;try{return l.grow(e-r.byteLength+65535>>>16),N(),1}catch(e){}}(Math.min(2147483648,t(Math.max(e,o),65536))))return!0}return!1},W:function(e,r){var t=0;return ef().forEach(function(n,o){var a=r+t;p[e+4*o>>2]=a,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);d[r>>0]=0}(n,a),t+=n.length+1}),0},V:function(e,r){var t=ef();p[e>>2]=t.length;var n=0;return t.forEach(function(e){n+=e.length+1}),p[r>>2]=n,0},y:em,w:function(e){try{var r=ea.getStreamFromFD(e);return eo.close(r),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},U:function(e,r,t,n){try{var o=ea.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=eo.read(e,d,i,s,n);if(u<0)return -1;if(o+=u,u>2]=a,0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},I:function(e,r,t,n,o){try{var a=t+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*t:NaN;if(isNaN(a))return 61;var i=ea.getStreamFromFD(e);return eo.llseek(i,a,n),g=[i.position>>>0,(w=i.position,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[o>>2]=g[0],h[o+4>>2]=g[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},D:function(e,r,t,n){try{var o=ea.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=eo.write(e,d,i,s,n);if(u<0)return -1;o+=u,void 0!==n&&(n+=u)}return o}(o,r,t);return p[n>>2]=a,0}catch(e){if(void 0===eo||"ErrnoError"!==e.name)throw e;return e.errno}},L:function(e){var r=eA();try{return e1(e)}catch(e){if(eP(r),e!==e+0)throw e;eM(1,0)}},b:function(e,r){var t=eA();try{return eC(e,r)}catch(e){if(eP(t),e!==e+0)throw e;eM(1,0)}},f:function(e,r,t){var n=eA();try{return eN(e,r,t)}catch(e){if(eP(n),e!==e+0)throw e;eM(1,0)}},e:function(e,r,t,n){var o=eA();try{return eH(e,r,t,n)}catch(e){if(eP(o),e!==e+0)throw e;eM(1,0)}},c:function(e,r,t,n,o){var a=eA();try{return eR(e,r,t,n,o)}catch(e){if(eP(a),e!==e+0)throw e;eM(1,0)}},j:function(e,r,t,n,o,a){var i=eA();try{return eI(e,r,t,n,o,a)}catch(e){if(eP(i),e!==e+0)throw e;eM(1,0)}},l:function(e,r,t,n,o,a,i){var s=eA();try{return eY(e,r,t,n,o,a,i)}catch(e){if(eP(s),e!==e+0)throw e;eM(1,0)}},m:function(e,r,t,n,o,a,i,s){var u=eA();try{return eX(e,r,t,n,o,a,i,s)}catch(e){if(eP(u),e!==e+0)throw e;eM(1,0)}},s:function(e,r,t,n,o,a,i,s,u){var l=eA();try{return eU(e,r,t,n,o,a,i,s,u)}catch(e){if(eP(l),e!==e+0)throw e;eM(1,0)}},t:function(e,r,t,n,o,a,i,s,u,l){var c=eA();try{return eV(e,r,t,n,o,a,i,s,u,l)}catch(e){if(eP(c),e!==e+0)throw e;eM(1,0)}},p:function(e,r,t,n,o,a,i,s,u,l,c){var d=eA();try{return eK(e,r,t,n,o,a,i,s,u,l,c)}catch(e){if(eP(d),e!==e+0)throw e;eM(1,0)}},x:function(e,r,t,n,o,a,i,s,u,l,c,d){var f=eA();try{return e2(e,r,t,n,o,a,i,s,u,l,c,d)}catch(e){if(eP(f),e!==e+0)throw e;eM(1,0)}},q:function(e,r,t,n,o,a,i,s,u,l,c,d,f,m){var h=eA();try{return e$(e,r,t,n,o,a,i,s,u,l,c,d,f,m)}catch(e){if(eP(h),e!==e+0)throw e;eM(1,0)}},z:function(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p){var v=eA();try{return e4(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p)}catch(e){if(eP(v),e!==e+0)throw e;eM(1,0)}},v:function(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p,v,w){var g=eA();try{return eZ(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p,v,w)}catch(e){if(eP(g),e!==e+0)throw e;eM(1,0)}},i:function(e){var r=eA();try{eJ(e)}catch(e){if(eP(r),e!==e+0)throw e;eM(1,0)}},h:function(e,r){var t=eA();try{eT(e,r)}catch(e){if(eP(t),e!==e+0)throw e;eM(1,0)}},d:function(e,r,t){var n=eA();try{ej(e,r,t)}catch(e){if(eP(n),e!==e+0)throw e;eM(1,0)}},a:function(e,r,t,n){var o=eA();try{ez(e,r,t,n)}catch(e){if(eP(o),e!==e+0)throw e;eM(1,0)}},g:function(e,r,t,n,o){var a=eA();try{eq(e,r,t,n,o)}catch(e){if(eP(a),e!==e+0)throw e;eM(1,0)}},o:function(e,r,t,n,o,a){var i=eA();try{eO(e,r,t,n,o,a)}catch(e){if(eP(i),e!==e+0)throw e;eM(1,0)}},n:function(e,r,t,n,o,a,i){var s=eA();try{eL(e,r,t,n,o,a,i)}catch(e){if(eP(s),e!==e+0)throw e;eM(1,0)}},K:function(e,r,t,n,o,a,i,s){var u=eA();try{eQ(e,r,t,n,o,a,i,s)}catch(e){if(eP(u),e!==e+0)throw e;eM(1,0)}},r:function(e,r,t,n,o,a,i,s,u){var l=eA();try{eB(e,r,t,n,o,a,i,s,u)}catch(e){if(eP(l),e!==e+0)throw e;eM(1,0)}},k:function(e,r,t,n,o,a,i,s,u,l){var c=eA();try{eW(e,r,t,n,o,a,i,s,u,l)}catch(e){if(eP(c),e!==e+0)throw e;eM(1,0)}},u:function(e,r,t,n,o,a,i,s,u,l,c,d){var f=eA();try{eG(e,r,t,n,o,a,i,s,u,l,c,d)}catch(e){if(eP(f),e!==e+0)throw e;eM(1,0)}},J:function(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p){var v=eA();try{e0(e,r,t,n,o,a,i,s,u,l,c,d,f,m,h,p)}catch(e){if(eP(v),e!==e+0)throw e;eM(1,0)}},H:function(e,r,t,n){var o=h[n+40>>2],a={tm_sec:h[n>>2],tm_min:h[n+4>>2],tm_hour:h[n+8>>2],tm_mday:h[n+12>>2],tm_mon:h[n+16>>2],tm_year:h[n+20>>2],tm_wday:h[n+24>>2],tm_yday:h[n+28>>2],tm_isdst:h[n+32>>2],tm_gmtoff:h[n+36>>2],tm_zone:o?R(o):""},i=R(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)i=i.replace(RegExp(u,"g"),s[u]);var l=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"];function f(e,r,t){for(var n="number"==typeof e?e.toString():e||"";n.length0?1:0}return 0===(t=n(e.getFullYear()-r.getFullYear()))&&0===(t=n(e.getMonth()-r.getMonth()))&&(t=n(e.getDate()-r.getDate())),t}function v(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function w(e){var r=function(e,r){for(var t=new Date(e.getTime());r>0;){var n=es(t.getFullYear()),o=t.getMonth(),a=(n?eh:ep)[o];if(r>a-t.getDate())r-=a-t.getDate()+1,t.setDate(1),o<11?t.setMonth(o+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else{t.setDate(t.getDate()+r);break}}return t}(new Date(e.tm_year+1900,0,1),e.tm_yday),t=new Date(r.getFullYear(),0,4),n=new Date(r.getFullYear()+1,0,4),o=v(t),a=v(n);return 0>=p(o,r)?0>=p(a,r)?r.getFullYear()+1:r.getFullYear():r.getFullYear()-1}var g={"%a":function(e){return l[e.tm_wday].substring(0,3)},"%A":function(e){return l[e.tm_wday]},"%b":function(e){return c[e.tm_mon].substring(0,3)},"%B":function(e){return c[e.tm_mon]},"%C":function(e){return m((e.tm_year+1900)/100|0,2)},"%d":function(e){return m(e.tm_mday,2)},"%e":function(e){return f(e.tm_mday,2," ")},"%g":function(e){return w(e).toString().substring(2)},"%G":function(e){return w(e)},"%H":function(e){return m(e.tm_hour,2)},"%I":function(e){var r=e.tm_hour;return 0==r?r=12:r>12&&(r-=12),m(r,2)},"%j":function(e){return m(e.tm_mday+function(e,r){for(var t=0,n=0;n<=r;t+=e[n++]);return t}(es(e.tm_year+1900)?eh:ep,e.tm_mon-1),3)},"%m":function(e){return m(e.tm_mon+1,2)},"%M":function(e){return m(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return m(e.tm_sec,2)},"%t":function(){return" "},"%u":function(e){return e.tm_wday||7},"%U":function(e){return m(Math.floor((e.tm_yday+7-e.tm_wday)/7),2)},"%V":function(e){var r=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&r++,r){if(53==r){var t=(e.tm_wday+371-e.tm_yday)%7;4==t||3==t&&es(e.tm_year)||(r=1)}}else{r=52;var n=(e.tm_wday+7-e.tm_yday-1)%7;(4==n||5==n&&es(e.tm_year%400-1))&&r++}return m(r,2)},"%w":function(e){return e.tm_wday},"%W":function(e){return m(Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var r=e.tm_gmtoff;return(r>=0?"+":"-")+String("0000"+(r=(r=Math.abs(r)/60)/60*100+r%60)).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var u in i=i.replace(/%%/g,"\x00\x00"),g)i.includes(u)&&(i=i.replace(RegExp(u,"g"),g[u](a)));var _=er(i=i.replace(/\0\0/g,"%"),!1);return _.length>r?0:(d.set(_,e),_.length-1)}};!function(){var r,t,o,a={a:ey};function i(r,t){var n,o=r.exports;return o=eg.instrumentWasmExports(o),e.asm=o,l=e.asm.ha,N(),e.asm.qa,n=e.asm.ia,B.unshift(n),G("wasm-instantiate"),o}if(Y("wasm-instantiate"),e.instantiateWasm)try{return e.instantiateWasm(a,i)}catch(e){F("Module.instantiateWasm callback failed with error: "+e),n(e)}(r=u,t=v,o=function(e){i(e.instance)},r||"function"!=typeof WebAssembly.instantiateStreaming||X(t)||"function"!=typeof fetch?$(t,a,o):fetch(t,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,a).then(o,function(e){return F("wasm streaming compile failed: "+e),F("falling back to ArrayBuffer instantiation"),$(t,a,o)})})).catch(n)}();var eE=function(){return(eE=e.asm.ja).apply(null,arguments)},eb=function(){return(eb=e.asm.ka).apply(null,arguments)},ek=e._fflush=function(){return(ek=e._fflush=e.asm.la).apply(null,arguments)},eS=e._main=function(){return(eS=e._main=e.asm.ma).apply(null,arguments)},eD=(e._gidispatch_get_game_id=function(){return(e._gidispatch_get_game_id=e.asm.na).apply(null,arguments)},function(){return(eD=e.asm.oa).apply(null,arguments)}),eF=function(){return(eF=e.asm.pa).apply(null,arguments)},eM=function(){return(eM=e.asm.ra).apply(null,arguments)},eA=function(){return(eA=e.asm.sa).apply(null,arguments)},eP=function(){return(eP=e.asm.ta).apply(null,arguments)},ex=function(){return(ex=e.asm.ua).apply(null,arguments)},eR=e.dynCall_iiiii=function(){return(eR=e.dynCall_iiiii=e.asm.va).apply(null,arguments)},eC=e.dynCall_ii=function(){return(eC=e.dynCall_ii=e.asm.wa).apply(null,arguments)},eT=e.dynCall_vi=function(){return(eT=e.dynCall_vi=e.asm.xa).apply(null,arguments)},eN=e.dynCall_iii=function(){return(eN=e.dynCall_iii=e.asm.ya).apply(null,arguments)},ez=e.dynCall_viii=function(){return(ez=e.dynCall_viii=e.asm.za).apply(null,arguments)},eB=e.dynCall_viiiiiiii=function(){return(eB=e.dynCall_viiiiiiii=e.asm.Aa).apply(null,arguments)},ej=e.dynCall_vii=function(){return(ej=e.dynCall_vii=e.asm.Ba).apply(null,arguments)},eO=e.dynCall_viiiii=function(){return(eO=e.dynCall_viiiii=e.asm.Ca).apply(null,arguments)},eI=e.dynCall_iiiiii=function(){return(eI=e.dynCall_iiiiii=e.asm.Da).apply(null,arguments)},eL=e.dynCall_viiiiii=function(){return(eL=e.dynCall_viiiiii=e.asm.Ea).apply(null,arguments)},eU=e.dynCall_iiiiiiiii=function(){return(eU=e.dynCall_iiiiiiiii=e.asm.Fa).apply(null,arguments)},eH=e.dynCall_iiii=function(){return(eH=e.dynCall_iiii=e.asm.Ga).apply(null,arguments)},eW=e.dynCall_viiiiiiiii=function(){return(eW=e.dynCall_viiiiiiiii=e.asm.Ha).apply(null,arguments)},eq=e.dynCall_viiii=function(){return(eq=e.dynCall_viiii=e.asm.Ia).apply(null,arguments)},eY=e.dynCall_iiiiiii=function(){return(eY=e.dynCall_iiiiiii=e.asm.Ja).apply(null,arguments)},eG=e.dynCall_viiiiiiiiiii=function(){return(eG=e.dynCall_viiiiiiiiiii=e.asm.Ka).apply(null,arguments)},eV=e.dynCall_iiiiiiiiii=function(){return(eV=e.dynCall_iiiiiiiiii=e.asm.La).apply(null,arguments)},eX=e.dynCall_iiiiiiii=function(){return(eX=e.dynCall_iiiiiiii=e.asm.Ma).apply(null,arguments)},eK=e.dynCall_iiiiiiiiiii=function(){return(eK=e.dynCall_iiiiiiiiiii=e.asm.Na).apply(null,arguments)},e$=e.dynCall_iiiiiiiiiiiiii=function(){return(e$=e.dynCall_iiiiiiiiiiiiii=e.asm.Oa).apply(null,arguments)},eJ=e.dynCall_v=function(){return(eJ=e.dynCall_v=e.asm.Pa).apply(null,arguments)},eZ=e.dynCall_iiiiiiiiiiiiiiiiii=function(){return(eZ=e.dynCall_iiiiiiiiiiiiiiiiii=e.asm.Qa).apply(null,arguments)},eQ=e.dynCall_viiiiiii=function(){return(eQ=e.dynCall_viiiiiii=e.asm.Ra).apply(null,arguments)},e0=e.dynCall_viiiiiiiiiiiiiii=function(){return(e0=e.dynCall_viiiiiiiiiiiiiii=e.asm.Sa).apply(null,arguments)},e1=e.dynCall_i=function(){return(e1=e.dynCall_i=e.asm.Ta).apply(null,arguments)},e2=e.dynCall_iiiiiiiiiiii=function(){return(e2=e.dynCall_iiiiiiiiiiii=e.asm.Ua).apply(null,arguments)},e4=e.dynCall_iiiiiiiiiiiiiiii=function(){return(e4=e.dynCall_iiiiiiiiiiiiiiii=e.asm.Va).apply(null,arguments)},e6=function(){return(e6=e.asm.Wa).apply(null,arguments)},e3=function(){return(e3=e.asm.Xa).apply(null,arguments)},e9=function(){return(e9=e.asm.Ya).apply(null,arguments)},e8=function(){return(e8=e.asm.Za).apply(null,arguments)};function e5(r=E){!(H>0)&&(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;){var r;r=e.preRun.shift(),z.unshift(r)}Z(z)}(),H>0||(e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),n()},1)):n()));function n(){!_&&(_=!0,e.calledRun=!0,A||(e.noFSInit||eo.init.initialized||eo.init(),eo.ignorePermissions=!1,et.init(),Z(B),Z(j),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),e7&&function(e=[]){var r=eS;e.unshift(b);var t=e.length,n=ex((t+1)*4),o=n>>2;e.forEach(e=>{var r,t;h[o++]=(t=ex(r=T(e)+1),C(e,d,t,r),t)}),h[o]=0;try{var a=r(t,n);em(a,!0)}catch(e){return ev(e)}}(r),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;){var r;r=e.postRun.shift(),I.unshift(r)}Z(I)}()))}}if(e.___start_em_js=356528,e.___stop_em_js=359213,e.AsciiToString=function(e){for(var r="";;){var t=f[e++>>0];if(!t)return r;r+=String.fromCharCode(t)}},e.FS=eo,q=function e(){_||e5(),_||(q=e)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();var e7=!0;return e.noInitialRun&&(e7=!1),e5(),e.ready}),rB={};rB=B("6kBsm").getBundleURL("ejVIo")+B("n9Yfb").resolve("iM1SU");var rj=(s="file:///node_modules/emglken/build/scare-core.js",function(e={}){var r,t,n,o,a,i,u,l,c,d,f,m,h,p,v,w,g,_,e=void 0!==e?e:{};e.ready=new Promise(function(e,r){t=e,n=r});var y=Object.assign({},e),E=[],b="./this.program",k=(e,r)=>{throw r},S="";"undefined"!=typeof document&&document.currentScript&&(S=document.currentScript.src),s&&(S=s),S=0!==S.indexOf("blob:")?S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):"",o=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},a=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{if(200==n.status||0==n.status&&n.response){r(n.response);return}t()},n.onerror=t,n.send(null)};var D=e.print||console.log.bind(console),F=e.printErr||console.warn.bind(console);Object.assign(e,y),y=null,e.arguments&&(E=e.arguments),e.thisProgram&&(b=e.thisProgram),e.quit&&(k=e.quit),e.wasmBinary&&(u=e.wasmBinary);var M=e.noExitRuntime||!1;"object"!=typeof WebAssembly&&G("no native wasm support detected");var A=!1,P=new TextDecoder("utf8");function x(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;return P.decode(e.buffer?e.subarray(r,o):new Uint8Array(e.slice(r,o)))}function R(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i)),s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function C(e){for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r}function T(){var r=l.buffer;e.HEAP8=d=new Int8Array(r),e.HEAP16=m=new Int16Array(r),e.HEAP32=h=new Int32Array(r),e.HEAPU8=f=new Uint8Array(r),e.HEAPU16=new Uint16Array(r),e.HEAPU32=p=new Uint32Array(r),e.HEAPF32=new Float32Array(r),e.HEAPF64=new Float64Array(r)}var N=[],z=[],B=[],j=[],O=[],I=!1,L=0,U=0,H=null,W=null;function q(r){U++,e.monitorRunDependencies&&e.monitorRunDependencies(U)}function Y(r){if(U--,e.monitorRunDependencies&&e.monitorRunDependencies(U),0==U&&(null!==H&&(clearInterval(H),H=null),W)){var t=W;W=null,t()}}function G(r){e.onAbort&&e.onAbort(r),F(r="Aborted("+r+")"),A=!0,c=1,r+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(r);throw n(t),t}function V(e){return e.startsWith("data:application/octet-stream;base64,")}function X(e){try{if(e==v&&u)return new Uint8Array(u);if(i)return i(e);throw"both async and sync fetching of the wasm failed"}catch(e){G(e)}}function K(e,r,t){return(u||"function"!=typeof fetch?Promise.resolve().then(function(){return X(e)}):fetch(e,{credentials:"same-origin"}).then(function(r){if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(function(){return X(e)})).then(function(e){return WebAssembly.instantiate(e,r)}).then(function(e){return e}).then(t,function(e){F("failed to asynchronously prepare wasm: "+e),G(e)})}function $(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function J(r){for(;r.length>0;)r.shift()(e)}e.locateFile?V(v="scare-core.wasm")||(r=v,v=e.locateFile?e.locateFile(r,S):S+r):v=new URL(rB).href;var Z={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=Z.isAbs(e),t="/"===e.substr(-1);return(e=Z.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=Z.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=Z.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return -1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments);return Z.normalize(e.join("/"))},join2:(e,r)=>Z.normalize(e+"/"+r)},Q={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:en.cwd();if("string"!=typeof n)throw TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=Z.isAbs(n)}return e=Z.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"),(r?"/":"")+e||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=Q.resolve(e).substr(1),r=Q.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t:C(e)+1),o=R(e,n,0,n.length);return r&&(n.length=o),n}var er={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){er.ttys[e]={input:[],output:[],ops:r},en.registerDevice(e,er.stream_ops)},stream_ops:{open:function(e){var r=er.ttys[e.node.rdev];if(!r)throw new en.ErrnoError(43);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new en.ErrnoError(60);for(var a,i=0,s=0;s0&&(D(x(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(F(x(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},fsync:function(e){e.output&&e.output.length>0&&(F(x(e.output,0)),e.output=[])}}},et={ops_table:null,mount:function(e){return et.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(en.isBlkdev(t)||en.isFIFO(t))throw new en.ErrnoError(63);et.ops_table||(et.ops_table={dir:{node:{getattr:et.node_ops.getattr,setattr:et.node_ops.setattr,lookup:et.node_ops.lookup,mknod:et.node_ops.mknod,rename:et.node_ops.rename,unlink:et.node_ops.unlink,rmdir:et.node_ops.rmdir,readdir:et.node_ops.readdir,symlink:et.node_ops.symlink},stream:{llseek:et.stream_ops.llseek}},file:{node:{getattr:et.node_ops.getattr,setattr:et.node_ops.setattr},stream:{llseek:et.stream_ops.llseek,read:et.stream_ops.read,write:et.stream_ops.write,allocate:et.stream_ops.allocate,mmap:et.stream_ops.mmap,msync:et.stream_ops.msync}},link:{node:{getattr:et.node_ops.getattr,setattr:et.node_ops.setattr,readlink:et.node_ops.readlink},stream:{}},chrdev:{node:{getattr:et.node_ops.getattr,setattr:et.node_ops.setattr},stream:en.chrdev_stream_ops}});var o=en.createNode(e,r,t,n);return en.isDir(o.mode)?(o.node_ops=et.ops_table.dir.node,o.stream_ops=et.ops_table.dir.stream,o.contents={}):en.isFile(o.mode)?(o.node_ops=et.ops_table.file.node,o.stream_ops=et.ops_table.file.stream,o.usedBytes=0,o.contents=null):en.isLink(o.mode)?(o.node_ops=et.ops_table.link.node,o.stream_ops=et.ops_table.link.stream):en.isChrdev(o.mode)&&(o.node_ops=et.ops_table.chrdev.node,o.stream_ops=et.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r){if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}}},node_ops:{getattr:function(e){var r={};return r.dev=en.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,en.isDir(e.mode)?r.size=4096:en.isFile(e.mode)?r.size=e.usedBytes:en.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&et.resizeFileStorage(e,r.size)},lookup:function(e,r){throw en.genericErrors[44]},mknod:function(e,r,t,n){return et.createNode(e,r,t,n)},rename:function(e,r,t){if(en.isDir(e.mode)){var n;try{n=en.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new en.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=en.lookupNode(e,r);for(var n in t.contents)throw new en.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=et.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!en.isLink(e.mode))throw new en.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||t+r{if(!(e=Q.resolve(e)))return{path:"",node:null};if((r=Object.assign({follow_mount:!0,recurse_count:0},r)).recurse_count>8)throw new en.ErrnoError(32);for(var t=e.split("/").filter(e=>!!e),n=en.root,o="/",a=0;a40)throw new en.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var r;;){if(en.isRoot(e)){var t=e.mount.mountpoint;if(!r)return t;return"/"!==t[t.length-1]?t+"/"+r:t+r}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%en.nameTable.length},hashAddNode:e=>{var r=en.hashName(e.parent.id,e.name);e.name_next=en.nameTable[r],en.nameTable[r]=e},hashRemoveNode:e=>{var r=en.hashName(e.parent.id,e.name);if(en.nameTable[r]===e)en.nameTable[r]=e.name_next;else for(var t=en.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=en.mayLookup(e);if(t)throw new en.ErrnoError(t,e);for(var n=en.hashName(e.id,r),o=en.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return en.lookup(e,r)},createNode:(e,r,t,n)=>{var o=new en.FSNode(e,r,t,n);return en.hashAddNode(o),o},destroyNode:e=>{en.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>(61440&e)==32768,isDir:e=>(61440&e)==16384,isLink:e=>(61440&e)==40960,isChrdev:e=>(61440&e)==8192,isBlkdev:e=>(61440&e)==24576,isFIFO:e=>(61440&e)==4096,isSocket:e=>(49152&e)==49152,flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=en.flagModes[e];if(void 0===r)throw Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>en.ignorePermissions?0:r.includes("r")&&!(292&e.mode)||r.includes("w")&&!(146&e.mode)||r.includes("x")&&!(73&e.mode)?2:0,mayLookup:e=>en.nodePermissions(e,"x")||(e.node_ops.lookup?0:2),mayCreate:(e,r)=>{try{return en.lookupNode(e,r),20}catch(e){}return en.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{try{n=en.lookupNode(e,r)}catch(e){return e.errno}var n,o=en.nodePermissions(e,"wx");if(o)return o;if(t){if(!en.isDir(n.mode))return 54;if(en.isRoot(n)||en.getPath(n)===en.cwd())return 10}else if(en.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?en.isLink(e.mode)?32:en.isDir(e.mode)&&("r"!==en.flagsToPermissionString(r)||512&r)?31:en.nodePermissions(e,en.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,r=en.MAX_OPEN_FDS)=>{for(var t=e;t<=r;t++)if(!en.streams[t])return t;throw new en.ErrnoError(33)},getStream:e=>en.streams[e],createStream:(e,r,t)=>{en.FSStream||(en.FSStream=function(){this.shared={}},en.FSStream.prototype={},Object.defineProperties(en.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return(2097155&this.flags)!=1}},isWrite:{get:function(){return(2097155&this.flags)!=0}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new en.FSStream,e);var n=en.nextfd(r,t);return e.fd=n,en.streams[n]=e,e},closeStream:e=>{en.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=en.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new en.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{en.devices[e]={stream_ops:r}},getDevice:e=>en.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),en.syncFSRequests++,en.syncFSRequests>1&&F("warning: "+en.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=en.getMounts(en.root.mount),n=0;function o(e){return en.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach(r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)})},mount:(e,r,t)=>{var n,o="/"===t,a=!t;if(o&&en.root)throw new en.ErrnoError(10);if(!o&&!a){var i=en.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,en.isMountpoint(n))throw new en.ErrnoError(10);if(!en.isDir(n.mode))throw new en.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?en.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:e=>{var r=en.lookupPath(e,{follow_mount:!1});if(!en.isMountpoint(r.node))throw new en.ErrnoError(28);var t=r.node,n=t.mounted,o=en.getMounts(n);Object.keys(en.nameTable).forEach(e=>{for(var r=en.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&en.destroyNode(r),r=t}}),t.mounted=null;var a=t.mount.mounts.indexOf(n);t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=en.lookupPath(e,{parent:!0}).node,o=Z.basename(e);if(!o||"."===o||".."===o)throw new en.ErrnoError(28);var a=en.mayCreate(n,o);if(a)throw new en.ErrnoError(a);if(!n.node_ops.mknod)throw new en.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=(void 0!==r?r:438)&4095|32768,en.mknod(e,r,0)),mkdir:(e,r)=>(r=(void 0!==r?r:511)&1023|16384,en.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,en.mknod(e,r,t)),symlink:(e,r)=>{if(!Q.resolve(e))throw new en.ErrnoError(44);var t=en.lookupPath(r,{parent:!0}).node;if(!t)throw new en.ErrnoError(44);var n=Z.basename(r),o=en.mayCreate(t,n);if(o)throw new en.ErrnoError(o);if(!t.node_ops.symlink)throw new en.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o,a=Z.dirname(e),i=Z.dirname(r),s=Z.basename(e),u=Z.basename(r);if(t=en.lookupPath(e,{parent:!0}).node,n=en.lookupPath(r,{parent:!0}).node,!t||!n)throw new en.ErrnoError(44);if(t.mount!==n.mount)throw new en.ErrnoError(75);var l=en.lookupNode(t,s),c=Q.relative(e,i);if("."!==c.charAt(0))throw new en.ErrnoError(28);if("."!==(c=Q.relative(r,a)).charAt(0))throw new en.ErrnoError(55);try{o=en.lookupNode(n,u)}catch(e){}if(l!==o){var d=en.isDir(l.mode),f=en.mayDelete(t,s,d);if(f||(f=o?en.mayDelete(n,u,d):en.mayCreate(n,u)))throw new en.ErrnoError(f);if(!t.node_ops.rename)throw new en.ErrnoError(63);if(en.isMountpoint(l)||o&&en.isMountpoint(o))throw new en.ErrnoError(10);if(n!==t&&(f=en.nodePermissions(t,"w")))throw new en.ErrnoError(f);en.hashRemoveNode(l);try{t.node_ops.rename(l,n,u)}catch(e){throw e}finally{en.hashAddNode(l)}}},rmdir:e=>{var r=en.lookupPath(e,{parent:!0}).node,t=Z.basename(e),n=en.lookupNode(r,t),o=en.mayDelete(r,t,!0);if(o)throw new en.ErrnoError(o);if(!r.node_ops.rmdir)throw new en.ErrnoError(63);if(en.isMountpoint(n))throw new en.ErrnoError(10);r.node_ops.rmdir(r,t),en.destroyNode(n)},readdir:e=>{var r=en.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new en.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=en.lookupPath(e,{parent:!0}).node;if(!r)throw new en.ErrnoError(44);var t=Z.basename(e),n=en.lookupNode(r,t),o=en.mayDelete(r,t,!1);if(o)throw new en.ErrnoError(o);if(!r.node_ops.unlink)throw new en.ErrnoError(63);if(en.isMountpoint(n))throw new en.ErrnoError(10);r.node_ops.unlink(r,t),en.destroyNode(n)},readlink:e=>{var r=en.lookupPath(e).node;if(!r)throw new en.ErrnoError(44);if(!r.node_ops.readlink)throw new en.ErrnoError(28);return Q.resolve(en.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=en.lookupPath(e,{follow:!r}).node;if(!t)throw new en.ErrnoError(44);if(!t.node_ops.getattr)throw new en.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>en.stat(e,!0),chmod:(e,r,t)=>{var n;if(!(n="string"==typeof e?en.lookupPath(e,{follow:!t}).node:e).node_ops.setattr)throw new en.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{en.chmod(e,r,!0)},fchmod:(e,r)=>{var t=en.getStream(e);if(!t)throw new en.ErrnoError(8);en.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;if(!(o="string"==typeof e?en.lookupPath(e,{follow:!n}).node:e).node_ops.setattr)throw new en.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{en.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=en.getStream(e);if(!n)throw new en.ErrnoError(8);en.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new en.ErrnoError(28);if("string"==typeof e){var t;t=en.lookupPath(e,{follow:!0}).node}else t=e;if(!t.node_ops.setattr)throw new en.ErrnoError(63);if(en.isDir(t.mode))throw new en.ErrnoError(31);if(!en.isFile(t.mode))throw new en.ErrnoError(28);var n=en.nodePermissions(t,"w");if(n)throw new en.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=en.getStream(e);if(!t)throw new en.ErrnoError(8);if((2097155&t.flags)==0)throw new en.ErrnoError(28);en.truncate(t.node,r)},utime:(e,r,t)=>{var n=en.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(r,t,n)=>{if(""===r)throw new en.ErrnoError(44);if(t="string"==typeof t?en.modeStringToFlags(t):t,n=void 0===n?438:n,n=64&t?4095&n|32768:0,"object"==typeof r)o=r;else{r=Z.normalize(r);try{var o;o=en.lookupPath(r,{follow:!(131072&t)}).node}catch(e){}}var a=!1;if(64&t){if(o){if(128&t)throw new en.ErrnoError(20)}else o=en.mknod(r,n,0),a=!0}if(!o)throw new en.ErrnoError(44);if(en.isChrdev(o.mode)&&(t&=-513),65536&t&&!en.isDir(o.mode))throw new en.ErrnoError(54);if(!a){var i=en.mayOpen(o,t);if(i)throw new en.ErrnoError(i)}512&t&&!a&&en.truncate(o,0),t&=-131713;var s=en.createStream({node:o,path:en.getPath(o),flags:t,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return s.stream_ops.open&&s.stream_ops.open(s),!e.logReadFiles||1&t||(en.readFiles||(en.readFiles={}),r in en.readFiles||(en.readFiles[r]=1)),s},close:e=>{if(en.isClosed(e))throw new en.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{en.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(en.isClosed(e))throw new en.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new en.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new en.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new en.ErrnoError(28);if(en.isClosed(e)||(2097155&e.flags)==1)throw new en.ErrnoError(8);if(en.isDir(e.node.mode))throw new en.ErrnoError(31);if(!e.stream_ops.read)throw new en.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new en.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new en.ErrnoError(28);if(en.isClosed(e)||(2097155&e.flags)==0)throw new en.ErrnoError(8);if(en.isDir(e.node.mode))throw new en.ErrnoError(31);if(!e.stream_ops.write)throw new en.ErrnoError(28);e.seekable&&1024&e.flags&&en.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new en.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(en.isClosed(e))throw new en.ErrnoError(8);if(r<0||t<=0)throw new en.ErrnoError(28);if((2097155&e.flags)==0)throw new en.ErrnoError(8);if(!en.isFile(e.node.mode)&&!en.isDir(e.node.mode))throw new en.ErrnoError(43);if(!e.stream_ops.allocate)throw new en.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o)=>{if((2&n)!=0&&(2&o)==0&&(2097155&e.flags)!=2||(2097155&e.flags)==1)throw new en.ErrnoError(2);if(!e.stream_ops.mmap)throw new en.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync:(e,r,t,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new en.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:(e,r={})=>{if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw Error('Invalid encoding type "'+r.encoding+'"');var t,n=en.open(e,r.flags),o=en.stat(e).size,a=new Uint8Array(o);return en.read(n,a,0,o,0),"utf8"===r.encoding?t=x(a,0):"binary"===r.encoding&&(t=a),en.close(n),t},writeFile:(e,r,t={})=>{t.flags=t.flags||577;var n=en.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(C(r)+1),a=R(r,o,0,o.length);en.write(n,o,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))en.write(n,r,0,r.byteLength,void 0,t.canOwn);else throw Error("Unsupported data type");en.close(n)},cwd:()=>en.currentPath,chdir:e=>{var r=en.lookupPath(e,{follow:!0});if(null===r.node)throw new en.ErrnoError(44);if(!en.isDir(r.node.mode))throw new en.ErrnoError(54);var t=en.nodePermissions(r.node,"x");if(t)throw new en.ErrnoError(t);en.currentPath=r.path},createDefaultDirectories:()=>{en.mkdir("/tmp"),en.mkdir("/home"),en.mkdir("/home/web_user")},createDefaultDevices:()=>{en.mkdir("/dev"),en.registerDevice(en.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),en.mkdev("/dev/null",en.makedev(1,3)),er.register(en.makedev(5,0),er.default_tty_ops),er.register(en.makedev(6,0),er.default_tty1_ops),en.mkdev("/dev/tty",en.makedev(5,0)),en.mkdev("/dev/tty1",en.makedev(6,0));var e=function(){if("object"!=typeof crypto||"function"!=typeof crypto.getRandomValues)return()=>G("randomDevice");var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}();en.createDevice("/dev","random",e),en.createDevice("/dev","urandom",e),en.mkdir("/dev/shm"),en.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{en.mkdir("/proc");var e=en.mkdir("/proc/self");en.mkdir("/proc/self/fd"),en.mount({mount:()=>{var r=en.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=en.getStream(+r);if(!t)throw new en.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>t.path}};return n.parent=n,n}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{e.stdin?en.createDevice("/dev","stdin",e.stdin):en.symlink("/dev/tty","/dev/stdin"),e.stdout?en.createDevice("/dev","stdout",null,e.stdout):en.symlink("/dev/tty","/dev/stdout"),e.stderr?en.createDevice("/dev","stderr",null,e.stderr):en.symlink("/dev/tty1","/dev/stderr"),en.open("/dev/stdin",0),en.open("/dev/stdout",1),en.open("/dev/stderr",1)},ensureErrnoError:()=>{en.ErrnoError||(en.ErrnoError=function(e,r){this.name="ErrnoError",this.node=r,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},en.ErrnoError.prototype=Error(),en.ErrnoError.prototype.constructor=en.ErrnoError,[44].forEach(e=>{en.genericErrors[e]=new en.ErrnoError(e),en.genericErrors[e].stack=""}))},staticInit:()=>{en.ensureErrnoError(),en.nameTable=Array(4096),en.mount(et,{},"/"),en.createDefaultDirectories(),en.createDefaultDevices(),en.createSpecialDirectories(),en.filesystems={MEMFS:et}},init:(r,t,n)=>{en.init.initialized=!0,en.ensureErrnoError(),e.stdin=r||e.stdin,e.stdout=t||e.stdout,e.stderr=n||e.stderr,en.createStandardStreams()},quit:()=>{en.init.initialized=!1,ev(0);for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=en.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{var t=en.lookupPath(e,{follow:!r});e=t.path}catch(e){}var n={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var t=en.lookupPath(e,{parent:!0});n.parentExists=!0,n.parentPath=t.path,n.parentObject=t.node,n.name=Z.basename(e),t=en.lookupPath(e,{follow:!r}),n.exists=!0,n.path=t.path,n.object=t.node,n.name=t.node.name,n.isRoot="/"===t.path}catch(e){n.error=e.errno}return n},createPath:(e,r,t,n)=>{e="string"==typeof e?e:en.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=Z.join2(e,a);try{en.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=Z.join2("string"==typeof e?e:en.getPath(e),r),i=en.getMode(n,o);return en.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:en.getPath(e),i=r?Z.join2(e,r):e);var s=en.getMode(n,o),u=en.create(i,s);if(t){if("string"==typeof t){for(var l=Array(t.length),c=0,d=t.length;c{var o=Z.join2("string"==typeof e?e:en.getPath(e),r),a=en.getMode(!!t,!!n);en.createDevice.major||(en.createDevice.major=64);var i=en.makedev(en.createDevice.major++,0);return en.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i,s=0,u=0;u{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(o)try{e.contents=ee(o(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new en.ErrnoError(29)}else throw Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1)&&!(e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e,r=new XMLHttpRequest;if(r.open("HEAD",t,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw Error("Couldn't load "+t+". Status: "+r.status);var n=Number(r.getResponseHeader("Content-length")),o=(e=r.getResponseHeader("Accept-Ranges"))&&"bytes"===e,a=(e=r.getResponseHeader("Content-Encoding"))&&"gzip"===e,i=1048576;o||(i=n);var s=(e,r)=>{if(e>r)throw Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):ee(o.responseText||"",!0)},u=this;u.setDataGetter(e=>{var r=e*i,t=(e+1)*i-1;if(t=Math.min(t,n-1),void 0===u.chunks[e]&&(u.chunks[e]=s(r,t)),void 0===u.chunks[e])throw Error("doXHR failed!");return u.chunks[e]}),(a||!n)&&(i=n=1,i=n=this.getter(0).length,D("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){var i;throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"}var i={isDevice:!1,url:t},s=en.createFile(e,r,i,n,o);i.contents?s.contents=i.contents:i.url&&(s.contents=null,s.url=i.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};function l(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var s=0;s{var r=s.stream_ops[e];u[e]=function(){return en.forceLoadFile(s),r.apply(null,arguments)}}),u.read=(e,r,t,n,o)=>(en.forceLoadFile(s),l(e,r,t,n,o)),u.mmap=(e,r,t,n,o)=>{en.forceLoadFile(s);var a=void G();if(!a)throw new en.ErrnoError(48);return l(e,d,a,r,t),{ptr:a,allocated:!0}},s.stream_ops=u,s},createPreloadedFile:(e,r,t,n,o,i,s,u,l,c)=>{var d,f,m=r?Q.resolve(Z.join2(e,r)):e,h="cp "+m;function p(t){function a(t){c&&c(),u||en.createDataFile(e,r,t,n,o,l),i&&i(),Y(h)}Browser.handledByPreloadPlugin(t,m,a,()=>{s&&s(),Y(h)})||a(t)}q(h),"string"==typeof t?(d=e=>p(e),f="al "+t,a(t,e=>{var r;r='Loading data file "'+t+'" failed (no arrayBuffer).',e||G(r),d(new Uint8Array(e)),f&&Y(f)},e=>{if(s)s();else throw'Loading data file "'+t+'" failed.'}),f&&q(f)):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r=()=>{},t=()=>{})=>{var n=en.indexedDB();try{var o=n.open(en.DB_NAME(),en.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{D("creating db"),o.result.createObjectStore(en.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([en.DB_STORE_NAME],"readwrite"),a=n.objectStore(en.DB_STORE_NAME),i=0,s=0,u=e.length;function l(){0==s?r():t()}e.forEach(e=>{var r=a.put(en.analyzePath(e).object.contents,e);r.onsuccess=()=>{++i+s==u&&l()},r.onerror=()=>{i+ ++s==u&&l()}}),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r=()=>{},t=()=>{})=>{var n=en.indexedDB();try{var o=n.open(en.DB_NAME(),en.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var a=n.transaction([en.DB_STORE_NAME],"readonly")}catch(e){t(e);return}var i=a.objectStore(en.DB_STORE_NAME),s=0,u=0,l=e.length;function c(){0==u?r():t()}e.forEach(e=>{var r=i.get(e);r.onsuccess=()=>{en.analyzePath(e).exists&&en.unlink(e),en.createDataFile(Z.dirname(e),Z.basename(e),r.result,!0,!0,!0),++s+u==l&&c()},r.onerror=()=>{s+ ++u==l&&c()}}),a.onerror=t},o.onerror=t}},eo={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(Z.isAbs(r))return r;if(-100===e)n=en.cwd();else{var n;n=eo.getStreamFromFD(e).path}if(0==r.length){if(!t)throw new en.ErrnoError(44);return n}return Z.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&Z.normalize(r)!==Z.normalize(en.getPath(e.node)))return -54;throw e}h[t>>2]=n.dev,h[t+8>>2]=n.ino,h[t+12>>2]=n.mode,p[t+16>>2]=n.nlink,h[t+20>>2]=n.uid,h[t+24>>2]=n.gid,h[t+28>>2]=n.rdev,g=[n.size>>>0,+Math.abs(w=n.size)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+40>>2]=g[0],h[t+44>>2]=g[1],h[t+48>>2]=4096,h[t+52>>2]=n.blocks;var o=n.atime.getTime(),a=n.mtime.getTime(),i=n.ctime.getTime();return g=[Math.floor(o/1e3)>>>0,+Math.abs(w=Math.floor(o/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+56>>2]=g[0],h[t+60>>2]=g[1],p[t+64>>2]=o%1e3*1e3,g=[Math.floor(a/1e3)>>>0,+Math.abs(w=Math.floor(a/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+72>>2]=g[0],h[t+76>>2]=g[1],p[t+80>>2]=a%1e3*1e3,g=[Math.floor(i/1e3)>>>0,+Math.abs(w=Math.floor(i/1e3))>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+88>>2]=g[0],h[t+92>>2]=g[1],p[t+96>>2]=i%1e3*1e3,g=[n.ino>>>0,+Math.abs(w=n.ino)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0],h[t+104>>2]=g[0],h[t+108>>2]=g[1],0},doMsync:function(e,r,t,n,o){if(!en.isFile(r.node.mode))throw new en.ErrnoError(43);if(2&n)return 0;var a=f.slice(e,e+t);en.msync(r,a,o,t,n)},varargs:void 0,get:function(){return eo.varargs+=4,h[eo.varargs-4>>2]},getStr:function(e){return function(e,r){if(!e)return"";for(var t=e+void 0,n=e;!(n>=t)&&f[n];)++n;return P.decode(f.subarray(e,n))}(e)},getStreamFromFD:function(e){var r=en.getStream(e);if(!r)throw new en.ErrnoError(8);return r}},ea={};function ei(){if(!ei.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:b||"./this.program"};for(var r in ea)void 0===ea[r]?delete e[r]:e[r]=ea[r];var t=[];for(var r in e)t.push(r+"="+e[r]);ei.strings=t}return ei.strings}function es(r,t){c=r,M||L>0||(eg(),J(j),en.quit(),er.shutdown(),I=!0),c=r,M||L>0||(e.onExit&&e.onExit(r),A=!0),k(r,new $(r))}function eu(e){if(e instanceof $||"unwind"==e)return c;k(1,e)}function el(e){try{return e()}catch(e){G(e)}}var ec={instrumentWasmImports:function(e){var r=["invoke_*","emscripten_sleep","emscripten_wget","emscripten_wget_data","emscripten_idb_load","emscripten_idb_store","emscripten_idb_delete","emscripten_idb_exists","emscripten_idb_load_blob","emscripten_idb_store_blob","SDL_Delay","emscripten_scan_registers","emscripten_lazy_load_code","emscripten_fiber_swap","__load_secondary_module","fd_sync","__wasi_fd_sync","_emval_await","_dlopen_js","__asyncjs__*"];for(var t in e)!function(t){var n=e[t];n.sig,"function"==typeof n&&(r.indexOf(t)>=0||t.startsWith("__asyncjs__"))}(t)},instrumentWasmExports:function(e){var r={};for(var t in e)!function(t){var n=e[t];"function"==typeof n?r[t]=function(){ec.exportCallStack.push(t);try{return n.apply(null,arguments)}finally{A||(ec.exportCallStack.pop()===t||G(void 0),ec.maybeStopUnwind())}}:r[t]=n}(t);return r},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:8192,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(e){var r=ec.callStackNameToId[e];return void 0===r&&(r=ec.callStackId++,ec.callStackNameToId[e]=r,ec.callStackIdToName[r]=e),r},maybeStopUnwind:function(){ec.currData&&ec.state===ec.State.Unwinding&&0===ec.exportCallStack.length&&(ec.state=ec.State.Normal,L+=1,el(eN),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:function(){return new Promise((e,r)=>{ec.asyncPromiseHandlers={resolve:e,reject:r}})},allocateData:function(){var e=eh(12+ec.StackSize);return ec.setDataHeader(e,e+12,ec.StackSize),ec.setDataRewindFunc(e),e},setDataHeader:function(e,r,t){h[e>>2]=r,h[e+4>>2]=r+t},setDataRewindFunc:function(e){var r=ec.exportCallStack[0],t=ec.getCallStackId(r);h[e+8>>2]=t},getDataRewindFunc:function(r){var t=h[r+8>>2],n=ec.callStackIdToName[t];return e.asm[n]},doRewind:function(e){var r=ec.getDataRewindFunc(e);return L-=1,r()},handleSleep:function(e){if(!A){if(ec.state===ec.State.Normal){var r=!1,t=!1;e((e=0)=>{if(!A&&(ec.handleSleepReturnValue=e,r=!0,t)){ec.state=ec.State.Rewinding,el(()=>ez(ec.currData)),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var n,o=!1;try{n=ec.doRewind(ec.currData)}catch(e){n=e,o=!0}var a=!1;if(!ec.currData){var i=ec.asyncPromiseHandlers;i&&(ec.asyncPromiseHandlers=null,(o?i.reject:i.resolve)(n),a=!0)}if(o&&!a)throw n}}),t=!0,r||(ec.state=ec.State.Unwinding,ec.currData=ec.allocateData(),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause(),el(()=>eT(ec.currData)))}else ec.state===ec.State.Rewinding?(ec.state=ec.State.Normal,el(eB),em(ec.currData),ec.currData=null,ec.sleepCallbacks.forEach(e=>(function(e){if(!I&&!A)try{e(),function(){if(!(M||L>0))try{es(c)}catch(e){eu(e)}}()}catch(e){eu(e)}})(e))):G("invalid state: "+ec.state);return ec.handleSleepReturnValue}},handleAsync:function(e){return ec.handleSleep(r=>{e().then(r)})}},ed=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=en.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n};Object.defineProperties(ed.prototype,{read:{get:function(){return(365&this.mode)==365},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return(146&this.mode)==146},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return en.isDir(this.mode)}},isDevice:{get:function(){return en.isChrdev(this.mode)}}}),en.FSNode=ed,en.staticInit();var ef={s:function(r,t){return ec.handleAsync(async()=>{e.emglken_stdin_buffers.length||await new Promise(r=>{e.emglken_stdin_ready=r});let n=e.emglken_stdin_buffers.shift(),o=Math.min(n.length,t);return o==n.length?f.set(n,r):(f.set(n.subarray(0,o),r),e.emglken_stdin_buffers.unshift(n.subarray(o))),o})},D:function(e,r,t,n){try{if(r=eo.getStr(r),r=eo.calculateAt(e,r),-8&t)return -28;var o=en.lookupPath(r,{follow:!0}).node;if(!o)return -44;var a="";if(4&t&&(a+="r"),2&t&&(a+="w"),1&t&&(a+="x"),a&&en.nodePermissions(o,a))return -2;return 0}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return-e.errno}},n:function(e,r,t){eo.varargs=t;try{var n=eo.getStreamFromFD(e);switch(r){case 0:var o=eo.get();if(o<0)return -28;return en.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=eo.get();return n.flags|=o,0;case 5:var o=eo.get();return m[o+0>>1]=2,0;case 16:case 8:default:return -28;case 9:return h[ew()>>2]=28,-1}}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return-e.errno}},C:function(e,r){try{if(0===r)return -28;var t=en.cwd(),n=C(t)+1;if(r>2]=0,0;case 21520:if(!n.tty)return -59;return -28;case 21531:var o=eo.get();return en.ioctl(n,r,o);default:return -28}}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return-e.errno}},A:function(e,r,t,n){eo.varargs=n;try{r=eo.getStr(r),r=eo.calculateAt(e,r);var o=n?eo.get():0;return en.open(r,t,o).fd}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return-e.errno}},z:function(e,r){try{return e=eo.getStr(e),eo.doStat(en.stat,e,r)}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return-e.errno}},v:function(){return!0},u:function(){throw 1/0},t:function(){G("")},k:function(){return Date.now()},r:function(e,r,t){f.copyWithin(e,r,r+t)},q:function(e){var r=f.length;if((e>>>=0)>2147483648)return!1;let t=(e,r)=>e+(r-e%r)%r;for(var n=1;n<=4;n*=2){var o=r*(1+.2/n);if(o=Math.min(o,e+100663296),function(e){var r=l.buffer;try{return l.grow(e-r.byteLength+65535>>>16),T(),1}catch(e){}}(Math.min(2147483648,t(Math.max(e,o),65536))))return!0}return!1},y:function(e,r){var t=0;return ei().forEach(function(n,o){var a=r+t;p[e+4*o>>2]=a,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);d[r>>0]=0}(n,a),t+=n.length+1}),0},x:function(e,r){var t=ei();p[e>>2]=t.length;var n=0;return t.forEach(function(e){n+=e.length+1}),p[r>>2]=n,0},i:es,m:function(e){try{var r=eo.getStreamFromFD(e);return en.close(r),0}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return e.errno}},w:function(e,r,t,n){try{var o=eo.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=en.read(e,d,i,s,n);if(u<0)return -1;if(o+=u,u>2]=a,0}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return e.errno}},p:function(e,r,t,n,o){try{var a=t+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*t:NaN;if(isNaN(a))return 61;var i=eo.getStreamFromFD(e);return en.llseek(i,a,n),g=[i.position>>>0,(w=i.position,+Math.abs(w)>=1?w>0?(0|Math.min(+Math.floor(w/4294967296),4294967295))>>>0:~~+Math.ceil((w-+(~~w>>>0))/4294967296)>>>0:0)],h[o>>2]=g[0],h[o+4>>2]=g[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return e.errno}},l:function(e,r,t,n){try{var o=eo.getStreamFromFD(e),a=function(e,r,t,n){for(var o=0,a=0;a>2],s=p[r+4>>2];r+=8;var u=en.write(e,d,i,s,n);if(u<0)return -1;o+=u,void 0!==n&&(n+=u)}return o}(o,r,t);return p[n>>2]=a,0}catch(e){if(void 0===en||"ErrnoError"!==e.name)throw e;return e.errno}},c:function(e){var r=ey();try{return eM(e)}catch(e){if(eE(r),e!==e+0)throw e;e_(1,0)}},g:function(e,r){var t=ey();try{return eD(e,r)}catch(e){if(eE(t),e!==e+0)throw e;e_(1,0)}},f:function(e,r,t,n){var o=ey();try{return eS(e,r,t,n)}catch(e){if(eE(o),e!==e+0)throw e;e_(1,0)}},d:function(e,r,t,n,o){var a=ey();try{return eP(e,r,t,n,o)}catch(e){if(eE(a),e!==e+0)throw e;e_(1,0)}},o:function(e,r){var t=ey();try{return eC(e,r)}catch(e){if(eE(t),e!==e+0)throw e;e_(1,0)}},j:function(e){var r=ey();try{eA(e)}catch(e){if(eE(r),e!==e+0)throw e;e_(1,0)}},b:function(e,r){var t=ey();try{ek(e,r)}catch(e){if(eE(t),e!==e+0)throw e;e_(1,0)}},a:function(e,r,t){var n=ey();try{eF(e,r,t)}catch(e){if(eE(n),e!==e+0)throw e;e_(1,0)}},h:function(e,r,t,n){var o=ey();try{ex(e,r,t,n)}catch(e){if(eE(o),e!==e+0)throw e;e_(1,0)}},e:function(e,r,t,n,o){var a=ey();try{eR(e,r,t,n,o)}catch(e){if(eE(a),e!==e+0)throw e;e_(1,0)}}};!function(){var r,t,o,a={a:ef};function i(r,t){var n,o=r.exports;return o=ec.instrumentWasmExports(o),e.asm=o,l=e.asm.E,T(),e.asm.N,n=e.asm.F,z.unshift(n),Y("wasm-instantiate"),o}if(q("wasm-instantiate"),e.instantiateWasm)try{return e.instantiateWasm(a,i)}catch(e){F("Module.instantiateWasm callback failed with error: "+e),n(e)}(r=u,t=v,o=function(e){i(e.instance)},r||"function"!=typeof WebAssembly.instantiateStreaming||V(t)||"function"!=typeof fetch?K(t,a,o):fetch(t,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,a).then(o,function(e){return F("wasm streaming compile failed: "+e),F("falling back to ArrayBuffer instantiation"),K(t,a,o)})})).catch(n)}();var em=function(){return(em=e.asm.G).apply(null,arguments)},eh=function(){return(eh=e.asm.H).apply(null,arguments)},ep=e._main=function(){return(ep=e._main=e.asm.I).apply(null,arguments)},ev=(e._gidispatch_get_game_id=function(){return(e._gidispatch_get_game_id=e.asm.J).apply(null,arguments)},e._fflush=function(){return(ev=e._fflush=e.asm.K).apply(null,arguments)}),ew=function(){return(ew=e.asm.L).apply(null,arguments)},eg=function(){return(eg=e.asm.M).apply(null,arguments)},e_=function(){return(e_=e.asm.O).apply(null,arguments)},ey=function(){return(ey=e.asm.P).apply(null,arguments)},eE=function(){return(eE=e.asm.Q).apply(null,arguments)},eb=function(){return(eb=e.asm.R).apply(null,arguments)},ek=e.dynCall_vi=function(){return(ek=e.dynCall_vi=e.asm.S).apply(null,arguments)},eS=e.dynCall_iiii=function(){return(eS=e.dynCall_iiii=e.asm.T).apply(null,arguments)},eD=e.dynCall_ii=function(){return(eD=e.dynCall_ii=e.asm.U).apply(null,arguments)},eF=e.dynCall_vii=function(){return(eF=e.dynCall_vii=e.asm.V).apply(null,arguments)},eM=e.dynCall_i=function(){return(eM=e.dynCall_i=e.asm.W).apply(null,arguments)},eA=e.dynCall_v=function(){return(eA=e.dynCall_v=e.asm.X).apply(null,arguments)},eP=e.dynCall_iiiii=function(){return(eP=e.dynCall_iiiii=e.asm.Y).apply(null,arguments)},ex=e.dynCall_viii=function(){return(ex=e.dynCall_viii=e.asm.Z).apply(null,arguments)},eR=e.dynCall_viiii=function(){return(eR=e.dynCall_viiii=e.asm._).apply(null,arguments)},eC=e.dynCall_ji=function(){return(eC=e.dynCall_ji=e.asm.$).apply(null,arguments)},eT=function(){return(eT=e.asm.aa).apply(null,arguments)},eN=function(){return(eN=e.asm.ba).apply(null,arguments)},ez=function(){return(ez=e.asm.ca).apply(null,arguments)},eB=function(){return(eB=e.asm.da).apply(null,arguments)};function ej(r=E){!(U>0)&&(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;){var r;r=e.preRun.shift(),N.unshift(r)}J(N)}(),U>0||(e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),n()},1)):n()));function n(){!_&&(_=!0,e.calledRun=!0,A||(e.noFSInit||en.init.initialized||en.init(),en.ignorePermissions=!1,er.init(),J(z),J(B),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),eO&&function(e=[]){var r=ep;e.unshift(b);var t=e.length,n=eb((t+1)*4),o=n>>2;e.forEach(e=>{var r,t;h[o++]=(t=eb(r=C(e)+1),R(e,d,t,r),t)}),h[o]=0;try{var a=r(t,n);es(a,!0)}catch(e){return eu(e)}}(r),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;){var r;r=e.postRun.shift(),O.unshift(r)}J(O)}()))}}if(e.___start_em_js=107504,e.___stop_em_js=110189,e.AsciiToString=function(e){for(var r="";;){var t=f[e++>>0];if(!t)return r;r+=String.fromCharCode(t)}},e.FS=en,W=function e(){_||ej(),_||(W=e)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();var eO=!0;return e.noInitialRun&&(eO=!1),ej(),e.ready});let rO=[{id:"bocfel",extensions:/z([3458]|blorb)$/,engine:class extends rM{default_options(){return{vmcore:rP}}}},{id:"git",extensions:/(gblorb|ulx)$/,engine:class extends rM{default_options(){return{vmcore:rR}}}},{id:"hugo",extensions:/hex$/,engine:class extends rM{default_options(){return{vmcore:rT}}}},{id:"scare",extensions:/taf$/,engine:class extends rM{default_options(){return{vmcore:rj}}}},{id:"tads",extensions:/(gam|t3)$/,engine:class extends rM{default_options(){return{vmcore:rz}}}}],rI=e=>{let r=rO.find(r=>r.extensions.test(e));if(r)return{...r,wasmBinaryName:`emglken/${r.id}-core.wasm`};throw Error("Unsupported file type")};var rL=class{constructor(e,r){this.streaming=!1,this.handlers=e,this.loggers=r}file_ref_exists({usage:e}){return"save"===e}file_remove_ref(){return!0}file_construct_ref(e,r){return{filename:e,usage:r||""}}file_read(e,r){return this.handlers.onFileRead(e,r)}file_write(e,r,t){0!==r.length&&this.handlers.onFileWrite(e,r,t)}open(e,r,t,n){this.handlers.onFileNameRequest(e,r,t,n)}log(e){this.loggers.log(e)}warning(e){this.loggers.warn(e)}error(e){this.loggers.error(e)}},rU=class{constructor({width:e,height:r}){this.width=e,this.height=r,this.current_metrics=null,this.disabled=!1,this.generation=0,this.interface=null,this.version="0.5.1"}measure_window(){return{width:this.width,height:this.height,buffercharheight:1,buffercharwidth:1,buffermarginx:0,buffermarginy:0,graphicsmarginx:0,graphicsmarginy:0,gridcharheight:1,gridcharwidth:1,gridmarginx:0,gridmarginy:0,inspacingx:0,inspacingy:0,outspacingx:0,outspacingy:0}}getinterface(){return this.interface}init(e){e||this.error("No game interface object has been provided."),e.accept||this.error("The game interface object must have an accept() function."),this.interface=e,this.current_metrics=this.measure_window(),this.send_response("init",null,this.current_metrics)}update(e){if("error"===e.type&&this.error(e.message),"pass"!==e.type){if("update"!==e.type&&"exit"!==e.type){this.log(`Ignoring unknown message type: ${e.type}`);return}if(e.gen===this.generation){this.log(`Ignoring repeated generation number: ${e.gen}`);return}if(e.genthis.send_response("specialresponse",null,"fileref_prompt",e)):this.error("Request for unknown special input type: "+e.type)}update_content(e){this.handlers.onUpdateContent(e)}exit(){this.handlers.onExit(),super.exit()}cancel_inputs(e){this.handlers.onUpdateInputs(e)}disable(e){this.handlers.onDisable(e)}update_windows(e){this.handlers.onUpdateWindows(e)}log(e){this.loggers.log(e)}warning(e){this.loggers.warn(e)}error(e){this.loggers.error(e)}};let rW=()=>void 0,rq=["onInit","onUpdateWindows","onUpdateInputs","onUpdateContent","onDisable","onFileNameRequest","onFileRead","onFileWrite","onExit"].reduce((e,r)=>(e[r]=rW,e),{}),rY={log:console.log,warning:console.warn,error:console.error},rG={width:80,height:25};var rV=(e,{loggers:r,size:t}={})=>{let n=Object.assign({},rq,e),o=Object.assign({},rY,r),a=Object.assign({},rG,t),i=new rL(n,o),s=new rH(n,o,a),u=s.sendFn.bind(s);return{Dialog:i,GlkOte:s,send:u}},rX={};function rK({style:e,text:r}){let t=ew("span",{className:[rX.message,rX[e]].join(" "),children:r});return({grid:r?.length>0?ew("div",{children:r}):ew("br",{}),input:ew("span",{className:[rX.message,rX.input].join(" "),children:["> ",r]}),subheader:ew("strong",{className:[rX.message,rX.subheader].join(" "),children:r}),emphasized:ew("em",{className:[rX.message,rX.emphasized].join(" "),children:r}),scrollTarget:ew("div",{className:[rX.scrollTarget,e].join(" ")}),endOfLine:ew("br",{})})[e]||t}e(rX,"emphasized",function(){return _},function(e){return _=e}),e(rX,"input",function(){return y},function(e){return y=e}),e(rX,"message",function(){return E},function(e){return E=e}),e(rX,"scrollTarget",function(){return b},function(e){return b=e}),e(rX,"subheader",function(){return k},function(e){return k=e}),_="hBGgUq_emphasized",y="hBGgUq_input",E="hBGgUq_message",b="hBGgUq_scrollTarget",k="hBGgUq_subheader",S="PwGQsW_buffer",D="PwGQsW_gridBuffer";let r$={style:"endOfLine"},rJ={style:"scrollTarget"},rZ=e=>e.height<5,rQ=e=>e.length<1?e:">"===e.slice(-1)[0].text?e.slice(0,e.length-1):e,r0=(e,r)=>{let t=e.find(({id:e})=>e===r.id);if(!t)return{clear:!1,incoming:[rJ]};let{text:n}=t,o=n.map(({content:e})=>e?[...rQ(e),r$]:[r$]).reduce((e,r)=>e.concat(r),[rJ]);return{incoming:o,clear:!!rZ(r)||t.clear}};function r1({inbox:e,currentWindow:r}){let[t,n]=eR([]),o=eN(null);return eC(()=>{let{incoming:t,clear:a}=r0(e,r);n(e=>a?t:e.concat(t)),setTimeout(()=>{let e=o.current.querySelectorAll(`.${rJ.style}`),r=e[e.length-1];r?r.scrollIntoView():o.current.scrollTo({top:o.current.scrollHeight,behavior:"smooth"})},0)},[r,e]),ew("section",{tabindex:"0",ref:o,className:[S,rZ(r)?D:"PwGQsW_textBuffer"].join(" "),children:t.map(rK)})}function r2({inbox:e,currentWindow:r}){let[t,n]=eR([]),[o,a]=eR([]);return eC(()=>{let o=e.find(({id:e})=>e===r.id),i=o?.lines??[],s=Array(r.gridheight).fill(null).map((e,r)=>r).map(e=>{let r=(e,r)=>e.find(({line:e})=>e===r);return r(i,e)||r(t,e)});((e,r)=>{let t=JSON.stringify;return t(e)!==t(r)})(s,t)&&n(s);let u=s.map(e=>e.content).flat().map(e=>({...e,text:e.text.trim()})),l=u.map(({text:e})=>e.length).every(e=>0===e),c=({style:e})=>["alert","normal"].includes(e)?"grid":e||"grid",d=u.map(e=>({style:c(e),text:e.text.replace(" "," / ")}));a(l?[]:d)},[e,r,t]),ew("section",{className:[S,D].join(" "),children:o.map(rK)})}function r4({onClick:e}){return ew("button",{"aria-label":"Menu",className:"gUkI1a_menuButton",onClick:e,children:ew("svg",{class:"gUkI1a_menuIcon",viewBox:"0 0 28 32",xmlns:"http://www.w3.org/2000/svg",children:[ew("rect",{x:"12",y:"4",width:"4",height:"4"}),ew("rect",{x:"12",y:"14",width:"4",height:"4"}),ew("rect",{x:"12",y:"24",width:"4",height:"4"})]})})}let r6={KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_END:35,KEY_HOME:36,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40},r3={[r6.KEY_BACKSPACE]:"delete",[r6.KEY_TAB]:"tab",[r6.KEY_RETURN]:"return",[r6.KEY_ESC]:"escape",[r6.KEY_PAGEUP]:"pageup",[r6.KEY_PAGEDOWN]:"pagedown",[r6.KEY_END]:"end",[r6.KEY_HOME]:"home",[r6.KEY_LEFT]:"left",[r6.KEY_UP]:"up",[r6.KEY_RIGHT]:"right",[r6.KEY_DOWN]:"down"},r9=e=>{let r=[e.altKey,e.ctrlKey,e.metaKey,e.shiftKey];return r.some(e=>!0===e)};function r8({inputType:e,windows:r,currentWindowId:t,sendMessage:n,onFullscreenRequest:o,setMenuOpen:a}){let[i,s]=eR(null),[u,l]=eR(""),[c,d]=eR(""),f=eN(null);eC(()=>{let e=()=>{f.current&&f.current.focus()};return l(""),e(),document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[e]),eC(()=>{s(r.find(({id:e})=>e===t))},[t,r]);let m=r=>{n(r,e,i),d(r),l("")},h=e=>{if(r9(e))return;e.preventDefault();let r=r3[e.keyCode]||e.key;m(r)},p=e=>setTimeout(()=>{m(e.target.value.slice(-1).toUpperCase()),l("")});return ew("section",{className:"LdLucW_inputControls",children:[ew("input",{...{char:{maxlength:"1",placeholder:"Press any key here",onKeyDown:e=>(229===e.keyCode?p:h)(e)},line:{placeholder:" > ",onKeyDown:({keyCode:e})=>{e===r6.KEY_UP&&(l(c),setTimeout(()=>{let e=c.length;f.current.setSelectionRange(e,e)},0)),e===r6.KEY_DOWN&&l("")},onKeyPress:({keyCode:e,target:{value:r}})=>{e===r6.KEY_RETURN&&m(r)}},finished:{placeholder:"The program has finished",disabled:!0}}[e],className:"LdLucW_inputBox",ref:f,value:u,autofocus:!0,autocomplete:"off",spellCheck:"false",autocapitalize:"off",autocorrect:"off",onDblClick:o,onInput:({target:{value:e}})=>l(e),type:"search"}),ew(r4,{onClick:()=>a(!0)})]})}F="zi213q_status";let r5=e=>ew("div",{className:[F].join(" "),children:[ew("h1",{children:"Error"}),e.map(e=>ew("p",{children:e},e)),ew("hr",{}),ew(rt,{href:"/",children:"Home"}),"|",ew("a",{target:"_blank",rel:"noopener noreferrer",href:"https://github.com/He4eT/elseifplayer/issues",children:"Report bug"})]}),r7=e=>ew("div",{className:[F,"zi213q_loading"].join(" "),children:e.map(e=>ew("div",{children:e},e))});var te=({stage:e,details:r})=>({fail:r5,loading:r7})[e](r);let tr={},tt={};["ҠҿԀԟڀڿݠޟ߀ߟကဟႠႿᄀᅟᆀᆟᇠሿበቿዠዿጠጿᎠᏟᐠᙟᚠᛟកសᠠᡟᣀᣟᦀᦟ᧠᧿ᨠᨿᯀᯟᰀᰟᴀᴟ⇠⇿⋀⋟⍀⏟␀␟─❟➀➿⠀⥿⦠⦿⨠⩟⪀⪿⫠⭟ⰀⰟⲀⳟⴀⴟⵀⵟ⺠⻟㇀㇟㐀䶟䷀龿ꀀꑿ꒠꒿ꔀꗿꙀꙟꚠꛟ꜀ꝟꞀꞟꡀꡟ","ƀƟɀʟ"].forEach((e,r)=>{let t=[];e.match(/../gu).forEach(e=>{let r=e.codePointAt(0),n=e.codePointAt(1);for(let e=r;e<=n;e++)t.push(String.fromCodePoint(e))});let n=15-8*r;tr[n]=t,t.forEach((e,r)=>{tt[e]=[n,r]})});let tn=e=>{let r=e.length,t="",n=0,o=0;for(let a=0;a=0;e--){let a=r>>e&1;n=(n<<1)+a,15==++o&&(t+=tr[o][n],n=0,o=0)}}if(0!==o){for(;!(o in tr);)n=(n<<1)+1,o++;t+=tr[o][n]}return t},to=e=>{let r=e.length,t=new Uint8Array(Math.floor(15*r/8)),n=0,o=0,a=0;for(let i=0;i=0;e--){let r=l>>e&1;o=(o<<1)+r,8==++a&&(t[n]=o,n++,o=0,a=0)}}if(o!==(1<({onInit:()=>{e({stage:"ready"})},onUpdateWindows:e=>{r(e)},onUpdateInputs:e=>{if(0===e.length)return null;let{type:r,id:o}=e[0];t(o),n(r)},onUpdateContent:e=>{o(e)},onDisable:()=>{n(null)},onFileNameRequest:(e,r,t,n)=>{n({usage:r,filename:prompt("Enter the filename")})},onFileRead:({filename:e})=>{let r=localStorage.getItem(`fake-fs/${e}`);return to(r)},onFileWrite:({filename:e},r)=>{localStorage.setItem(`fake-fs/${e}`,tn(r))},onExit:()=>{n("finished")}}),ti=e=>r=>{"ExitStatus"===r.reason.name||"Program terminated with exit(0)"===r.reason.message?e():console.error("Unhandled rejection (promise: ",r.promise,", reason: ",r.reason,")."),r.preventDefault()},ts={stage:"loading",details:["Preparing"]},tu=({engine:e,wasmBinary:r,storyfile:t,handlers:n})=>{let{Dialog:o,GlkOte:a,send:i}=rV(n),s=new e;return s.init(t,{Dialog:o,GlkOte:a,Glk:{},wasmBinary:r,arguments:["storyfile"]}),s.start(),{send:i,instance:s}};function tl({vmParts:{storyfile:e,engine:r,wasmBinary:t},onFullscreenRequest:n,setMenuOpen:o,singleWindow:a}){let[i,s]=eR(ts),[u,l]=eR([]),[c,d]=eR(null),[f,m]=eR(null),[h,p]=eR([]),[v,w]=eR(null),[g,_]=eR(null);return eC(()=>{let n=ta({setStatus:s,setWindows:l,setCurrentWindowId:d,setInputType:m,setInbox:p});w(tu({engine:r,wasmBinary:t,storyfile:e,handlers:n}));let o=ti(n.onExit);return window.addEventListener("unhandledrejection",o),()=>{w(null),window.removeEventListener("unhandledrejection",o)}},[e,r,t]),eC(()=>(_(()=>v?v.send:null),()=>_(null)),[v]),"ready"!==i.stage?ew(te,{...i}):ew("section",{className:"PwGQsW_elseifplayer",children:[ew("section",{className:"PwGQsW_output",children:u.sort((e,r)=>e.top-r.top).filter(a?({id:e})=>e===c:()=>!0).map(e=>{let r={inbox:h,currentWindow:e};return({buffer:ew(r1,{...r}),grid:ew(r2,{...r})})[e.type]})}),ew(r8,{inputType:f,windows:u,currentWindowId:c,sendMessage:g,onFullscreenRequest:n,setMenuOpen:o})]})}let tc={stage:"loading",details:["Loading"]},td=({url:e,setStatus:r,setParts:t})=>{let n=(e,t)=>n=>(r({stage:e,details:[t]}),n),o=e=>fetch(e).then(e=>e.arrayBuffer());return Promise.resolve(e).then(n("loading","Downloading file")).then(e=>e.startsWith("blob:")?e.replace(/#(.*)$/g,""):e).then(fetch).then(e=>{if(e.ok)return e;throw Error(e.statusText)}).then(n("loading","Processing file")).then(e=>e.arrayBuffer()).then(e=>new Uint8Array(e)).then(n("loading","Downloading engine")).then(r=>{let t=rI(e);return[r,t.engine,t.wasmBinaryName]}).then(([e,r,t])=>Promise.all([e,r,o(t)])).then(([e,r,n])=>t({storyfile:e,engine:r,wasmBinary:n})).then(n("loading","Running")).catch(t=>{console.error(t),r({stage:"fail",details:[t.message,e]})})};function tf({url:e,singleWindow:r,onFullscreenRequest:t,setMenuOpen:n}){let[o,a]=eR(tc),[i,s]=eR(null);return eC(()=>(a(tc),s(null),td({url:e,setStatus:a,setParts:s}),()=>s(null)),[e]),i?ew(tl,{vmParts:i,onFullscreenRequest:t,setMenuOpen:n,singleWindow:r}):ew(te,{...o})}function tm({themeEngine:e,onFullscreenRequest:r,menuOpen:t,setMenuOpen:n}){let o=eN(null);return eC(()=>{let e=o.current.open;t&&!e&&o.current.showModal(),!t&&e&&o.current.close()},[t]),eC(()=>{let e=o.current,r=()=>{n(!1)};return e.addEventListener("close",r),()=>e.removeEventListener("close",r)},[o,n]),ew("dialog",{ref:o,className:"J9zJZG_menu",children:ew("section",{children:[ew("div",{children:ew("button",{tabIndex:0,onClick:()=>o.current.close(),children:"Close this menu"})}),ew("div",{className:"J9zJZG_appearance",children:[ew("button",{onClick:()=>{o.current.close(),r()},children:"Full screen"}),ew("button",{onClick:()=>e.setRandomTheme(),children:"Set a random theme"}),ew("label",{children:["Current theme:",ew(rw,{themeEngine:e})]})]}),ew("div",{className:"J9zJZG_navigation",children:ew(rt,{href:"/",tabIndex:0,children:"ElseIfPlayer"})})]})})}let th=e=>decodeURIComponent(e);function tp({theme:e,themeEngine:r,encodedUrl:t,singleWindow:n}){eC(()=>{r.setTheme(e)},[e,r]);let[o,a]=eR(th(t));eC(()=>{a(th(t))},[t]);let[i,s]=eR(!1),u=()=>{document.documentElement.requestFullscreen()};return ew("main",{children:[ew(tm,{themeEngine:r,onFullscreenRequest:u,menuOpen:i,setMenuOpen:s}),ew(tf,{url:o,onFullscreenRequest:u,setMenuOpen:s,singleWindow:n})]})}function tv(){return ew("main",{children:ew(te,{stage:"fail",details:["404","Page Not Found"]})})}var tw={};e(tw,"app",function(){return M},function(e){return M=e}),e(tw,"focus",function(){return A},function(e){return A=e}),e(tw,"games",function(){return P},function(e){return P=e}),e(tw,"home",function(){return x},function(e){return x=e}),e(tw,"play",function(){return R},function(e){return R=e}),e(tw,"themes",function(){return C},function(e){return C=e}),M="X8uEDW_app",A="X8uEDW_focus",P="X8uEDW_games",x="X8uEDW_home",R="X8uEDW_play",C="X8uEDW_themes",u=ew(function(){let e=rh(),[r]=ru(),t=(e,r)=>function(t){return ew(tp,{themeEngine:e,singleWindow:r,...t})};return ew(re,{hook:ru,children:ew("div",{className:[tw.app,tw[rs(r)],e.currentTheme].join(" "),children:ew(ro,{children:[ew(rr,{path:"/",children:ew(rg,{themeEngine:e})}),ew(rr,{path:"/games/",children:ew(rb,{})}),ew(rr,{path:"/themes/",children:ew(rS,{themeEngine:e})}),ew(rr,{path:"/play/:encodedUrl",children:t(e,!1)}),ew(rr,{path:"/play/:encodedUrl/:theme",children:t(e,!1)}),ew(rr,{path:"/focus/:encodedUrl",children:t(e,!0)}),ew(rr,{path:"/focus/:encodedUrl/:theme",children:t(e,!0)}),ew(rr,{children:ew(tv,{})})]})})})},{}),l=document.getElementById("root"),O.__&&O.__(u,l),f=(d="function"==typeof c)?null:c&&c.__k||l.__k,m=[],ed(l,u=(!d&&c||l).__k=Z(ee,null,[u]),f||G,G,void 0!==l.ownerSVGElement,!d&&c?[c]:f?null:l.firstChild?j.call(l.childNodes):null,m,!d&&c?c:f?f.__e:l.firstChild,d),ef(m,u)}(); +//# sourceMappingURL=index.7852e909.js.map diff --git a/docs/index.7852e909.js.map b/docs/index.7852e909.js.map new file mode 100644 index 0000000..d08d3e6 --- /dev/null +++ b/docs/index.7852e909.js.map @@ -0,0 +1 @@ +{"mappings":"C,A,W,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,IUI4CuoD,EAGrC/hD,EkCLD,EGAA,EGAA,EGAA,EGAA,EzCYiBH,EAAO0+C,EAAWoD,EAMpC1C,EAOAZ,EAQAD,EsBlCL,EACA,EACA,EACA,EACA,E4BLA,EACA,EACA,EACA,EACA,ECJA,EAEA,EOCA,EMHA,EACA,EACA,EACA,EACA,EACA,E,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,Q,S,C,C,C,E,E,E,O,C,e,W,O,C,E,S,C,E,O,E,C,E9ELA,CAAA,aAEA,IAkCA,EAlCI,EAAY,CAAC,EAkCjB,EAjCA,SAA4B,CAAE,EAC5B,IAAI,EAAQ,CAAS,CAAC,EAAG,CAKzB,OAJK,IACH,EAAQ,AAKZ,WACE,GAAI,CACF,MAAM,AAAI,OACZ,CAAE,MAAO,EAAK,CACZ,IAAI,EAAU,AAAC,CAAA,GAAK,EAAI,KAAI,AAAJ,EAAO,KAAA,CAAM,oEACrC,GAAI,EAGF,MAMI,AAAA,CAAA,GANc,CAAO,CAAC,EAAE,AAMnB,EAAK,OAAA,CAAQ,0EAA2E,MAAQ,GAJ7G,CACA,MAAO,GACT,IAhBI,CAAS,CAAC,EAAG,CAAG,GAEX,CACT,C,GKkBar7C,IAAAA,ECjBPmQ,ECRF0pC,EA6FSI,EC4ETC,EAWAC,EAEEC,EA0BAC,ECjNK9iD,ECFE+iD,EAAY,CAAlB,EACMC,EAAY,EAAA,CACZC,EACZ,oELDYl/C,EAAUD,MAAMC,OA0BhB0E,CAjBN,SAAS0W,EAAOY,CAAAA,CAAKpb,CAAAA,EAE3B,IAAK,IAAI3E,KAAK2E,EAAOob,CAAAA,CAAI/f,EAAAA,CAAK2E,CAAAA,CAAM3E,EAAAA,CACpC,OAA6B+f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DACA,yDACD,CAMD,CACE,UACA,gDACA,qEACD,CACD,CAEE,WACA,gDACA,kEACD,CACD,CACE,iBACA,gDACA,gEACD,CAqBD,CACE,2BACA,gDACA,uFACD,CACD,CACE,UACA,gDACA,gEACD,CAMD,CACE,SACA,gDACA,oEACD,CACD,CACE,qBACA,+CACA,0GACD,CAgBD,CACE,QACA,gDACA,+DACD,CACD,CACE,UACA,gDACA,iEACD,CA0BD,CACE,eACA,gDACA,0EACD,CAMD,CACE,QACA,gDACA,+DACD,CAMD,CACE,WACA,gDACA,gEACD,CAqBD,CACE,4BACA,gDACA,4HACD,CAMD,CACE,aACA,gDACA,mGACD,CAMD,CACE,aACA,+CACA,wEACD,CACD,CACE,UACA,gDACA,qEACD,CAWD,CACE,WACA,gDACA,wDACD,CAMD,CACE,+BACA,gDACA,8DACD,CACD,CACE,YACA,gDACA,gEACD,CACD,CACE,qBACA,gDACA,gHACD,CAWD,CACE,eACA,gDACA,oEACD,CACD,CACE,cACA,gDACA,iEACD,CACD,CACE,oBACA,+CACA,2DACD,CACD,CACE,iBACA,gDACA,yGACD,CAMD,CACE,UACA,gDACA,wEACD,CACD,CACE,aACA,gDACA,gEACD,CAgBD,CACE,sBACA,gDACA,6FACD,CAMD,CACE,eACA,gDACA,oEACD,CACD,CACE,WACA,gDACA,sEACD,CACD,CACE,YACA,gDACA,kEACD,CAWD,CACE,YACA,gDACA,+DACD,CACF,CAAC,GAAA,CAAI,CAAC,CAAC,EAAM,EAAM,EAAI,GAAM,CAAA,CAAE,KAAA,EAAM,KAAA,EAAM,IAAA,CAAI,CAAA,GF/UhD,IAAM,GAAe,CACnB,KAAM,gBACN,KAAM,gDACN,IAAK,kEACP,EAEe,SAAA,KACb,OACE,AAAA,GAAC,OADH,CACQ,UGjBgB,e,S,CHkBpB,AAAA,GAAC,KAAD,C,S,CACE,AAAA,GAAC,IAAD,CACE,OAAO,SACP,IAAI,sBACJ,KAAK,oBACL,MAAM,mCAAmC,SAAA,M,GAEvC,S,A,GAGN,AAAA,GAAC,IAAD,C,S,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","sources":["","node_modules/@parcel/runtime-js/lib/helpers/bundle-url.js","src/index.js","node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","node_modules/preact/jsx-runtime/src/index.js","node_modules/preact/dist/preact.module.js","node_modules/preact/src/util.js","node_modules/preact/src/options.js","node_modules/preact/src/create-element.js","node_modules/preact/src/component.js","node_modules/preact/src/create-context.js","node_modules/preact/src/constants.js","node_modules/preact/src/diff/children.js","node_modules/preact/src/diff/props.js","node_modules/preact/src/diff/index.js","node_modules/preact/src/render.js","node_modules/preact/src/clone-element.js","node_modules/preact/src/diff/catch-error.js","src/App.jsx","node_modules/wouter-preact/index.js","node_modules/wouter-preact/use-location.js","node_modules/wouter-preact/react-deps.js","node_modules/preact/hooks/dist/hooks.module.js","node_modules/preact/hooks/src/index.js","node_modules/wouter-preact/matcher.js","src/routing.js","src/themes/themes.js","src/themes/themeList.js","src/views/HomeView/HomeView.jsx","src/components/FileSelector/LocalFileSelector.jsx","src/components/FileSelector/TargetURLSelector.jsx","src/components/ThemeSelector/ThemeSelector.jsx","src/views/GamesView/GamesView.jsx","src/components/GameEntry/GameEntry.jsx","src/views/GamesView/top2019.js","src/views/GamesView/GamesView.module.scss","src/views/ThemesView/ThemesView.jsx","src/views/ThemesView/ThemesView.module.scss","src/views/PlayerView/PlayerView.jsx","src/components/Player/UrlPlayer.jsx","src/components/Player/common/engines.js","node_modules/emglken/src/bocfel.js","node_modules/emglken/src/vm.js","node_modules/emglken/src/emglkenfs.js","node_modules/emglken/build/bocfel-core.js","node_modules/@parcel/runtime-js/lib/runtime-d3df2521c7727359.js","node_modules/emglken/src/git.js","node_modules/emglken/build/git-core.js","node_modules/@parcel/runtime-js/lib/runtime-d225d79aaa7b44b1.js","node_modules/emglken/src/hugo.js","node_modules/emglken/build/hugo-core.js","node_modules/@parcel/runtime-js/lib/runtime-20e43a55da5cc90b.js","node_modules/emglken/src/tads.js","node_modules/emglken/build/tads-core.js","node_modules/@parcel/runtime-js/lib/runtime-27a61f7cd13853ca.js","node_modules/emglken/src/scare.js","node_modules/emglken/build/scare-core.js","node_modules/@parcel/runtime-js/lib/runtime-74f09c50e3ceff34.js","src/components/Player/Player.jsx","node_modules/cheap-glkote/src/index.js","node_modules/cheap-glkote/src/fakeDialog.js","node_modules/cheap-glkote/src/cheapGlkOte.js","node_modules/cheap-glkote/src/glkOte/glkote-term.js","src/components/Player/OutputBox/TextBuffer/TextBuffer.jsx","src/components/Player/OutputBox/TextMessage/TextMessage.jsx","src/components/Player/OutputBox/TextMessage/TextMessage.module.scss","src/components/Player/Player.module.scss","src/components/Player/OutputBox/GridBuffer/GridBuffer.jsx","src/components/Player/InputBox/InputBox.jsx","src/components/Player/InputBox/MenuButton/MenuButton.jsx","src/components/Player/InputBox/MenuButton/MenuButton.module.scss","src/components/Player/InputBox/InputBox.module.scss","src/components/Player/Status/Status.jsx","src/components/Player/Status/Status.module.scss","src/components/Player/common/playerHandlers.js","node_modules/base32768/src/index.js","src/components/Player/MenuOverlay/MenuOverlay.jsx","src/components/Player/MenuOverlay/MenuOverlay.module.scss","src/views/NotFoundView/NotFoundView.jsx","src/style/App.module.scss"],"sourcesContent":["(function () {\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $parcel$global =\ntypeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire847f\"];\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire847f\"] = parcelRequire;\n}\nparcelRequire.register(\"6kBsm\", function(module, exports) {\n\n$parcel$export(module.exports, \"getBundleURL\", function () { return $49c1aa6c5541520f$export$bdfd709ae4826697; }, function (v) { return $49c1aa6c5541520f$export$bdfd709ae4826697 = v; });\nvar $49c1aa6c5541520f$export$bdfd709ae4826697;\nvar $49c1aa6c5541520f$export$c9e73fbda7da57b6;\nvar $49c1aa6c5541520f$export$5a759dc7a1cfb72a;\n\"use strict\";\nvar $49c1aa6c5541520f$var$bundleURL = {};\nfunction $49c1aa6c5541520f$var$getBundleURLCached(id) {\n var value = $49c1aa6c5541520f$var$bundleURL[id];\n if (!value) {\n value = $49c1aa6c5541520f$var$getBundleURL();\n $49c1aa6c5541520f$var$bundleURL[id] = value;\n }\n return value;\n}\nfunction $49c1aa6c5541520f$var$getBundleURL() {\n try {\n throw new Error();\n } catch (err) {\n var matches = (\"\" + err.stack).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^)\\n]+/g);\n if (matches) // The first two stack frames will be this function and getBundleURLCached.\n // Use the 3rd one, which will be a runtime in the original bundle.\n return $49c1aa6c5541520f$var$getBaseURL(matches[2]);\n }\n return \"/\";\n}\nfunction $49c1aa6c5541520f$var$getBaseURL(url) {\n return (\"\" + url).replace(/^((?:https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/.+)\\/[^/]+$/, \"$1\") + \"/\";\n}\n// TODO: Replace uses with `new URL(url).origin` when ie11 is no longer supported.\nfunction $49c1aa6c5541520f$var$getOrigin(url) {\n var matches = (\"\" + url).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^/]+/);\n if (!matches) throw new Error(\"Origin not found\");\n return matches[0];\n}\n$49c1aa6c5541520f$export$bdfd709ae4826697 = $49c1aa6c5541520f$var$getBundleURLCached;\n$49c1aa6c5541520f$export$c9e73fbda7da57b6 = $49c1aa6c5541520f$var$getBaseURL;\n$49c1aa6c5541520f$export$5a759dc7a1cfb72a = $49c1aa6c5541520f$var$getOrigin;\n\n});\n\nvar $551174e99d8c5924$var$n, $551174e99d8c5924$export$41c562ebe57d11e2, $551174e99d8c5924$var$u, $551174e99d8c5924$export$a8257692ac88316c, $551174e99d8c5924$var$t, $551174e99d8c5924$var$o, $551174e99d8c5924$var$r, $551174e99d8c5924$var$f, $551174e99d8c5924$var$e, $551174e99d8c5924$var$c = {}, $551174e99d8c5924$var$s = [], $551174e99d8c5924$var$a = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i, $551174e99d8c5924$var$v = Array.isArray;\nfunction $551174e99d8c5924$var$h(n, l) {\n for(var u in l)n[u] = l[u];\n return n;\n}\nfunction $551174e99d8c5924$var$p(n) {\n var l = n.parentNode;\n l && l.removeChild(n);\n}\nfunction $551174e99d8c5924$export$c8a8987d4410bf2d(l, u, i) {\n var t, o, r, f = {};\n for(r in u)\"key\" == r ? t = u[r] : \"ref\" == r ? o = u[r] : f[r] = u[r];\n if (arguments.length > 2 && (f.children = arguments.length > 3 ? $551174e99d8c5924$var$n.call(arguments, 2) : i), \"function\" == typeof l && null != l.defaultProps) for(r in l.defaultProps)void 0 === f[r] && (f[r] = l.defaultProps[r]);\n return $551174e99d8c5924$var$d(l, f, t, o, null);\n}\nfunction $551174e99d8c5924$var$d(n, i, t, o, r) {\n var f = {\n type: n,\n props: i,\n key: t,\n ref: o,\n __k: null,\n __: null,\n __b: 0,\n __e: null,\n __d: void 0,\n __c: null,\n __h: null,\n constructor: void 0,\n __v: null == r ? ++$551174e99d8c5924$var$u : r\n };\n return null == r && null != $551174e99d8c5924$export$41c562ebe57d11e2.vnode && $551174e99d8c5924$export$41c562ebe57d11e2.vnode(f), f;\n}\nfunction $551174e99d8c5924$export$7d1e3a5e95ceca43() {\n return {\n current: null\n };\n}\nfunction $551174e99d8c5924$export$ffb0004e005737fa(n) {\n return n.children;\n}\nfunction $551174e99d8c5924$export$16fa2f45be04daa8(n, l) {\n this.props = n, this.context = l;\n}\nfunction $551174e99d8c5924$var$g(n, l) {\n if (null == l) return n.__ ? $551174e99d8c5924$var$g(n.__, n.__.__k.indexOf(n) + 1) : null;\n for(var u; l < n.__k.length; l++)if (null != (u = n.__k[l]) && null != u.__e) return u.__e;\n return \"function\" == typeof n.type ? $551174e99d8c5924$var$g(n) : null;\n}\nfunction $551174e99d8c5924$var$m(n) {\n var l, u;\n if (null != (n = n.__) && null != n.__c) {\n for(n.__e = n.__c.base = null, l = 0; l < n.__k.length; l++)if (null != (u = n.__k[l]) && null != u.__e) {\n n.__e = n.__c.base = u.__e;\n break;\n }\n return $551174e99d8c5924$var$m(n);\n }\n}\nfunction $551174e99d8c5924$var$w(n) {\n (!n.__d && (n.__d = !0) && $551174e99d8c5924$var$t.push(n) && !$551174e99d8c5924$var$x.__r++ || $551174e99d8c5924$var$o !== $551174e99d8c5924$export$41c562ebe57d11e2.debounceRendering) && (($551174e99d8c5924$var$o = $551174e99d8c5924$export$41c562ebe57d11e2.debounceRendering) || $551174e99d8c5924$var$r)($551174e99d8c5924$var$x);\n}\nfunction $551174e99d8c5924$var$x() {\n var n, l, u, i, o, r, e, c;\n for($551174e99d8c5924$var$t.sort($551174e99d8c5924$var$f); n = $551174e99d8c5924$var$t.shift();)n.__d && (l = $551174e99d8c5924$var$t.length, i = void 0, o = void 0, e = (r = (u = n).__v).__e, (c = u.__P) && (i = [], (o = $551174e99d8c5924$var$h({}, r)).__v = r.__v + 1, $551174e99d8c5924$var$L(c, r, o, u.__n, void 0 !== c.ownerSVGElement, null != r.__h ? [\n e\n ] : null, i, null == e ? $551174e99d8c5924$var$g(r) : e, r.__h), $551174e99d8c5924$var$M(i, r), r.__e != e && $551174e99d8c5924$var$m(r)), $551174e99d8c5924$var$t.length > l && $551174e99d8c5924$var$t.sort($551174e99d8c5924$var$f));\n $551174e99d8c5924$var$x.__r = 0;\n}\nfunction $551174e99d8c5924$var$P(n, l, u, i, t, o, r, f, e, a) {\n var h, p, y, _, b, m, w, x = i && i.__k || $551174e99d8c5924$var$s, P = x.length;\n for(u.__k = [], h = 0; h < l.length; h++)if (null != (_ = u.__k[h] = null == (_ = l[h]) || \"boolean\" == typeof _ || \"function\" == typeof _ ? null : \"string\" == typeof _ || \"number\" == typeof _ || \"bigint\" == typeof _ ? $551174e99d8c5924$var$d(null, _, null, null, _) : $551174e99d8c5924$var$v(_) ? $551174e99d8c5924$var$d($551174e99d8c5924$export$ffb0004e005737fa, {\n children: _\n }, null, null, null) : _.__b > 0 ? $551174e99d8c5924$var$d(_.type, _.props, _.key, _.ref ? _.ref : null, _.__v) : _)) {\n if (_.__ = u, _.__b = u.__b + 1, null === (y = x[h]) || y && _.key == y.key && _.type === y.type) x[h] = void 0;\n else for(p = 0; p < P; p++){\n if ((y = x[p]) && _.key == y.key && _.type === y.type) {\n x[p] = void 0;\n break;\n }\n y = null;\n }\n $551174e99d8c5924$var$L(n, _, y = y || $551174e99d8c5924$var$c, t, o, r, f, e, a), b = _.__e, (p = _.ref) && y.ref != p && (w || (w = []), y.ref && w.push(y.ref, null, _), w.push(p, _.__c || b, _)), null != b ? (null == m && (m = b), \"function\" == typeof _.type && _.__k === y.__k ? _.__d = e = $551174e99d8c5924$var$C(_, e, n) : e = $551174e99d8c5924$var$$(n, _, y, x, b, e), \"function\" == typeof u.type && (u.__d = e)) : e && y.__e == e && e.parentNode != n && (e = $551174e99d8c5924$var$g(y));\n }\n for(u.__e = m, h = P; h--;)null != x[h] && (\"function\" == typeof u.type && null != x[h].__e && x[h].__e == u.__d && (u.__d = $551174e99d8c5924$var$A(i).nextSibling), $551174e99d8c5924$var$q(x[h], x[h]));\n if (w) for(h = 0; h < w.length; h++)$551174e99d8c5924$var$O(w[h], w[++h], w[++h]);\n}\nfunction $551174e99d8c5924$var$C(n, l, u) {\n for(var i, t = n.__k, o = 0; t && o < t.length; o++)(i = t[o]) && (i.__ = n, l = \"function\" == typeof i.type ? $551174e99d8c5924$var$C(i, l, u) : $551174e99d8c5924$var$$(u, i, i, t, i.__e, l));\n return l;\n}\nfunction $551174e99d8c5924$export$47e4c5b300681277(n, l) {\n return l = l || [], null == n || \"boolean\" == typeof n || ($551174e99d8c5924$var$v(n) ? n.some(function(n) {\n $551174e99d8c5924$export$47e4c5b300681277(n, l);\n }) : l.push(n)), l;\n}\nfunction $551174e99d8c5924$var$$(n, l, u, i, t, o) {\n var r, f, e;\n if (void 0 !== l.__d) r = l.__d, l.__d = void 0;\n else if (null == u || t != o || null == t.parentNode) n: if (null == o || o.parentNode !== n) n.appendChild(t), r = null;\n else {\n for(f = o, e = 0; (f = f.nextSibling) && e < i.length; e += 1)if (f == t) break n;\n n.insertBefore(t, o), r = o;\n }\n return void 0 !== r ? r : t.nextSibling;\n}\nfunction $551174e99d8c5924$var$A(n) {\n var l, u, i;\n if (null == n.type || \"string\" == typeof n.type) return n.__e;\n if (n.__k) {\n for(l = n.__k.length - 1; l >= 0; l--)if ((u = n.__k[l]) && (i = $551174e99d8c5924$var$A(u))) return i;\n }\n return null;\n}\nfunction $551174e99d8c5924$var$H(n, l, u, i, t) {\n var o;\n for(o in u)\"children\" === o || \"key\" === o || o in l || $551174e99d8c5924$var$T(n, o, null, u[o], i);\n for(o in l)t && \"function\" != typeof l[o] || \"children\" === o || \"key\" === o || \"value\" === o || \"checked\" === o || u[o] === l[o] || $551174e99d8c5924$var$T(n, o, l[o], u[o], i);\n}\nfunction $551174e99d8c5924$var$I(n, l, u) {\n \"-\" === l[0] ? n.setProperty(l, null == u ? \"\" : u) : n[l] = null == u ? \"\" : \"number\" != typeof u || $551174e99d8c5924$var$a.test(l) ? u : u + \"px\";\n}\nfunction $551174e99d8c5924$var$T(n, l, u, i, t) {\n var o;\n n: if (\"style\" === l) {\n if (\"string\" == typeof u) n.style.cssText = u;\n else {\n if (\"string\" == typeof i && (n.style.cssText = i = \"\"), i) for(l in i)u && l in u || $551174e99d8c5924$var$I(n.style, l, \"\");\n if (u) for(l in u)i && u[l] === i[l] || $551174e99d8c5924$var$I(n.style, l, u[l]);\n }\n } else if (\"o\" === l[0] && \"n\" === l[1]) o = l !== (l = l.replace(/Capture$/, \"\")), l = l.toLowerCase() in n ? l.toLowerCase().slice(2) : l.slice(2), n.l || (n.l = {}), n.l[l + o] = u, u ? i || n.addEventListener(l, o ? $551174e99d8c5924$var$z : $551174e99d8c5924$var$j, o) : n.removeEventListener(l, o ? $551174e99d8c5924$var$z : $551174e99d8c5924$var$j, o);\n else if (\"dangerouslySetInnerHTML\" !== l) {\n if (t) l = l.replace(/xlink(H|:h)/, \"h\").replace(/sName$/, \"s\");\n else if (\"width\" !== l && \"height\" !== l && \"href\" !== l && \"list\" !== l && \"form\" !== l && \"tabIndex\" !== l && \"download\" !== l && \"rowSpan\" !== l && \"colSpan\" !== l && l in n) try {\n n[l] = null == u ? \"\" : u;\n break n;\n } catch (n) {}\n \"function\" == typeof u || (null == u || !1 === u && \"-\" !== l[4] ? n.removeAttribute(l) : n.setAttribute(l, u));\n }\n}\nfunction $551174e99d8c5924$var$j(n) {\n return this.l[n.type + !1]($551174e99d8c5924$export$41c562ebe57d11e2.event ? $551174e99d8c5924$export$41c562ebe57d11e2.event(n) : n);\n}\nfunction $551174e99d8c5924$var$z(n) {\n return this.l[n.type + !0]($551174e99d8c5924$export$41c562ebe57d11e2.event ? $551174e99d8c5924$export$41c562ebe57d11e2.event(n) : n);\n}\nfunction $551174e99d8c5924$var$L(n, u, i, t, o, r, f, e, c) {\n var s, a, p, y, d, _, g, m, w, x, C, S, $, A, H, I = u.type;\n if (void 0 !== u.constructor) return null;\n null != i.__h && (c = i.__h, e = u.__e = i.__e, u.__h = null, r = [\n e\n ]), (s = $551174e99d8c5924$export$41c562ebe57d11e2.__b) && s(u);\n try {\n n: if (\"function\" == typeof I) {\n if (m = u.props, w = (s = I.contextType) && t[s.__c], x = s ? w ? w.props.value : s.__ : t, i.__c ? g = (a = u.__c = i.__c).__ = a.__E : (\"prototype\" in I && I.prototype.render ? u.__c = a = new I(m, x) : (u.__c = a = new $551174e99d8c5924$export$16fa2f45be04daa8(m, x), a.constructor = I, a.render = $551174e99d8c5924$var$B), w && w.sub(a), a.props = m, a.state || (a.state = {}), a.context = x, a.__n = t, p = a.__d = !0, a.__h = [], a._sb = []), null == a.__s && (a.__s = a.state), null != I.getDerivedStateFromProps && (a.__s == a.state && (a.__s = $551174e99d8c5924$var$h({}, a.__s)), $551174e99d8c5924$var$h(a.__s, I.getDerivedStateFromProps(m, a.__s))), y = a.props, d = a.state, a.__v = u, p) null == I.getDerivedStateFromProps && null != a.componentWillMount && a.componentWillMount(), null != a.componentDidMount && a.__h.push(a.componentDidMount);\n else {\n if (null == I.getDerivedStateFromProps && m !== y && null != a.componentWillReceiveProps && a.componentWillReceiveProps(m, x), !a.__e && null != a.shouldComponentUpdate && !1 === a.shouldComponentUpdate(m, a.__s, x) || u.__v === i.__v) {\n for(u.__v !== i.__v && (a.props = m, a.state = a.__s, a.__d = !1), a.__e = !1, u.__e = i.__e, u.__k = i.__k, u.__k.forEach(function(n) {\n n && (n.__ = u);\n }), C = 0; C < a._sb.length; C++)a.__h.push(a._sb[C]);\n a._sb = [], a.__h.length && f.push(a);\n break n;\n }\n null != a.componentWillUpdate && a.componentWillUpdate(m, a.__s, x), null != a.componentDidUpdate && a.__h.push(function() {\n a.componentDidUpdate(y, d, _);\n });\n }\n if (a.context = x, a.props = m, a.__P = n, S = $551174e99d8c5924$export$41c562ebe57d11e2.__r, $ = 0, \"prototype\" in I && I.prototype.render) {\n for(a.state = a.__s, a.__d = !1, S && S(u), s = a.render(a.props, a.state, a.context), A = 0; A < a._sb.length; A++)a.__h.push(a._sb[A]);\n a._sb = [];\n } else do a.__d = !1, S && S(u), s = a.render(a.props, a.state, a.context), a.state = a.__s;\n while (a.__d && ++$ < 25);\n a.state = a.__s, null != a.getChildContext && (t = $551174e99d8c5924$var$h($551174e99d8c5924$var$h({}, t), a.getChildContext())), p || null == a.getSnapshotBeforeUpdate || (_ = a.getSnapshotBeforeUpdate(y, d)), $551174e99d8c5924$var$P(n, $551174e99d8c5924$var$v(H = null != s && s.type === $551174e99d8c5924$export$ffb0004e005737fa && null == s.key ? s.props.children : s) ? H : [\n H\n ], u, i, t, o, r, f, e, c), a.base = u.__e, u.__h = null, a.__h.length && f.push(a), g && (a.__E = a.__ = null), a.__e = !1;\n } else null == r && u.__v === i.__v ? (u.__k = i.__k, u.__e = i.__e) : u.__e = $551174e99d8c5924$var$N(i.__e, u, i, t, o, r, f, c);\n (s = $551174e99d8c5924$export$41c562ebe57d11e2.diffed) && s(u);\n } catch (n) {\n u.__v = null, (c || null != r) && (u.__e = e, u.__h = !!c, r[r.indexOf(e)] = null), $551174e99d8c5924$export$41c562ebe57d11e2.__e(n, u, i);\n }\n}\nfunction $551174e99d8c5924$var$M(n, u) {\n $551174e99d8c5924$export$41c562ebe57d11e2.__c && $551174e99d8c5924$export$41c562ebe57d11e2.__c(u, n), n.some(function(u) {\n try {\n n = u.__h, u.__h = [], n.some(function(n) {\n n.call(u);\n });\n } catch (n) {\n $551174e99d8c5924$export$41c562ebe57d11e2.__e(n, u.__v);\n }\n });\n}\nfunction $551174e99d8c5924$var$N(l, u, i, t, o, r, f, e) {\n var s, a, h, y = i.props, d = u.props, _ = u.type, k = 0;\n if (\"svg\" === _ && (o = !0), null != r) {\n for(; k < r.length; k++)if ((s = r[k]) && \"setAttribute\" in s == !!_ && (_ ? s.localName === _ : 3 === s.nodeType)) {\n l = s, r[k] = null;\n break;\n }\n }\n if (null == l) {\n if (null === _) return document.createTextNode(d);\n l = o ? document.createElementNS(\"http://www.w3.org/2000/svg\", _) : document.createElement(_, d.is && d), r = null, e = !1;\n }\n if (null === _) y === d || e && l.data === d || (l.data = d);\n else {\n if (r = r && $551174e99d8c5924$var$n.call(l.childNodes), a = (y = i.props || $551174e99d8c5924$var$c).dangerouslySetInnerHTML, h = d.dangerouslySetInnerHTML, !e) {\n if (null != r) for(y = {}, k = 0; k < l.attributes.length; k++)y[l.attributes[k].name] = l.attributes[k].value;\n (h || a) && (h && (a && h.__html == a.__html || h.__html === l.innerHTML) || (l.innerHTML = h && h.__html || \"\"));\n }\n if ($551174e99d8c5924$var$H(l, d, y, o, e), h) u.__k = [];\n else if ($551174e99d8c5924$var$P(l, $551174e99d8c5924$var$v(k = u.props.children) ? k : [\n k\n ], u, i, t, o && \"foreignObject\" !== _, r, f, r ? r[0] : i.__k && $551174e99d8c5924$var$g(i, 0), e), null != r) for(k = r.length; k--;)null != r[k] && $551174e99d8c5924$var$p(r[k]);\n e || (\"value\" in d && void 0 !== (k = d.value) && (k !== l.value || \"progress\" === _ && !k || \"option\" === _ && k !== y.value) && $551174e99d8c5924$var$T(l, \"value\", k, y.value, !1), \"checked\" in d && void 0 !== (k = d.checked) && k !== l.checked && $551174e99d8c5924$var$T(l, \"checked\", k, y.checked, !1));\n }\n return l;\n}\nfunction $551174e99d8c5924$var$O(n, u, i) {\n try {\n \"function\" == typeof n ? n(u) : n.current = u;\n } catch (n) {\n $551174e99d8c5924$export$41c562ebe57d11e2.__e(n, i);\n }\n}\nfunction $551174e99d8c5924$var$q(n, u, i) {\n var t, o;\n if ($551174e99d8c5924$export$41c562ebe57d11e2.unmount && $551174e99d8c5924$export$41c562ebe57d11e2.unmount(n), (t = n.ref) && (t.current && t.current !== n.__e || $551174e99d8c5924$var$O(t, null, u)), null != (t = n.__c)) {\n if (t.componentWillUnmount) try {\n t.componentWillUnmount();\n } catch (n) {\n $551174e99d8c5924$export$41c562ebe57d11e2.__e(n, u);\n }\n t.base = t.__P = null, n.__c = void 0;\n }\n if (t = n.__k) for(o = 0; o < t.length; o++)t[o] && $551174e99d8c5924$var$q(t[o], u, i || \"function\" != typeof n.type);\n i || null == n.__e || $551174e99d8c5924$var$p(n.__e), n.__ = n.__e = n.__d = void 0;\n}\nfunction $551174e99d8c5924$var$B(n, l, u) {\n return this.constructor(n, u);\n}\nfunction $551174e99d8c5924$export$b3890eb0ae9dca99(u, i, t) {\n var o, r, f;\n $551174e99d8c5924$export$41c562ebe57d11e2.__ && $551174e99d8c5924$export$41c562ebe57d11e2.__(u, i), r = (o = \"function\" == typeof t) ? null : t && t.__k || i.__k, f = [], $551174e99d8c5924$var$L(i, u = (!o && t || i).__k = $551174e99d8c5924$export$c8a8987d4410bf2d($551174e99d8c5924$export$ffb0004e005737fa, null, [\n u\n ]), r || $551174e99d8c5924$var$c, $551174e99d8c5924$var$c, void 0 !== i.ownerSVGElement, !o && t ? [\n t\n ] : r ? null : i.firstChild ? $551174e99d8c5924$var$n.call(i.childNodes) : null, f, !o && t ? t : r ? r.__e : i.firstChild, o), $551174e99d8c5924$var$M(f, u);\n}\nfunction $551174e99d8c5924$export$fa8d919ba61d84db(n, l) {\n $551174e99d8c5924$export$b3890eb0ae9dca99(n, l, $551174e99d8c5924$export$fa8d919ba61d84db);\n}\nfunction $551174e99d8c5924$export$e530037191fcd5d7(l, u, i) {\n var t, o, r, f, e = $551174e99d8c5924$var$h({}, l.props);\n for(r in l.type && l.type.defaultProps && (f = l.type.defaultProps), u)\"key\" == r ? t = u[r] : \"ref\" == r ? o = u[r] : e[r] = void 0 === u[r] && void 0 !== f ? f[r] : u[r];\n return arguments.length > 2 && (e.children = arguments.length > 3 ? $551174e99d8c5924$var$n.call(arguments, 2) : i), $551174e99d8c5924$var$d(l.type, e, t || l.key, o || l.ref, null);\n}\nfunction $551174e99d8c5924$export$fd42f52fd3ae1109(n, l) {\n var u = {\n __c: l = \"__cC\" + $551174e99d8c5924$var$e++,\n __: n,\n Consumer: function(n, l) {\n return n.children(l);\n },\n Provider: function(n) {\n var u, i;\n return this.getChildContext || (u = [], (i = {})[l] = this, this.getChildContext = function() {\n return i;\n }, this.shouldComponentUpdate = function(n) {\n this.props.value !== n.value && u.some(function(n) {\n n.__e = !0, $551174e99d8c5924$var$w(n);\n });\n }, this.sub = function(n) {\n u.push(n);\n var l = n.componentWillUnmount;\n n.componentWillUnmount = function() {\n u.splice(u.indexOf(n), 1), l && l.call(n);\n };\n }), n.children;\n }\n };\n return u.Provider.__ = u.Consumer.contextType = u;\n}\n$551174e99d8c5924$var$n = $551174e99d8c5924$var$s.slice, $551174e99d8c5924$export$41c562ebe57d11e2 = {\n __e: function(n, l, u, i) {\n for(var t, o, r; l = l.__;)if ((t = l.__c) && !t.__) try {\n if ((o = t.constructor) && null != o.getDerivedStateFromError && (t.setState(o.getDerivedStateFromError(n)), r = t.__d), null != t.componentDidCatch && (t.componentDidCatch(n, i || {}), r = t.__d), r) return t.__E = t;\n } catch (l) {\n n = l;\n }\n throw n;\n }\n}, $551174e99d8c5924$var$u = 0, $551174e99d8c5924$export$a8257692ac88316c = function(n) {\n return null != n && void 0 === n.constructor;\n}, $551174e99d8c5924$export$16fa2f45be04daa8.prototype.setState = function(n, l) {\n var u;\n u = null != this.__s && this.__s !== this.state ? this.__s : this.__s = $551174e99d8c5924$var$h({}, this.state), \"function\" == typeof n && (n = n($551174e99d8c5924$var$h({}, u), this.props)), n && $551174e99d8c5924$var$h(u, n), null != n && this.__v && (l && this._sb.push(l), $551174e99d8c5924$var$w(this));\n}, $551174e99d8c5924$export$16fa2f45be04daa8.prototype.forceUpdate = function(n) {\n this.__v && (this.__e = !0, n && this.__h.push(n), $551174e99d8c5924$var$w(this));\n}, $551174e99d8c5924$export$16fa2f45be04daa8.prototype.render = $551174e99d8c5924$export$ffb0004e005737fa, $551174e99d8c5924$var$t = [], $551174e99d8c5924$var$r = \"function\" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, $551174e99d8c5924$var$f = function(n, l) {\n return n.__v.__b - l.__v.__b;\n}, $551174e99d8c5924$var$x.__r = 0, $551174e99d8c5924$var$e = 0;\n\n\nvar $8161a3c5d316e860$var$_ = 0;\nfunction $8161a3c5d316e860$export$34b9dba7ce09269b(o, e, n, t, f, l) {\n var s, u, a = {};\n for(u in e)\"ref\" == u ? s = e[u] : a[u] = e[u];\n var i = {\n type: o,\n props: a,\n key: n,\n ref: s,\n __k: null,\n __: null,\n __b: 0,\n __e: null,\n __d: void 0,\n __c: null,\n __h: null,\n constructor: void 0,\n __v: --$8161a3c5d316e860$var$_,\n __source: f,\n __self: l\n };\n if (\"function\" == typeof o && (s = o.defaultProps)) for(u in s)void 0 === a[u] && (a[u] = s[u]);\n return (0, $551174e99d8c5924$export$41c562ebe57d11e2).vnode && (0, $551174e99d8c5924$export$41c562ebe57d11e2).vnode(i), i;\n}\n\n\n\n\n\n\n\n\nvar $5c5fa90583e4b8e8$var$t, $5c5fa90583e4b8e8$var$r, $5c5fa90583e4b8e8$var$u, $5c5fa90583e4b8e8$var$i, $5c5fa90583e4b8e8$var$o = 0, $5c5fa90583e4b8e8$var$f = [], $5c5fa90583e4b8e8$var$c = [], $5c5fa90583e4b8e8$var$e = (0, $551174e99d8c5924$export$41c562ebe57d11e2).__b, $5c5fa90583e4b8e8$var$a = (0, $551174e99d8c5924$export$41c562ebe57d11e2).__r, $5c5fa90583e4b8e8$var$v = (0, $551174e99d8c5924$export$41c562ebe57d11e2).diffed, $5c5fa90583e4b8e8$var$l = (0, $551174e99d8c5924$export$41c562ebe57d11e2).__c, $5c5fa90583e4b8e8$var$m = (0, $551174e99d8c5924$export$41c562ebe57d11e2).unmount;\nfunction $5c5fa90583e4b8e8$var$d(t, u) {\n (0, $551174e99d8c5924$export$41c562ebe57d11e2).__h && (0, $551174e99d8c5924$export$41c562ebe57d11e2).__h($5c5fa90583e4b8e8$var$r, t, $5c5fa90583e4b8e8$var$o || u), $5c5fa90583e4b8e8$var$o = 0;\n var i = $5c5fa90583e4b8e8$var$r.__H || ($5c5fa90583e4b8e8$var$r.__H = {\n __: [],\n __h: []\n });\n return t >= i.__.length && i.__.push({\n __V: $5c5fa90583e4b8e8$var$c\n }), i.__[t];\n}\nfunction $5c5fa90583e4b8e8$export$60241385465d0a34(n) {\n return $5c5fa90583e4b8e8$var$o = 1, $5c5fa90583e4b8e8$export$13e3392192263954($5c5fa90583e4b8e8$var$B, n);\n}\nfunction $5c5fa90583e4b8e8$export$13e3392192263954(n, u, i) {\n var o = $5c5fa90583e4b8e8$var$d($5c5fa90583e4b8e8$var$t++, 2);\n if (o.t = n, !o.__c && (o.__ = [\n i ? i(u) : $5c5fa90583e4b8e8$var$B(void 0, u),\n function(n) {\n var t = o.__N ? o.__N[0] : o.__[0], r = o.t(t, n);\n t !== r && (o.__N = [\n r,\n o.__[1]\n ], o.__c.setState({}));\n }\n ], o.__c = $5c5fa90583e4b8e8$var$r, !$5c5fa90583e4b8e8$var$r.u)) {\n var f = function(n, t, r) {\n if (!o.__c.__H) return !0;\n var u = o.__c.__H.__.filter(function(n) {\n return n.__c;\n });\n if (u.every(function(n) {\n return !n.__N;\n })) return !c || c.call(this, n, t, r);\n var i = !1;\n return u.forEach(function(n) {\n if (n.__N) {\n var t = n.__[0];\n n.__ = n.__N, n.__N = void 0, t !== n.__[0] && (i = !0);\n }\n }), !(!i && o.__c.props === n) && (!c || c.call(this, n, t, r));\n };\n $5c5fa90583e4b8e8$var$r.u = !0;\n var c = $5c5fa90583e4b8e8$var$r.shouldComponentUpdate, e = $5c5fa90583e4b8e8$var$r.componentWillUpdate;\n $5c5fa90583e4b8e8$var$r.componentWillUpdate = function(n, t, r) {\n if (this.__e) {\n var u = c;\n c = void 0, f(n, t, r), c = u;\n }\n e && e.call(this, n, t, r);\n }, $5c5fa90583e4b8e8$var$r.shouldComponentUpdate = f;\n }\n return o.__N || o.__;\n}\nfunction $5c5fa90583e4b8e8$export$6d9c69b0de29b591(u, i) {\n var o = $5c5fa90583e4b8e8$var$d($5c5fa90583e4b8e8$var$t++, 3);\n !(0, $551174e99d8c5924$export$41c562ebe57d11e2).__s && $5c5fa90583e4b8e8$var$z(o.__H, i) && (o.__ = u, o.i = i, $5c5fa90583e4b8e8$var$r.__H.__h.push(o));\n}\nfunction $5c5fa90583e4b8e8$export$e5c5a5f917a5871c(u, i) {\n var o = $5c5fa90583e4b8e8$var$d($5c5fa90583e4b8e8$var$t++, 4);\n !(0, $551174e99d8c5924$export$41c562ebe57d11e2).__s && $5c5fa90583e4b8e8$var$z(o.__H, i) && (o.__ = u, o.i = i, $5c5fa90583e4b8e8$var$r.__h.push(o));\n}\nfunction $5c5fa90583e4b8e8$export$b8f5890fc79d6aca(n) {\n return $5c5fa90583e4b8e8$var$o = 5, $5c5fa90583e4b8e8$export$1538c33de8887b59(function() {\n return {\n current: n\n };\n }, []);\n}\nfunction $5c5fa90583e4b8e8$export$d5a552a76deda3c2(n, t, r) {\n $5c5fa90583e4b8e8$var$o = 6, $5c5fa90583e4b8e8$export$e5c5a5f917a5871c(function() {\n return \"function\" == typeof n ? (n(t()), function() {\n return n(null);\n }) : n ? (n.current = t(), function() {\n return n.current = null;\n }) : void 0;\n }, null == r ? r : r.concat(n));\n}\nfunction $5c5fa90583e4b8e8$export$1538c33de8887b59(n, r) {\n var u = $5c5fa90583e4b8e8$var$d($5c5fa90583e4b8e8$var$t++, 7);\n return $5c5fa90583e4b8e8$var$z(u.__H, r) ? (u.__V = n(), u.i = r, u.__h = n, u.__V) : u.__;\n}\nfunction $5c5fa90583e4b8e8$export$35808ee640e87ca7(n, t) {\n return $5c5fa90583e4b8e8$var$o = 8, $5c5fa90583e4b8e8$export$1538c33de8887b59(function() {\n return n;\n }, t);\n}\nfunction $5c5fa90583e4b8e8$export$fae74005e78b1a27(n) {\n var u = $5c5fa90583e4b8e8$var$r.context[n.__c], i = $5c5fa90583e4b8e8$var$d($5c5fa90583e4b8e8$var$t++, 9);\n return i.c = n, u ? (null == i.__ && (i.__ = !0, u.sub($5c5fa90583e4b8e8$var$r)), u.props.value) : n.__;\n}\nfunction $5c5fa90583e4b8e8$export$dc8fbce3eb94dc1e(t, r) {\n (0, $551174e99d8c5924$export$41c562ebe57d11e2).useDebugValue && (0, $551174e99d8c5924$export$41c562ebe57d11e2).useDebugValue(r ? r(t) : t);\n}\nfunction $5c5fa90583e4b8e8$export$c052f6604b7d51fe(n) {\n var u = $5c5fa90583e4b8e8$var$d($5c5fa90583e4b8e8$var$t++, 10), i = $5c5fa90583e4b8e8$export$60241385465d0a34();\n return u.__ = n, $5c5fa90583e4b8e8$var$r.componentDidCatch || ($5c5fa90583e4b8e8$var$r.componentDidCatch = function(n, t) {\n u.__ && u.__(n, t), i[1](n);\n }), [\n i[0],\n function() {\n i[1](void 0);\n }\n ];\n}\nfunction $5c5fa90583e4b8e8$export$f680877a34711e37() {\n var n = $5c5fa90583e4b8e8$var$d($5c5fa90583e4b8e8$var$t++, 11);\n if (!n.__) {\n for(var u = $5c5fa90583e4b8e8$var$r.__v; null !== u && !u.__m && null !== u.__;)u = u.__;\n var i = u.__m || (u.__m = [\n 0,\n 0\n ]);\n n.__ = \"P\" + i[0] + \"-\" + i[1]++;\n }\n return n.__;\n}\nfunction $5c5fa90583e4b8e8$var$b() {\n for(var t; t = $5c5fa90583e4b8e8$var$f.shift();)if (t.__P && t.__H) try {\n t.__H.__h.forEach($5c5fa90583e4b8e8$var$k), t.__H.__h.forEach($5c5fa90583e4b8e8$var$w), t.__H.__h = [];\n } catch (r) {\n t.__H.__h = [], (0, $551174e99d8c5924$export$41c562ebe57d11e2).__e(r, t.__v);\n }\n}\n(0, $551174e99d8c5924$export$41c562ebe57d11e2).__b = function(n) {\n $5c5fa90583e4b8e8$var$r = null, $5c5fa90583e4b8e8$var$e && $5c5fa90583e4b8e8$var$e(n);\n}, (0, $551174e99d8c5924$export$41c562ebe57d11e2).__r = function(n) {\n $5c5fa90583e4b8e8$var$a && $5c5fa90583e4b8e8$var$a(n), $5c5fa90583e4b8e8$var$t = 0;\n var i = ($5c5fa90583e4b8e8$var$r = n.__c).__H;\n i && ($5c5fa90583e4b8e8$var$u === $5c5fa90583e4b8e8$var$r ? (i.__h = [], $5c5fa90583e4b8e8$var$r.__h = [], i.__.forEach(function(n) {\n n.__N && (n.__ = n.__N), n.__V = $5c5fa90583e4b8e8$var$c, n.__N = n.i = void 0;\n })) : (i.__h.forEach($5c5fa90583e4b8e8$var$k), i.__h.forEach($5c5fa90583e4b8e8$var$w), i.__h = [], $5c5fa90583e4b8e8$var$t = 0)), $5c5fa90583e4b8e8$var$u = $5c5fa90583e4b8e8$var$r;\n}, (0, $551174e99d8c5924$export$41c562ebe57d11e2).diffed = function(t) {\n $5c5fa90583e4b8e8$var$v && $5c5fa90583e4b8e8$var$v(t);\n var o = t.__c;\n o && o.__H && (o.__H.__h.length && (1 !== $5c5fa90583e4b8e8$var$f.push(o) && $5c5fa90583e4b8e8$var$i === (0, $551174e99d8c5924$export$41c562ebe57d11e2).requestAnimationFrame || (($5c5fa90583e4b8e8$var$i = (0, $551174e99d8c5924$export$41c562ebe57d11e2).requestAnimationFrame) || $5c5fa90583e4b8e8$var$j)($5c5fa90583e4b8e8$var$b)), o.__H.__.forEach(function(n) {\n n.i && (n.__H = n.i), n.__V !== $5c5fa90583e4b8e8$var$c && (n.__ = n.__V), n.i = void 0, n.__V = $5c5fa90583e4b8e8$var$c;\n })), $5c5fa90583e4b8e8$var$u = $5c5fa90583e4b8e8$var$r = null;\n}, (0, $551174e99d8c5924$export$41c562ebe57d11e2).__c = function(t, r) {\n r.some(function(t) {\n try {\n t.__h.forEach($5c5fa90583e4b8e8$var$k), t.__h = t.__h.filter(function(n) {\n return !n.__ || $5c5fa90583e4b8e8$var$w(n);\n });\n } catch (u) {\n r.some(function(n) {\n n.__h && (n.__h = []);\n }), r = [], (0, $551174e99d8c5924$export$41c562ebe57d11e2).__e(u, t.__v);\n }\n }), $5c5fa90583e4b8e8$var$l && $5c5fa90583e4b8e8$var$l(t, r);\n}, (0, $551174e99d8c5924$export$41c562ebe57d11e2).unmount = function(t) {\n $5c5fa90583e4b8e8$var$m && $5c5fa90583e4b8e8$var$m(t);\n var r, u = t.__c;\n u && u.__H && (u.__H.__.forEach(function(n) {\n try {\n $5c5fa90583e4b8e8$var$k(n);\n } catch (n) {\n r = n;\n }\n }), u.__H = void 0, r && (0, $551174e99d8c5924$export$41c562ebe57d11e2).__e(r, u.__v));\n};\nvar $5c5fa90583e4b8e8$var$g = \"function\" == typeof requestAnimationFrame;\nfunction $5c5fa90583e4b8e8$var$j(n) {\n var t, r = function() {\n clearTimeout(u), $5c5fa90583e4b8e8$var$g && cancelAnimationFrame(t), setTimeout(n);\n }, u = setTimeout(r, 100);\n $5c5fa90583e4b8e8$var$g && (t = requestAnimationFrame(r));\n}\nfunction $5c5fa90583e4b8e8$var$k(n) {\n var t = $5c5fa90583e4b8e8$var$r, u = n.__c;\n \"function\" == typeof u && (n.__c = void 0, u()), $5c5fa90583e4b8e8$var$r = t;\n}\nfunction $5c5fa90583e4b8e8$var$w(n) {\n var t = $5c5fa90583e4b8e8$var$r;\n n.__c = n.__(), $5c5fa90583e4b8e8$var$r = t;\n}\nfunction $5c5fa90583e4b8e8$var$z(n, t) {\n return !n || n.length !== t.length || t.some(function(t, r) {\n return t !== n[r];\n });\n}\nfunction $5c5fa90583e4b8e8$var$B(n, t) {\n return \"function\" == typeof t ? t(n) : t;\n}\n\n\n\n// Copied from:\n// https://github.com/facebook/react/blob/main/packages/shared/ExecutionEnvironment.js\nconst $fe1664b9958a6563$var$canUseDOM = !!(typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\");\n// TODO: switch to `export { useSyncExternalStore } from \"preact/compat\"` once we update Preact to >= 10.11.3\nfunction $fe1664b9958a6563$var$is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y;\n}\nfunction $fe1664b9958a6563$export$306c0aa65ff9ec16(subscribe, getSnapshot, getSSRSnapshot) {\n if (getSSRSnapshot && !$fe1664b9958a6563$var$canUseDOM) getSnapshot = getSSRSnapshot;\n const value = getSnapshot();\n const [{ _instance: _instance }, forceUpdate] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)({\n _instance: {\n _value: value,\n _getSnapshot: getSnapshot\n }\n });\n (0, $5c5fa90583e4b8e8$export$e5c5a5f917a5871c)(()=>{\n _instance._value = value;\n _instance._getSnapshot = getSnapshot;\n if (!$fe1664b9958a6563$var$is(_instance._value, getSnapshot())) forceUpdate({\n _instance: _instance\n });\n }, [\n subscribe,\n value,\n getSnapshot\n ]);\n (0, $5c5fa90583e4b8e8$export$6d9c69b0de29b591)(()=>{\n if (!$fe1664b9958a6563$var$is(_instance._value, _instance._getSnapshot())) forceUpdate({\n _instance: _instance\n });\n return subscribe(()=>{\n if (!$fe1664b9958a6563$var$is(_instance._value, _instance._getSnapshot())) forceUpdate({\n _instance: _instance\n });\n });\n }, [\n subscribe\n ]);\n return value;\n}\nfunction $fe1664b9958a6563$export$257a8862b851cb5b(component) {\n return component;\n}\nconst $fe1664b9958a6563$export$90fc3a17d93f704c = (fn)=>{\n const ref = (0, $5c5fa90583e4b8e8$export$b8f5890fc79d6aca)([\n fn,\n (...args)=>ref[0](...args)\n ]).current;\n (0, $5c5fa90583e4b8e8$export$e5c5a5f917a5871c)(()=>{\n ref[0] = fn;\n });\n return ref[1];\n};\n\n\n/*\n * Transforms `path` into its relative `base` version\n * If base isn't part of the path provided returns absolute path e.g. `~/app`\n */ const $e85d6386137e524a$var$relativePath = (base = \"\", path = location.pathname)=>!path.toLowerCase().indexOf(base.toLowerCase()) ? path.slice(base.length) || \"/\" : \"~\" + path;\nconst $e85d6386137e524a$var$absolutePath = (to, base = \"\")=>to[0] === \"~\" ? to.slice(1) : base + to;\n/**\n * History API docs @see https://developer.mozilla.org/en-US/docs/Web/API/History\n */ const $e85d6386137e524a$var$eventPopstate = \"popstate\";\nconst $e85d6386137e524a$var$eventPushState = \"pushState\";\nconst $e85d6386137e524a$var$eventReplaceState = \"replaceState\";\nconst $e85d6386137e524a$var$eventHashchange = \"hashchange\";\nconst $e85d6386137e524a$export$4bf9923669ad6c63 = [\n $e85d6386137e524a$var$eventPopstate,\n $e85d6386137e524a$var$eventPushState,\n $e85d6386137e524a$var$eventReplaceState,\n $e85d6386137e524a$var$eventHashchange\n];\nconst $e85d6386137e524a$var$subscribeToLocationUpdates = (callback)=>{\n for (const event of $e85d6386137e524a$export$4bf9923669ad6c63)addEventListener(event, callback);\n return ()=>{\n for (const event of $e85d6386137e524a$export$4bf9923669ad6c63)removeEventListener(event, callback);\n };\n};\nconst $e85d6386137e524a$export$3a1ff78c39f8a86 = (fn, ssrFn)=>(0, $fe1664b9958a6563$export$306c0aa65ff9ec16)($e85d6386137e524a$var$subscribeToLocationUpdates, fn, ssrFn);\nconst $e85d6386137e524a$var$currentSearch = ()=>location.search;\nconst $e85d6386137e524a$export$bd221a7c56b93941 = ()=>$e85d6386137e524a$export$3a1ff78c39f8a86($e85d6386137e524a$var$currentSearch);\nconst $e85d6386137e524a$var$currentPathname = ()=>location.pathname;\nconst $e85d6386137e524a$export$2a28ef6a9fe822a4 = ({ ssrPath: ssrPath } = {})=>$e85d6386137e524a$export$3a1ff78c39f8a86($e85d6386137e524a$var$currentPathname, ssrPath ? ()=>ssrPath : $e85d6386137e524a$var$currentPathname);\nconst $e85d6386137e524a$export$ff7962acd6052c28 = (to, { replace: replace = false } = {})=>history[replace ? $e85d6386137e524a$var$eventReplaceState : $e85d6386137e524a$var$eventPushState](null, \"\", to);\n// the 2nd argument of the `useLocation` return value is a function\n// that allows to perform a navigation.\n//\n// the function reference should stay the same between re-renders, so that\n// it can be passed down as an element prop without any performance concerns.\n// (This is achieved via `useEvent`.)\nconst $e85d6386137e524a$var$useLocation = (opts = {})=>[\n $e85d6386137e524a$var$relativePath(opts.base, $e85d6386137e524a$export$2a28ef6a9fe822a4(opts)),\n (0, $fe1664b9958a6563$export$90fc3a17d93f704c)((to, navOpts)=>$e85d6386137e524a$export$ff7962acd6052c28($e85d6386137e524a$var$absolutePath(to, opts.base), navOpts))\n ];\nvar $e85d6386137e524a$export$2e2bcd8739ae039 = $e85d6386137e524a$var$useLocation;\n// While History API does have `popstate` event, the only\n// proper way to listen to changes via `push/replaceState`\n// is to monkey-patch these methods.\n//\n// See https://stackoverflow.com/a/4585031\nif (typeof history !== \"undefined\") for (const type of [\n $e85d6386137e524a$var$eventPushState,\n $e85d6386137e524a$var$eventReplaceState\n]){\n const original = history[type];\n // TODO: we should be using unstable_batchedUpdates to avoid multiple re-renders,\n // however that will require an additional peer dependency on react-dom.\n // See: https://github.com/reactwg/react-18/discussions/86#discussioncomment-1567149\n history[type] = function() {\n const result = original.apply(this, arguments);\n const event = new Event(type);\n event.arguments = arguments;\n dispatchEvent(event);\n return result;\n };\n}\n\n\n// creates a matcher function\nfunction $d7bafb128031febe$export$2e2bcd8739ae039(makeRegexpFn = $d7bafb128031febe$var$pathToRegexp) {\n let cache = {};\n // obtains a cached regexp version of the pattern\n const getRegexp = (pattern)=>cache[pattern] || (cache[pattern] = makeRegexpFn(pattern));\n return (pattern, path)=>{\n const { regexp: regexp, keys: keys } = getRegexp(pattern || \"\");\n const out = regexp.exec(path);\n if (!out) return [\n false,\n null\n ];\n // formats an object with matched params\n const params = keys.reduce((params, key, i)=>{\n params[key.name] = out[i + 1];\n return params;\n }, {});\n return [\n true,\n params\n ];\n };\n}\n// escapes a regexp string (borrowed from path-to-regexp sources)\n// https://github.com/pillarjs/path-to-regexp/blob/v3.0.0/index.js#L202\nconst $d7bafb128031febe$var$escapeRx = (str)=>str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n// returns a segment representation in RegExp based on flags\n// adapted and simplified version from path-to-regexp sources\nconst $d7bafb128031febe$var$rxForSegment = (repeat, optional, prefix)=>{\n let capture = repeat ? \"((?:[^\\\\/]+?)(?:\\\\/(?:[^\\\\/]+?))*)\" : \"([^\\\\/]+?)\";\n if (optional && prefix) capture = \"(?:\\\\/\" + capture + \")\";\n return capture + (optional ? \"?\" : \"\");\n};\nconst $d7bafb128031febe$var$pathToRegexp = (pattern)=>{\n const groupRx = /:([A-Za-z0-9_]+)([?+*]?)/g;\n let match = null, lastIndex = 0, keys = [], result = \"\";\n while((match = groupRx.exec(pattern)) !== null){\n const [_, segment, mod] = match;\n // :foo [1] ( )\n // :foo? [0 - 1] ( o)\n // :foo+ [1 - ∞] (r )\n // :foo* [0 - ∞] (ro)\n const repeat = mod === \"+\" || mod === \"*\";\n const optional = mod === \"?\" || mod === \"*\";\n const prefix = optional && pattern[match.index - 1] === \"/\" ? 1 : 0;\n const prev = pattern.substring(lastIndex, match.index - prefix);\n keys.push({\n name: segment\n });\n lastIndex = groupRx.lastIndex;\n result += $d7bafb128031febe$var$escapeRx(prev) + $d7bafb128031febe$var$rxForSegment(repeat, optional, prefix);\n }\n result += $d7bafb128031febe$var$escapeRx(pattern.substring(lastIndex));\n return {\n keys: keys,\n regexp: new RegExp(\"^\" + result + \"(?:\\\\/)?$\", \"i\")\n };\n};\n\n\n\n/*\n * Router and router context. Router is a lightweight object that represents the current\n * routing options: how location is managed, base path etc.\n *\n * There is a default router present for most of the use cases, however it can be overridden\n * via the component.\n */ const $bf49b3b08868bbb1$var$defaultRouter = {\n hook: (0, $e85d6386137e524a$export$2e2bcd8739ae039),\n matcher: (0, $d7bafb128031febe$export$2e2bcd8739ae039)(),\n base: \"\"\n};\nconst $bf49b3b08868bbb1$var$RouterCtx = (0, $551174e99d8c5924$export$fd42f52fd3ae1109)($bf49b3b08868bbb1$var$defaultRouter);\nconst $bf49b3b08868bbb1$export$9a302a45f65d0572 = ()=>(0, $5c5fa90583e4b8e8$export$fae74005e78b1a27)($bf49b3b08868bbb1$var$RouterCtx);\n/*\n * Part 1, Hooks API: useRoute and useLocation\n */ // Internal version of useLocation to avoid redundant useRouter calls\nconst $bf49b3b08868bbb1$var$useLocationFromRouter = (router)=>router.hook(router);\nconst $bf49b3b08868bbb1$export$45d76561a5302f2b = ()=>$bf49b3b08868bbb1$var$useLocationFromRouter($bf49b3b08868bbb1$export$9a302a45f65d0572());\nconst $bf49b3b08868bbb1$export$3f79f0b98112cf57 = (pattern)=>{\n const router = $bf49b3b08868bbb1$export$9a302a45f65d0572();\n const [path] = $bf49b3b08868bbb1$var$useLocationFromRouter(router);\n return router.matcher(pattern, path);\n};\nconst $bf49b3b08868bbb1$export$55185c17a0fcbe46 = ({ hook: hook, matcher: matcher, ssrPath: ssrPath, base: base = \"\", parent: parent, children: children })=>{\n // updates the current router with the props passed down to the component\n const updateRouter = (router, proto = parent || $bf49b3b08868bbb1$var$defaultRouter)=>{\n router.hook = hook || proto.hook;\n router.matcher = matcher || proto.matcher;\n router.ssrPath = ssrPath || proto.ssrPath;\n router.ownBase = base;\n // store reference to parent router\n router.parent = parent;\n return router;\n };\n // we use `useState` here, but it only catches the first render and never changes.\n // https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily\n const [value] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)(()=>updateRouter({\n // We must store base as a property accessor because effects\n // somewhat counter-intuitively run in child components *first*!\n // This means that by the time a parent's base is updated in the\n // parent effect, the child effect has already run, and saw\n // the parent's *previous* base during its own execution.\n get base () {\n return (value.parent || $bf49b3b08868bbb1$var$defaultRouter).base + value.ownBase;\n }\n })); // create the object once...\n (0, $5c5fa90583e4b8e8$export$e5c5a5f917a5871c)(()=>{\n updateRouter(value);\n }); // ...then update it on each render\n return (0, $551174e99d8c5924$export$c8a8987d4410bf2d)($bf49b3b08868bbb1$var$RouterCtx.Provider, {\n value: value,\n children: children\n });\n};\nconst $bf49b3b08868bbb1$export$e7b0ac011bb776c6 = ({ path: path, match: match, component: component, children: children })=>{\n const useRouteMatch = $bf49b3b08868bbb1$export$3f79f0b98112cf57(path);\n // `props.match` is present - Route is controlled by the Switch\n const [matches, params] = match || useRouteMatch;\n if (!matches) return null;\n // React-Router style `component` prop\n if (component) return (0, $551174e99d8c5924$export$c8a8987d4410bf2d)(component, {\n params: params\n });\n // support render prop or plain children\n return typeof children === \"function\" ? children(params) : children;\n};\nconst $bf49b3b08868bbb1$export$a6c7ac8248d6e38a = (0, $fe1664b9958a6563$export$257a8862b851cb5b)((props, ref)=>{\n const router = $bf49b3b08868bbb1$export$9a302a45f65d0572();\n const [, navigate] = $bf49b3b08868bbb1$var$useLocationFromRouter(router);\n const { to: to, href: href = to, children: children, onClick: onClick } = props;\n const handleClick = (0, $fe1664b9958a6563$export$90fc3a17d93f704c)((event)=>{\n // ignores the navigation when clicked using right mouse button or\n // by holding a special modifier key: ctrl, command, win, alt, shift\n if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey || event.button !== 0) return;\n onClick && onClick(event);\n if (!event.defaultPrevented) {\n event.preventDefault();\n navigate(to || href, props);\n }\n });\n // wraps children in `a` if needed\n const extraProps = {\n // handle nested routers and absolute paths\n href: href[0] === \"~\" ? href.slice(1) : router.base + href,\n onClick: handleClick,\n to: null,\n ref: ref\n };\n const jsx = (0, $551174e99d8c5924$export$a8257692ac88316c)(children) ? children : (0, $551174e99d8c5924$export$c8a8987d4410bf2d)(\"a\", props);\n return (0, $551174e99d8c5924$export$e530037191fcd5d7)(jsx, extraProps);\n});\nconst $bf49b3b08868bbb1$var$flattenChildren = (children)=>{\n return Array.isArray(children) ? [].concat(...children.map((c)=>c && c.type === (0, $551174e99d8c5924$export$ffb0004e005737fa) ? $bf49b3b08868bbb1$var$flattenChildren(c.props.children) : $bf49b3b08868bbb1$var$flattenChildren(c))) : [\n children\n ];\n};\nconst $bf49b3b08868bbb1$export$b5d5cf8927ab7262 = ({ children: children, location: location })=>{\n const router = $bf49b3b08868bbb1$export$9a302a45f65d0572();\n const matcher = router.matcher;\n const [originalLocation] = $bf49b3b08868bbb1$var$useLocationFromRouter(router);\n for (const element of $bf49b3b08868bbb1$var$flattenChildren(children)){\n let match = 0;\n if ((0, $551174e99d8c5924$export$a8257692ac88316c)(element) && // we don't require an element to be of type Route,\n // but we do require it to contain a truthy `path` prop.\n // this allows to use different components that wrap Route\n // inside of a switch, for example .\n (match = element.props.path ? matcher(element.props.path, location || originalLocation) : [\n true,\n {}\n ])[0]) return (0, $551174e99d8c5924$export$e530037191fcd5d7)(element, {\n match: match\n });\n }\n return null;\n};\nconst $bf49b3b08868bbb1$export$2d8d895a0a0f636e = (props)=>{\n const { to: to, href: href = to } = props;\n const [, navigate] = $bf49b3b08868bbb1$export$45d76561a5302f2b();\n const redirect = (0, $fe1664b9958a6563$export$90fc3a17d93f704c)(()=>navigate(to || href, props));\n // redirect is guaranteed to be stable since it is returned from useEvent\n (0, $5c5fa90583e4b8e8$export$e5c5a5f917a5871c)(()=>{\n redirect();\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n return null;\n};\nvar $bf49b3b08868bbb1$export$2e2bcd8739ae039 = $bf49b3b08868bbb1$export$3f79f0b98112cf57;\n\n\n\nconst $66f2da609d6d9bfe$var$windowLocation = ()=>window.location.hash.replace(\"#\", \"\") || \"/\";\nconst $66f2da609d6d9bfe$export$8eb08f90c24d5079 = ({ url: url })=>`/#/play/${encodeURIComponent(url)}`;\nconst $66f2da609d6d9bfe$export$4fac2eeccfa4a8ca = (location)=>{\n if (location === \"/\") return \"home\";\n const currentView = location.split(\"/\").filter(Boolean)[0];\n return currentView || \"\";\n};\nconst $66f2da609d6d9bfe$export$b37f3f4c9f6562f7 = ()=>{\n const [currentLocation, setCurrentLocation] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)($66f2da609d6d9bfe$var$windowLocation());\n (0, $5c5fa90583e4b8e8$export$6d9c69b0de29b591)(()=>{\n const onHashChange = ()=>{\n let newLocation = $66f2da609d6d9bfe$var$windowLocation();\n if (newLocation !== currentLocation) {\n setCurrentLocation(newLocation);\n window.scrollTo(0, 0);\n }\n };\n onHashChange();\n window.addEventListener(\"hashchange\", onHashChange);\n return ()=>window.removeEventListener(\"hashchange\", onHashChange);\n }, [\n currentLocation,\n setCurrentLocation\n ]);\n const navigate = (0, $5c5fa90583e4b8e8$export$35808ee640e87ca7)((to)=>{\n window.location.hash = to.replace(\"#/\", \"\");\n }, []);\n return [\n currentLocation,\n navigate\n ];\n};\n\n\n\nconst $1a1447a1dbeb7cc3$export$d9a33280f07116d9 = [\n \"light\",\n \"dim\",\n \"dark\",\n /* Solarized */ \"solarized-light\",\n \"solarized-dark\",\n /* Original */ \"emo\",\n \"redrum\",\n \"toxin\",\n \"valve\",\n \"wasp\",\n /* Monkeytype */ /* @see https://github.com/monkeytypegame/monkeytype/blob/master/frontend/static/themes/_list.json */ \"a8008\",\n \"a80s_after_dark\",\n \"a9009\",\n \"aether\",\n \"alduin\",\n \"alpine\",\n \"arch\",\n \"aurora\",\n \"beach\",\n \"bento\",\n \"bingsu\",\n \"bliss\",\n \"blue_dolphin\",\n \"blueberry_dark\",\n \"blueberry_light\",\n \"botanical\",\n \"bouquet\",\n \"breeze\",\n \"bushido\",\n \"cafe\",\n \"camping\",\n \"carbon\",\n \"catppuccin\",\n \"chaos_theory\",\n \"cheesecake\",\n \"cherry_blossom\",\n \"comfy\",\n \"copper\",\n \"creamsicle\",\n \"cyberspace\",\n \"dark_magic_girl\",\n \"dark_note\",\n \"darling\",\n \"deku\",\n \"desert_oasis\",\n \"dev\",\n \"diner\",\n \"dino\",\n \"dmg\",\n \"dollar\",\n \"dots\",\n \"dracula\",\n \"drowning\",\n \"dualshot\",\n \"earthsong\",\n \"everblush\",\n \"evil_eye\",\n \"ez_mode\",\n \"fire\",\n \"fledgling\",\n \"fleuriste\",\n \"froyo\",\n \"frozen_llama\",\n \"fruit_chew\",\n \"fundamentals\",\n \"future_funk\",\n \"godspeed\",\n \"graen\",\n \"grand_prix\",\n \"gruvbox_dark\",\n \"gruvbox_light\",\n \"hammerhead\",\n \"hanok\",\n \"hedge\",\n \"honey\",\n \"horizon\",\n \"husqy\",\n \"iceberg_dark\",\n \"iceberg_light\",\n \"ishtar\",\n \"iv_clover\",\n \"iv_spade\",\n \"joker\",\n \"laser\",\n \"lavender\",\n \"leather\",\n \"lil_dragon\",\n \"lime\",\n \"luna\",\n \"magic_girl\",\n \"mashu\",\n \"matcha_moccha\",\n \"material\",\n \"matrix\",\n \"menthol\",\n \"metaverse\",\n \"metropolis\",\n \"mexican\",\n \"miami\",\n \"miami_nights\",\n \"midnight\",\n \"milkshake\",\n \"mint\",\n \"mizu\",\n \"modern_dolch\",\n \"modern_dolch_light\",\n \"modern_ink\",\n \"monokai\",\n \"moonlight\",\n \"mountain\",\n \"mr_sleeves\",\n \"ms_cupcakes\",\n \"muted\",\n \"nautilus\",\n \"nebula\",\n \"night_runner\",\n \"nord\",\n \"nord_light\",\n \"norse\",\n \"oblivion\",\n \"olive\",\n \"olivia\",\n \"onedark\",\n \"our_theme\",\n \"paper\",\n \"passion_fruit\",\n \"pastel\",\n \"peach_blossom\",\n \"peaches\",\n \"pink_lemonade\",\n \"pulse\",\n \"purpurite\",\n \"red_dragon\",\n \"red_samurai\",\n \"repose_dark\",\n \"repose_light\",\n \"retro\",\n \"retrocast\",\n \"rose_pine\",\n \"rose_pine_dawn\",\n \"rose_pine_moon\",\n \"rudy\",\n \"ryujinscales\",\n \"serika\",\n \"serika_dark\",\n \"sewing_tin\",\n \"sewing_tin_light\",\n \"shadow\",\n \"shoko\",\n \"slambook\",\n \"snes\",\n \"soaring_skies\",\n \"sonokai\",\n \"stealth\",\n \"strawberry\",\n \"striker\",\n \"superuser\",\n \"sweden\",\n \"taro\",\n \"terminal\",\n \"terra\",\n \"terror_below\",\n \"tiramisu\",\n \"trackday\",\n \"trance\",\n \"tron_orange\",\n \"vaporwave\",\n \"viridescent\",\n \"voc\",\n \"vscode\",\n \"watermelon\",\n \"wavez\",\n \"witch_girl\"\n];\n\n\n\nconst $1e789317f11755fe$var$LS_THEME_KEY = \"elseifplayer/theme\";\nconst $1e789317f11755fe$var$DEFAULT_THEME = (0, $1a1447a1dbeb7cc3$export$d9a33280f07116d9)[0];\nconst $1e789317f11755fe$var$getSavedTheme = ()=>{\n const savedTheme = localStorage.getItem($1e789317f11755fe$var$LS_THEME_KEY);\n return savedTheme || $1e789317f11755fe$var$DEFAULT_THEME;\n};\nconst $1e789317f11755fe$var$assertTheme = (theme)=>(0, $1a1447a1dbeb7cc3$export$d9a33280f07116d9).includes(theme) ? theme : $1e789317f11755fe$var$getSavedTheme();\nconst $1e789317f11755fe$export$818080cba8053148 = (initialTheme = $1e789317f11755fe$var$getSavedTheme())=>{\n const [currentTheme, setCurrentTheme] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)(initialTheme);\n const setTheme = (theme)=>{\n const newTheme = $1e789317f11755fe$var$assertTheme(theme);\n setCurrentTheme(newTheme);\n localStorage.setItem($1e789317f11755fe$var$LS_THEME_KEY, newTheme);\n };\n const setRandomTheme = ()=>{\n const randomTheme = (0, $1a1447a1dbeb7cc3$export$d9a33280f07116d9)[Math.floor(Math.random() * (0, $1a1447a1dbeb7cc3$export$d9a33280f07116d9).length)];\n setTheme(randomTheme);\n };\n return {\n currentTheme: currentTheme,\n setTheme: setTheme,\n setRandomTheme: setRandomTheme,\n themes: $1a1447a1dbeb7cc3$export$d9a33280f07116d9\n };\n};\n\n\n\n\n\n\nfunction $1708390c5041b6e2$export$2e2bcd8739ae039({ theme: theme, setLocation: setLocation, buildLink: buildLink }) {\n const fileInputHandler = ({ target: target })=>{\n const file = target.files[0];\n const url = `${URL.createObjectURL(file)}#${file.name}`;\n setLocation(buildLink({\n url: url,\n theme: theme\n }));\n };\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"input\", {\n type: \"file\",\n onChange: fileInputHandler\n });\n}\n\n\n\nfunction $bc4fc25313d9323c$export$2e2bcd8739ae039({ theme: theme, setLocation: setLocation, buildLink: buildLink }) {\n const urlRE = /^(http|https):\\/\\/[^ \"]+$/;\n const onKeyPress = ({ keyCode: keyCode, target: target })=>{\n if (keyCode !== 13) return;\n const url = encodeURI(target.value);\n if (urlRE.test(url)) setLocation(buildLink({\n url: url,\n theme: theme\n }));\n };\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"input\", {\n type: \"text\",\n placeholder: \"https://...\",\n onKeyPress: onKeyPress\n });\n}\n\n\n\nfunction $7c39639b64b564e0$export$2e2bcd8739ae039({ themeEngine: themeEngine }) {\n const options = themeEngine.themes.map((theme)=>/*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"option\", {\n value: theme,\n children: theme\n }, theme));\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"select\", {\n value: themeEngine.currentTheme,\n onChange: ({ target: target })=>themeEngine.setTheme(target.value),\n children: options\n });\n}\n\n\nfunction $85078130a8d7a0de$export$2e2bcd8739ae039({ themeEngine: themeEngine }) {\n const setLocation = (0, $66f2da609d6d9bfe$export$b37f3f4c9f6562f7)()[1];\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"main\", {\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"h1\", {\n children: \"ElseIFPlayer\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"p\", {\n children: [\n \"Interactive Fiction interpreter that runs right in your browser.\",\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"br\", {}),\n \"Source code can be found in this \",\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://github.com/He4eT/elseifplayer\",\n children: \"repository\"\n }),\n \".\"\n ]\n })\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"hr\", {}),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Interface Theme\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $7c39639b64b564e0$export$2e2bcd8739ae039), {\n themeEngine: themeEngine\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"p\", {\n children: [\n \"Preview and choose from available themes on the \",\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$a6c7ac8248d6e38a), {\n href: \"/#/themes/\",\n children: \"themes page\"\n }),\n \".\"\n ]\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"p\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"small\", {\n children: \"Double-click the input field during the game to enter full-screen mode.\"\n })\n })\n ]\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"hr\", {}),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Play a Game from the List\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"p\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$a6c7ac8248d6e38a), {\n href: \"/#/games/\",\n children: \"IFDB games\"\n })\n })\n ]\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"hr\", {}),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Play the Game from a File\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"p\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"details\", {\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"summary\", {\n children: \"Supported formats\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"p\", {\n children: \"Text-only games are supported:\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"ul\", {\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"li\", {\n children: \"ADRIFT 4 (.taf)\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"li\", {\n children: \"Glulx (.gblorb, .ulx)\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"li\", {\n children: \"Hugo (.hex)\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"li\", {\n children: \"TADS 2/3 (.gam, .t3)\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"li\", {\n children: \"Z-code (.z3, .z4, .z5, .z8, .blorb)\"\n })\n ]\n })\n ]\n })\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"p\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"label\", {\n children: [\n \"Local file: \",\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"br\", {}),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $1708390c5041b6e2$export$2e2bcd8739ae039), {\n setLocation: setLocation,\n buildLink: (0, $66f2da609d6d9bfe$export$8eb08f90c24d5079),\n theme: themeEngine.currentTheme\n })\n ]\n })\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"p\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"label\", {\n children: [\n \"Direct link: \",\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"br\", {}),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bc4fc25313d9323c$export$2e2bcd8739ae039), {\n setLocation: setLocation,\n buildLink: (0, $66f2da609d6d9bfe$export$8eb08f90c24d5079),\n theme: themeEngine.currentTheme\n })\n ]\n })\n })\n ]\n })\n ]\n });\n}\n\n\n\n\n\n\n\nfunction $c416337fc7df6b27$export$2e2bcd8739ae039({ name: name, ifdb: ifdb, url: url }) {\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"h4\", {\n children: name\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: ifdb,\n children: \"IFDB page\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"span\", {\n children: \" | \"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$a6c7ac8248d6e38a), {\n href: (0, $66f2da609d6d9bfe$export$8eb08f90c24d5079)({\n url: url\n }),\n children: \"Play\"\n })\n ]\n });\n}\n\n\nvar $8072c402bd1a5d6e$export$2e2bcd8739ae039 = [\n [\n \"Lost Pig\",\n \"https://ifdb.org/viewgame?id=mohwfk47yjzii14w\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/LostPig.z8\"\n ],\n [\n /* Check with cheap-glk */ \"Counterfeit Monkey\",\n \"https://ifdb.org/viewgame?id=aearuuxv83plclpl\",\n \"https://mirror.ifarchive.org/if-archive/games/glulx/CounterfeitMonkey.gblorb\"\n ],\n [\n /* Works. Check inputs */ \"Anchorhead\",\n \"https://ifdb.org/viewgame?id=op0uw1gn1tjqmjt7\",\n \"https://ifarchive.org/if-archive/games/zcode/anchor.z8\"\n ],\n /* [\n '80 DAYS',\n 'https://ifdb.org/viewgame?id=du51t0qrhjqlnbij',\n 'INKLEWRITER'\n ], */ [\n \"Galatea\",\n \"https://ifdb.org/viewgame?id=urxrv27t7qtu52lb\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/Galatea.zblorb\"\n ],\n [\n /* Works. Check inputs */ \"Photopia\",\n \"https://ifdb.org/viewgame?id=ju778uv5xaswnlpl\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/photopia.z5\"\n ],\n [\n \"Spider and Web\",\n \"https://ifdb.org/viewgame?id=2xyccw3pe0uovfad\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/Tangle.z5\"\n ],\n /* [\n 'Trinity',\n 'https://ifdb.org/viewgame?id=j18kjz80hxjtyayw',\n 'ZIP'\n ], */ /* [\n 'Hadean Lands',\n 'https://ifdb.org/viewgame?id=u58d0mlbfwcorfi',\n 'COMMERCIAL'\n ], */ /* [\n 'Superluminal Vagrant Twin',\n 'https://ifdb.org/viewgame?id=5xzoz5wimz4xxha',\n 'CORS https://v6p9d9t4.ssl.hwcdn.net/html/177384/Superluminal%20Vagrant%20Twin%20Webpage/files/Superluminal%20Vagrant%20Twin.gblorb'\n ], */ /* [\n 'Birdland',\n 'https://ifdb.org/viewgame?id=ap1651hvjldbuugj',\n 'TWINE'\n ], */ [\n \"Slouching Towards Bedlam\",\n \"https://ifdb.org/viewgame?id=032krqe6bjn5au78\",\n \"https://mirror.ifarchive.org/if-archive/games/competition2003/zcode/slouch/slouch.z5\"\n ],\n [\n \"Curses!\",\n \"https://ifdb.org/viewgame?id=plvzam05bmz3enh8\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/curses.z5\"\n ],\n /* [\n 'howling dogs',\n 'https://ifdb.org/viewgame?id=mxj7xp4nffia9rbj',\n 'TWINE'\n ], */ [\n \"Violet\",\n \"https://ifdb.org/viewgame?id=4glrrfh7wrp9zz7b\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/Violet.zblorb\"\n ],\n [\n \"The Wizard Sniffer\",\n \"https://ifdb.org/viewgame?id=uq18rw9gt8j58da\",\n \"https://ifarchive.org/if-archive/games/competition2017/The%20Wizard%20Sniffer/The_Wizard_Sniffer.gblorb\"\n ],\n /* [\n 'Eat Me',\n 'https://ifdb.org/viewgame?id=yutkd9u0oeog4br1',\n 'ZIP https://ifarchive.org/if-archive/games/competition2017/Eat%20Me/Eat%20Me/Gblorb.zip'\n ], */ /* [\n 'Horse Master',\n 'https://ifdb.org/viewgame?id=ogkcvv9l1q0aatpd',\n 'TWINE'\n ], */ /* [\n 'Mentula Macanus: Apocolocyntosis',\n 'https://ifdb.org/viewgame?id=etul31tqgl3n22nl'\n 'ZIP'\n ], */ [\n \"Shade\",\n \"https://ifdb.org/viewgame?id=hsfc7fnl40k4a30q\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/shade.z5\"\n ],\n [\n \"Vespers\",\n \"https://ifdb.org/viewgame?id=6dj2vguyiagrhvc2\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/vespers.z8\"\n ],\n /* [\n 'Will Not Let Me Go',\n 'https://ifdb.org/viewgame?id=67r2qc21m5nzexv1',\n 'TWINE'\n ], */ /* [\n 'Bee',\n 'https://ifdb.org/viewgame?id=8pe83e92v4nvabic',\n 'VARYTALE'\n ], */ /* [\n 'Creatures Such As We',\n 'https://ifdb.org/viewgame?id=8l9cdcd1tbt77hfl',\n 'TWINE'\n ], */ /* [\n 'Kerkerkruip',\n 'https://ifdb.org/viewgame?id=f7zdhxmiraht53d1',\n 'CORS https://downloads.kerkerkruip.org/Kerkerkruip-latest.gblorb'\n ], */ /* [\n 'Midnight. Swordfight.',\n 'https://ifdb.org/viewgame?id=2cuwjlvpybg8oaf0',\n 'CORS https://www.castleprincessdragon.com/InteractiveFiction/MS/MidnightSwordfight.gblorb'\n ], */ [\n \"Savoir-Faire\",\n \"https://ifdb.org/viewgame?id=p0cizeb3kiwzlm2p\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/Savoir-Faire.zblorb\"\n ],\n /* [\n 'With Those We Love Alive',\n 'https://ifdb.org/viewgame?id=445d989vuwlh4cvz',\n 'TWINE'\n ], */ [\n \"Aisle\",\n \"https://ifdb.org/viewgame?id=j49crlvd62mhwuzu\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/Aisle.z5\"\n ],\n /* [\n 'Blue Lacuna',\n 'https://ifdb.org/viewgame?id=ez2mcyx4zi98qlkh',\n 'ZIP'\n ], */ [\n \"Gun Mute\",\n \"https://ifdb.org/viewgame?id=xwedbibfksczn7eq\",\n \"https://mirror.ifarchive.org/if-archive/games/tads/GunMute.t3\"\n ],\n /* [\n 'The King of Shreds and Patches',\n 'https://ifdb.org/viewgame?id=9ntef9expou18abv',\n 'ZIP'\n ], */ /* [\n 'A Mind Forever Voyaging',\n 'https://ifdb.org/viewgame?id=4h62dvooeg9ajtfa',\n 'CORS'\n ], */ /* [\n 'SPY INTRIGUE',\n 'https://ifdb.org/viewgame?id=zz6i7irfr70nvp7a',\n 'TWINE'\n ], */ /* [\n 'Wishbringer',\n 'https://ifdb.org/viewgame?id=z02joykzh66wfhcl',\n 'CORS'\n ], */ [\n \"A Beauty Cold and Austere\",\n \"https://ifdb.org/viewgame?id=y9y7jozi0l76bb82\",\n \"https://ifarchive.org/if-archive/games/competition2017/A%20Beauty%20Cold%20and%20Austere/A_Beauty_Cold_and_Austere.gblorb\"\n ],\n /* [\n 'Cactus Blue Motel',\n 'https://ifdb.org/viewgame?id=7e699ifb6u3767yr',\n 'TWINE'\n ], */ [\n \"Coloratura\",\n \"https://ifdb.org/viewgame?id=g0fl99ovcrq2sqzk\",\n \"https://mirror.ifarchive.org/if-archive/games/competition2013/glulx/coloratura/Coloratura.gblorb\"\n ],\n /* [\n 'Harmonia',\n 'https://ifdb.org/viewgame?id=bkyia4k48od1ila',\n 'TWINE'\n ], */ [\n \"Lime Ergot\",\n \"https://ifdb.org/viewgame?id=b8mb4fcwmf1hrxl\",\n \"https://mirror.ifarchive.org/if-archive/games/glulx/Lime_Ergot.gblorb\"\n ],\n [\n \"Rameses\",\n \"https://ifdb.org/viewgame?id=0stz0hr7a98bp9mp\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/rameses.zblorb\"\n ],\n /* [\n 'Spellbreaker',\n 'https://ifdb.org/viewgame?id=wqsmrahzozosu3r',\n 'CORS'\n ], */ /* [\n 'Suspended',\n 'https://ifdb.org/viewgame?id=t47hei9uq10xoar8',\n 'CORS'\n ], */ [\n \"The Wand\",\n \"https://ifdb.org/viewgame?id=2jil5vbxmbv8riv1\",\n \"https://ifarchive.org/if-archive/games/glulx/Wand.ulx\"\n ],\n /* [\n 'Zork I',\n 'https://ifdb.org/viewgame?id=0dbnusxunq7fw5ro',\n 'ZIP'\n ], */ [\n \"1893: A World's Fair Mystery\",\n \"https://ifdb.org/viewgame?id=00e0t7swrris5pg6\",\n \"https://mirror.ifarchive.org/if-archive/games/tads/1893.gam\"\n ],\n [\n \"Adventure\",\n \"https://ifdb.org/viewgame?id=fft6pu91j85y4acv\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/Advent.z5\"\n ],\n [\n \"Alias 'The Magpie'\",\n \"https://ifdb.org/viewgame?id=yspn49v69hzc8rtb\",\n \"https://ifarchive.org/if-archive/games/competition2018/Alias%20The%20Magpie/Alias%20%27The%20Magpie%27.gblorb\"\n ],\n /* [\n 'De Baron',\n 'https://ifdb.org/viewgame?id=weac28l51hiqfzxz',\n 'ZIP'\n ], */ /* [\n 'Bogeyman',\n 'https://ifdb.org/viewgame?id=ltwvgb2lubkx82yi',\n 'TWINE'\n ], */ [\n \"Cragne Manor\",\n \"https://ifdb.org/viewgame?id=4x7nltu8p851tn4x\",\n \"https://mirror.ifarchive.org/if-archive/games/glulx/cragne.gblorb\"\n ],\n [\n \"The Edifice\",\n \"https://ifdb.org/viewgame?id=4tb9soabrb4apqzd\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/edifice.z5\"\n ],\n [\n \"Endless, Nameless\",\n \"https://ifdb.org/viewgame?id=7vtm1rq16hh3xch\",\n \"https://ifarchive.org/if-archive/games/zcode/nameless.z8\"\n ],\n [\n \"Everybody Dies\",\n \"https://ifdb.org/viewgame?id=lyblvftb8xtlo0a1\",\n \"https://mirror.ifarchive.org/if-archive/games/competition2008/glulx/everybodydies/EverybodyDies.gblorb\"\n ],\n /* [\n 'Fallen London',\n 'https://ifdb.org/viewgame?id=y9m60ythcj2xn9r',\n 'STORYNEXUS'\n ], */ [\n \"Foo Foo\",\n \"https://ifdb.org/viewgame?id=ec6x9y8qcmsrxob9\",\n \"https://ifarchive.org/if-archive/games/springthing/2016/FooFoo.gblorb\"\n ],\n [\n \"The Gostak\",\n \"https://ifdb.org/viewgame?id=w5s3sv43s3p98v45\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/gostak.z5\"\n ],\n /* [\n 'The Hitchhiker\\'s Guide to the Galaxy',\n 'https://ifdb.org/viewgame?id=ouv80gvsl32xlion',\n 'CORS https://www.douglasadams.com/creations/hhgg.z3'\n ], */ /* [\n 'Hoist Sail for the Heliopause and Home',\n 'https://ifdb.org/viewgame?id=ykccumi5xc5rltev',\n 'CORS https://eblong.com/zarf/ftp/Heliopause.zblorb'\n ], */ /* [\n 'Human Errors',\n 'https://ifdb.org/viewgame?id=14oexa2wyym73glu',\n 'TWINE'\n ], */ [\n \"Inside the Facility\",\n \"https://ifdb.org/viewgame?id=stsdri5zh7a4i5my\",\n \"https://ifarchive.org/if-archive/games/competition2016/Inside%20the%20Facility/Facility.z8\"\n ],\n /* [\n 'Junior Arithmancer',\n 'https://ifdb.org/viewgame?id=pw1rbjt1t4n4n87s',\n 'https://ifarchive.org/if-archive/games/competition2018/Junior%20Arithmancer/Junior_Arithmancer.gblorb',\n ], */ [\n \"Make It Good\",\n \"https://ifdb.org/viewgame?id=jdrbw1htq4ah8q57\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/MakeItGood.z8\"\n ],\n [\n \"Sub Rosa\",\n \"https://ifdb.org/viewgame?id=73nvz9yui87ub3sd\",\n \"https://mirror.ifarchive.org/if-archive/games/glulx/Sub_Rosa.gblorb\"\n ],\n [\n \"Suveh Nux\",\n \"https://ifdb.org/viewgame?id=xkai23ry99qdxce3\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/suvehnux.z5\"\n ],\n /* [\n 'their angelical understanding',\n 'https://ifdb.org/viewgame?id=zpmfvbgolvfwbid',\n 'TWINE'\n ], */ /* [\n 'Toby\\'s Nose',\n 'https://ifdb.org/viewgame?id=xf5y04yekcrqtnc',\n 'CORS https://www.castleprincessdragon.com/InteractiveFiction/TobysNose/Toby\\'s%20Nose.gblorb'\n ], */ [\n \"Varicella\",\n \"https://ifdb.org/viewgame?id=ywwlr3tpxnktjasd\",\n \"https://mirror.ifarchive.org/if-archive/games/zcode/vgame.z8\"\n ]\n].map(([name, ifdb, url])=>({\n name: name,\n ifdb: ifdb,\n url: url\n }));\n\n\nvar $760411a9160bcc21$export$79863f625c4e57;\nvar $760411a9160bcc21$export$ccc8042d79dd0831;\n$760411a9160bcc21$export$79863f625c4e57 = `-soi4G_games`;\n$760411a9160bcc21$export$ccc8042d79dd0831 = `-soi4G_tutorial`;\n\n\nconst $a9795ef4044b2e22$var$tutorialGame = {\n name: \"The Dreamhold\",\n ifdb: \"https://ifdb.org/viewgame?id=3myqnrs64nbtwdaz\",\n url: \"https://mirror.ifarchive.org/if-archive/games/zcode/dreamhold.z8\"\n};\nfunction $a9795ef4044b2e22$export$2e2bcd8739ae039() {\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"main\", {\n className: $760411a9160bcc21$export$79863f625c4e57,\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"h1\", {\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://ifdb.org/\",\n title: \"The Interactive Fiction Database\",\n children: \"IFDB\"\n }),\n \" Games\"\n ]\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"p\", {\n children: [\n \"Choose one or \",\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$a6c7ac8248d6e38a), {\n href: \"/\",\n children: \"go back\"\n }),\n \".\"\n ]\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n className: $760411a9160bcc21$export$ccc8042d79dd0831,\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Tutorial\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"p\", {\n children: \"If you are not familiar with Interactive Fiction, you should start with this tutorial game by\\xa0Andrew\\xa0Plotkin:\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"ul\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"li\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $c416337fc7df6b27$export$2e2bcd8739ae039), {\n ...$a9795ef4044b2e22$var$tutorialGame\n })\n })\n })\n ]\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Interactive Fiction Top 50 of All Time\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"p\", {\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://ifdb.org/search?comp&sortby=awn&searchfor=series%3AInteractive+Fiction+Top+50+of+All+Time\",\n children: \"Every four years \"\n }),\n \", Victor Gijsbers puts together a list of the top 50 IF games of all time. Here is an almost complete and slightly rearranged version of the \",\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://ifdb.org/viewcomp?id=1lv599reviaxvwo7\",\n children: \"list from 2019\"\n }),\n \":\"\n ]\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"ol\", {\n children: (0, $8072c402bd1a5d6e$export$2e2bcd8739ae039).map((game)=>/*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"li\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $c416337fc7df6b27$export$2e2bcd8739ae039), {\n ...game\n })\n }, game.name))\n })\n ]\n });\n}\n\n\n\n\nvar $6b876c53408b349f$export$97aac956da55dae9;\nvar $6b876c53408b349f$export$b7e3ae3d7c15e42e;\nvar $6b876c53408b349f$export$a8ecead220dd38a6;\nvar $6b876c53408b349f$export$c789db2c85949867;\nvar $6b876c53408b349f$export$d61e5f8e032e1547;\nvar $6b876c53408b349f$export$77694752ff0b3730;\nvar $6b876c53408b349f$export$d9a33280f07116d9;\n$6b876c53408b349f$export$97aac956da55dae9 = `qdlvgW_current`;\n$6b876c53408b349f$export$b7e3ae3d7c15e42e = `qdlvgW_input`;\n$6b876c53408b349f$export$a8ecead220dd38a6 = `qdlvgW_message`;\n$6b876c53408b349f$export$c789db2c85949867 = `qdlvgW_output`;\n$6b876c53408b349f$export$d61e5f8e032e1547 = `qdlvgW_subheader`;\n$6b876c53408b349f$export$77694752ff0b3730 = `qdlvgW_themePreview`;\n$6b876c53408b349f$export$d9a33280f07116d9 = `qdlvgW_themes`;\n\n\nconst $d21b3c63351f5932$var$Preview = (themeEngine, theme)=>/*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n className: [\n $6b876c53408b349f$export$77694752ff0b3730,\n theme\n ].join(\" \"),\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n className: $6b876c53408b349f$export$c789db2c85949867,\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $6b876c53408b349f$export$a8ecead220dd38a6,\n $6b876c53408b349f$export$b7e3ae3d7c15e42e\n ].join(\" \"),\n children: \"> look\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"br\", {})\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $6b876c53408b349f$export$a8ecead220dd38a6,\n $6b876c53408b349f$export$d61e5f8e032e1547\n ].join(\" \"),\n children: theme\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n children: \"Observe a vibrant demonstration of colors at work, showcasing their versatile usage right before your eyes.\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"br\", {})\n })\n ]\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"button\", {\n onClick: ()=>themeEngine.setTheme(theme),\n children: \"Apply this colors\"\n })\n ]\n }, theme);\nfunction $d21b3c63351f5932$export$2e2bcd8739ae039({ themeEngine: themeEngine }) {\n const themes = themeEngine.themes.map((theme)=>$d21b3c63351f5932$var$Preview(themeEngine, theme));\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"main\", {\n className: $6b876c53408b349f$export$d9a33280f07116d9,\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"h1\", {\n children: \"Themes Page\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"p\", {\n children: [\n \"Choose one or \",\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$a6c7ac8248d6e38a), {\n href: \"/\",\n children: \"go back\"\n }),\n \".\"\n ]\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n className: [\n $6b876c53408b349f$export$77694752ff0b3730,\n $6b876c53408b349f$export$97aac956da55dae9\n ].join(\" \"),\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Current Theme\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n className: $6b876c53408b349f$export$c789db2c85949867,\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $6b876c53408b349f$export$a8ecead220dd38a6,\n $6b876c53408b349f$export$b7e3ae3d7c15e42e\n ].join(\" \"),\n children: \"> look\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"br\", {})\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $6b876c53408b349f$export$a8ecead220dd38a6,\n $6b876c53408b349f$export$d61e5f8e032e1547\n ].join(\" \"),\n children: [\n \"Selected: \",\n themeEngine.currentTheme\n ]\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n children: \"You can set random one with the button below or choose any theme from the list.\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"br\", {})\n })\n ]\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"button\", {\n onClick: ()=>themeEngine.setRandomTheme(),\n children: \"Set a random theme\"\n })\n ]\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"h2\", {\n children: \"Theme List\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n children: themes\n })\n ]\n });\n}\n\n\n\n\n\n\n/*\n\nEmglken port of Bocfel\n======================\n\nCopyright (c) 2021 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ /*\n\nEmglken VM\n==========\n\nCopyright (c) 2022 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ /*\n\nEmglken File System\n===================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ const $02f1d47ba060901a$var$DIR_MODE = 16895 // 040777\n;\nconst $02f1d47ba060901a$var$FILE_MODE = 33206 // 100666\n;\nconst $02f1d47ba060901a$var$SEEK_SET = 0;\nconst $02f1d47ba060901a$var$SEEK_CUR = 1;\nconst $02f1d47ba060901a$var$SEEK_END = 2;\n// WASI error codes\n// See https://github.com/WebAssembly/wasi-libc/blob/master/libc-bottom-half/headers/public/wasi/api.h\nconst $02f1d47ba060901a$var$EINVAL = 28;\nconst $02f1d47ba060901a$var$ENOENT = 44;\n// Convert Linux flags to Glk flags\nconst $02f1d47ba060901a$var$filemode_Write = 1;\nconst $02f1d47ba060901a$var$filemode_Read = 2;\nconst $02f1d47ba060901a$var$filemode_ReadWrite = 3;\nconst $02f1d47ba060901a$var$filemode_WriteAppend = 5;\nfunction $02f1d47ba060901a$var$convert_flags(flags) {\n // O_APPEND => filemode_WriteAppend\n if (flags & 0x400) return $02f1d47ba060901a$var$filemode_WriteAppend;\n // O_WRONLY => filemode_Write\n if (flags & 1) return $02f1d47ba060901a$var$filemode_Write;\n // O_RDWR => filemode_ReadWrite\n if (flags & 2) return $02f1d47ba060901a$var$filemode_ReadWrite;\n // O_RDONLY => filemode_Read\n return $02f1d47ba060901a$var$filemode_Read;\n}\nclass $02f1d47ba060901a$export$2e2bcd8739ae039 {\n constructor(VM){\n this.dialog = VM.options.Dialog;\n this.streaming = this.dialog.streaming;\n this.FS = VM.Module.FS;\n this.VM = VM;\n this.filename_map = {};\n this.filename_counter = 0;\n }\n close(stream) {\n if (stream.name === \"storyfile\") ;\n else {\n if (this.streaming) stream.fstream.fclose();\n else if (stream.fmode !== $02f1d47ba060901a$var$filemode_Read) this.dialog.file_write(stream.fref, stream.data);\n }\n }\n createNode(parent, name, mode /*, dev*/ ) {\n const FS = this.FS;\n if (!FS.isDir(mode) && !FS.isFile(mode)) throw new FS.ErrnoError($02f1d47ba060901a$var$EINVAL);\n const node = FS.createNode(parent, name, mode);\n node.node_ops = this;\n node.stream_ops = this;\n node.timestamp = Date.now();\n return node;\n }\n getattr(node) {\n // At present only the size of the storyfile will be returned, as needed by Bocfel\n const size = node.name === \"storyfile\" ? this.VM.data.length : 0;\n // Not sure what to return here, so only return stuff some of it\n return {\n atime: new Date(node.timestamp),\n ctime: new Date(node.timestamp),\n dev: 1,\n gid: 0,\n ino: node.id,\n mode: node.mode,\n mtime: new Date(node.timestamp),\n nlink: 1,\n rdev: node.rdev,\n size: size,\n uid: 0\n };\n }\n // Get a Dialog ref for non-streaming Dialogs\n get_dialog_ref(filename) {\n let [name, usage] = filename.split(\".\");\n // RemGlk sends usages starting with 'glk', but Dialog wants them without\n usage = usage.replace(\"glk\", \"\");\n // Retrieve the game ID if opening a savefile\n let gameid = \"\";\n if (usage === \"save\") gameid = this.VM.Module.AsciiToString(this.VM.Module._gidispatch_get_game_id());\n return this.dialog.file_construct_ref(name, usage, gameid);\n }\n llseek(stream, offset, whence) {\n let position = offset;\n if (whence === $02f1d47ba060901a$var$SEEK_CUR) position += stream.position;\n else if (whence === $02f1d47ba060901a$var$SEEK_END) {\n if (stream.name === \"storyfile\") position += stream.data.length;\n else if (this.streaming) {\n const curpos = stream.fstream.ftell();\n stream.fstream.fseek(0, $02f1d47ba060901a$var$SEEK_END);\n position += stream.fstream.ftell();\n stream.fstream.fseek(curpos, $02f1d47ba060901a$var$SEEK_SET);\n } else position += stream.data.length;\n }\n if (position < 0) throw new this.FS.ErrnoError($02f1d47ba060901a$var$EINVAL);\n return position;\n }\n lookup(parent, name) {\n if (name !== \"storyfile\") {\n const realname = this.filename_map[name] || name;\n if (!this.dialog.file_ref_exists(this.streaming ? {\n filename: realname\n } : this.get_dialog_ref(realname))) throw new this.FS.ErrnoError($02f1d47ba060901a$var$ENOENT);\n }\n return this.createNode(parent, name, $02f1d47ba060901a$var$FILE_MODE);\n }\n mknod(parent, name, mode /*, dev*/ ) {\n return this.createNode(parent, name, mode);\n }\n mmap() {\n throw new Error(\"EmglkenFS.mmap\");\n }\n mount() {\n return this.createNode(null, \"/\", $02f1d47ba060901a$var$DIR_MODE, 0);\n }\n msync() {\n throw new Error(\"EmglkenFS.msync\");\n }\n open(stream) {\n stream.name = stream.node.name;\n if (stream.name === \"storyfile\") stream.data = this.VM.data;\n else {\n const fmode = $02f1d47ba060901a$var$convert_flags(stream.flags);\n const realname = this.filename_map[stream.name] || stream.name;\n if (this.streaming) stream.fstream = this.dialog.file_fopen(fmode, {\n filename: realname\n });\n else {\n stream.fref = this.get_dialog_ref(realname);\n stream.fmode = fmode;\n // Read the content if not overwriting\n stream.data = null;\n if (fmode !== $02f1d47ba060901a$var$filemode_Write) stream.data = this.dialog.file_read(stream.fref);\n // If no file and not reading, create a blank file\n if (stream.data == null) {\n stream.data = new Uint8Array(0);\n if (fmode !== $02f1d47ba060901a$var$filemode_Read) this.dialog.file_write(stream.fref, \"\", true);\n }\n //stream.position = fmode === filemode_WriteAppend ? data.length : 0\n }\n }\n }\n read(stream, buffer, offset, length, position) {\n if (length === 0) return 0;\n if (stream.name === \"storyfile\") {\n const size = Math.min(stream.data.length - position, length);\n buffer.set(stream.data.subarray(position, position + size), offset);\n return size;\n } else if (this.streaming) {\n stream.fstream.fseek(position, $02f1d47ba060901a$var$SEEK_SET);\n const buf = stream.fstream.BufferClass.from(buffer.buffer, offset, length);\n return stream.fstream.fread(buf, length);\n } else {\n const size = Math.min(stream.data.length - position, length);\n buffer.set(stream.data.subarray(position, position + size), offset);\n return size;\n }\n }\n readdir() {\n throw new Error(\"EmglkenFS.readdir\");\n }\n readlink() {\n throw new this.FS.ErrnoError($02f1d47ba060901a$var$EINVAL);\n }\n // electrofs.js will give a full system path, which we can't handle. So store the full path and return a fake file name\n register_filename(filename, usage) {\n const suffix = usage === \"save\" ? \".glksave\" : usage === \"data\" ? \".glkdata\" : \".txt\";\n if (!/\\.(glkdata|glksave|txt)$/.test(filename)) filename = filename + suffix;\n if (this.filename_map[filename]) return this.filename_map[filename];\n const fakename = \"emglken_fake_file_\" + this.filename_counter++;\n this.filename_map[filename] = fakename;\n this.filename_map[fakename + suffix] = filename;\n return fakename;\n }\n rename() {\n throw new Error(\"EmglkenFS.rename\");\n }\n rmdir() {\n throw new Error(\"EmglkenFS.rmdir\");\n }\n setattr() {\n // I don't think we need to do anything here?\n // Maybe truncate a file?\n }\n symlink() {\n throw new Error(\"EmglkenFS.symlink\");\n }\n unlink(parent, name) {\n const realname = this.filename_map[name] || name;\n this.dialog.file_remove_ref(this.get_dialog_ref(realname));\n }\n write(stream, buffer, offset, length, position) {\n if (stream.name === \"storyfile\") throw new Error(\"EmglkenFS.write: cannot write to storyfile\");\n if (this.streaming) {\n stream.fstream.fseek(position, $02f1d47ba060901a$var$SEEK_SET);\n const buf = stream.fstream.BufferClass.from(buffer).subarray(offset, offset + length);\n return stream.fstream.fwrite(buf, length);\n } else {\n position = position || stream.position;\n const end_of_write = length + position;\n if (end_of_write > stream.data.length) {\n const old_data = stream.data;\n stream.data = new Uint8Array(end_of_write);\n stream.data.set(old_data);\n }\n stream.data.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n}\n\n\nconst $7c4ebf67e8338ec8$var$base_options = {\n arguments: [\n \"storyfile\"\n ]\n};\nclass $7c4ebf67e8338ec8$export$2e2bcd8739ae039 {\n // Store the data and options\n init(data, options) {\n this.data = data;\n this.options = Object.assign({}, $7c4ebf67e8338ec8$var$base_options, this.default_options(), options);\n }\n // Start GlkOte and the vmcore\n async start() {\n const encoder = new TextEncoder();\n let buffer = \"\";\n const Module = {\n arguments: this.options.show_help ? [\n \"-help\"\n ] : this.options.arguments,\n emglken_stdin_buffers: [],\n emglken_stdin_ready () {},\n // Fake locateFile so that Lectrote doesn't get tripped up on import.meta.url not being handled in CJS properly\n locateFile () {},\n print: (data)=>{\n if (buffer === \"\" && data !== \"\" && !data.startsWith(\"{\")) console.log(data);\n else {\n buffer += data;\n if (data.endsWith(\"}\")) {\n let obj;\n try {\n obj = JSON.parse(buffer);\n } catch (e) {}\n if (obj) {\n buffer = \"\";\n // Store the usage of a fileref prompt request\n if (obj.specialinput && obj.specialinput.type === \"fileref_prompt\") this.last_fr_usage = obj.specialinput.filetype;\n this.options.GlkOte.update(obj);\n }\n }\n }\n },\n preRun: ()=>{\n const FS = Module.FS;\n this.EFS = new (0, $02f1d47ba060901a$export$2e2bcd8739ae039)(this);\n FS.mkdir(\"/emglken\");\n FS.mount(this.EFS, {}, \"/emglken\");\n FS.chdir(\"/emglken\");\n },\n wasmBinary: this.options.wasmBinary\n };\n this.Module = Module;\n this.options.accept = (data)=>{\n if (data.type === \"specialresponse\" && data.response === \"fileref_prompt\" && data.value) {\n // electrofs.js returns a full path, so register it with EmglkenFS, and return a fake filename\n if (this.EFS.streaming) data.value = this.EFS.register_filename(data.value.filename, this.last_fr_usage);\n else data.value = data.value.filename;\n }\n const json_data = JSON.stringify(data);\n const buffer = encoder.encode(json_data);\n Module.emglken_stdin_buffers.push(buffer);\n Module.emglken_stdin_ready();\n };\n await this.options.vmcore(Module);\n this.options.GlkOte.init(this.options);\n }\n}\n\n\nvar $15b39ab17ec5a236$exports = {};\n\n\n$15b39ab17ec5a236$exports = (parcelRequire(\"6kBsm\")).getBundleURL(\"ejVIo\") + (parcelRequire(\"n9Yfb\")).resolve(\"5EF4K\");\n\n\nvar $1c3c240882313db4$var$Module = (()=>{\n var _scriptDir = \"file:///node_modules/emglken/build/bocfel-core.js\";\n return function(Module = {}) {\n var Module = typeof Module != \"undefined\" ? Module : {};\n var readyPromiseResolve, readyPromiseReject;\n Module[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow)=>{\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary, setWindowTitle;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) scriptDirectory = self.location.href;\n else if (typeof document != \"undefined\" && document.currentScript) scriptDirectory = document.currentScript.src;\n if (_scriptDir) scriptDirectory = _scriptDir;\n if (scriptDirectory.indexOf(\"blob:\") !== 0) scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n else scriptDirectory = \"\";\n read_ = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) readBinary = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n readAsync = (url, onload, onerror)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = ()=>{\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n setWindowTitle = (title)=>document.title = title;\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n var wasmBinary;\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n var noExitRuntime = Module[\"noExitRuntime\"] || false;\n if (typeof WebAssembly != \"object\") abort(\"no native wasm support detected\");\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) abort(text);\n }\n var UTF8Decoder = new TextDecoder(\"utf8\");\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while(heapOrArray[endPtr] && !(endPtr >= endIdx))++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for(var end = ptr; !(end >= maxPtr) && HEAPU8[end];)++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n }\n function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for(var i = 0; i < str.length; ++i){\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n function lengthBytesUTF8(str) {\n var len = 0;\n for(var i = 0; i < str.length; ++i){\n var c = str.charCodeAt(i);\n if (c <= 127) len++;\n else if (c <= 2047) len += 2;\n else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else len += 3;\n }\n return len;\n }\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var wasmTable;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATEXIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n var runtimeKeepaliveCounter = 0;\n function keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [\n Module[\"preRun\"]\n ];\n while(Module[\"preRun\"].length)addOnPreRun(Module[\"preRun\"].shift());\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n }\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n function exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [\n Module[\"postRun\"]\n ];\n while(Module[\"postRun\"].length)addOnPostRun(Module[\"postRun\"].shift());\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n if (Module[\"onAbort\"]) Module[\"onAbort\"](what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n if (Module[\"locateFile\"]) {\n wasmBinaryFile = \"bocfel-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) wasmBinaryFile = locateFile(wasmBinaryFile);\n } else wasmBinaryFile = new URL($15b39ab17ec5a236$exports).href;\n function getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary);\n if (readBinary) return readBinary(file);\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n }\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n else return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n function createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"da\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"na\"];\n addOnInit(Module[\"asm\"][\"ea\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n }\n var tempDouble;\n var tempI64;\n function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async ()=>{\n if (!Module.emglken_stdin_buffers.length) await new Promise((resolve)=>{\n Module.emglken_stdin_ready = resolve;\n });\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) HEAPU8.set(input, buffer);\n else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n }\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n }\n function callRuntimeCallbacks(callbacks) {\n while(callbacks.length > 0)callbacks.shift()(Module);\n }\n var exceptionCaught = [];\n function exception_addRef(info) {\n info.add_ref();\n }\n var uncaughtExceptionCount = 0;\n function ___cxa_begin_catch(ptr) {\n var info = new ExceptionInfo(ptr);\n if (!info.get_caught()) {\n info.set_caught(true);\n uncaughtExceptionCount--;\n }\n info.set_rethrown(false);\n exceptionCaught.push(info);\n exception_addRef(info);\n return info.get_exception_ptr();\n }\n var exceptionLast = 0;\n function exception_decRef(info) {\n if (info.release_ref() && !info.get_rethrown()) {\n var destructor = info.get_destructor();\n if (destructor) ((a1)=>dynCall_ii.apply(null, [\n destructor,\n a1\n ]))(info.excPtr);\n ___cxa_free_exception(info.excPtr);\n }\n }\n function ___cxa_end_catch() {\n _setThrew(0);\n var info = exceptionCaught.pop();\n exception_decRef(info);\n exceptionLast = 0;\n }\n function ExceptionInfo(excPtr) {\n this.excPtr = excPtr;\n this.ptr = excPtr - 24;\n this.set_type = function(type) {\n HEAPU32[this.ptr + 4 >> 2] = type;\n };\n this.get_type = function() {\n return HEAPU32[this.ptr + 4 >> 2];\n };\n this.set_destructor = function(destructor) {\n HEAPU32[this.ptr + 8 >> 2] = destructor;\n };\n this.get_destructor = function() {\n return HEAPU32[this.ptr + 8 >> 2];\n };\n this.set_refcount = function(refcount) {\n HEAP32[this.ptr >> 2] = refcount;\n };\n this.set_caught = function(caught) {\n caught = caught ? 1 : 0;\n HEAP8[this.ptr + 12 >> 0] = caught;\n };\n this.get_caught = function() {\n return HEAP8[this.ptr + 12 >> 0] != 0;\n };\n this.set_rethrown = function(rethrown) {\n rethrown = rethrown ? 1 : 0;\n HEAP8[this.ptr + 13 >> 0] = rethrown;\n };\n this.get_rethrown = function() {\n return HEAP8[this.ptr + 13 >> 0] != 0;\n };\n this.init = function(type, destructor) {\n this.set_adjusted_ptr(0);\n this.set_type(type);\n this.set_destructor(destructor);\n this.set_refcount(0);\n this.set_caught(false);\n this.set_rethrown(false);\n };\n this.add_ref = function() {\n var value = HEAP32[this.ptr >> 2];\n HEAP32[this.ptr >> 2] = value + 1;\n };\n this.release_ref = function() {\n var prev = HEAP32[this.ptr >> 2];\n HEAP32[this.ptr >> 2] = prev - 1;\n return prev === 1;\n };\n this.set_adjusted_ptr = function(adjustedPtr) {\n HEAPU32[this.ptr + 16 >> 2] = adjustedPtr;\n };\n this.get_adjusted_ptr = function() {\n return HEAPU32[this.ptr + 16 >> 2];\n };\n this.get_exception_ptr = function() {\n var isPointer = ___cxa_is_pointer_type(this.get_type());\n if (isPointer) return HEAPU32[this.excPtr >> 2];\n var adjusted = this.get_adjusted_ptr();\n if (adjusted !== 0) return adjusted;\n return this.excPtr;\n };\n }\n function ___resumeException(ptr) {\n if (!exceptionLast) exceptionLast = ptr;\n throw ptr;\n }\n function ___cxa_find_matching_catch() {\n var thrown = exceptionLast;\n if (!thrown) {\n setTempRet0(0);\n return 0;\n }\n var info = new ExceptionInfo(thrown);\n info.set_adjusted_ptr(thrown);\n var thrownType = info.get_type();\n if (!thrownType) {\n setTempRet0(0);\n return thrown;\n }\n for(var i = 0; i < arguments.length; i++){\n var caughtType = arguments[i];\n if (caughtType === 0 || caughtType === thrownType) break;\n var adjusted_ptr_addr = info.ptr + 16;\n if (___cxa_can_catch(caughtType, thrownType, adjusted_ptr_addr)) {\n setTempRet0(caughtType);\n return thrown;\n }\n }\n setTempRet0(thrownType);\n return thrown;\n }\n var ___cxa_find_matching_catch_2 = ___cxa_find_matching_catch;\n var ___cxa_find_matching_catch_3 = ___cxa_find_matching_catch;\n var ___cxa_find_matching_catch_4 = ___cxa_find_matching_catch;\n var ___cxa_find_matching_catch_5 = ___cxa_find_matching_catch;\n var ___cxa_find_matching_catch_6 = ___cxa_find_matching_catch;\n var ___cxa_find_matching_catch_7 = ___cxa_find_matching_catch;\n function ___cxa_rethrow() {\n var info = exceptionCaught.pop();\n if (!info) abort(\"no exception to throw\");\n var ptr = info.excPtr;\n if (!info.get_rethrown()) {\n exceptionCaught.push(info);\n info.set_rethrown(true);\n info.set_caught(false);\n uncaughtExceptionCount++;\n }\n exceptionLast = ptr;\n throw ptr;\n }\n function ___cxa_throw(ptr, type, destructor) {\n var info = new ExceptionInfo(ptr);\n info.init(type, destructor);\n exceptionLast = ptr;\n uncaughtExceptionCount++;\n throw ptr;\n }\n function ___cxa_uncaught_exceptions() {\n return uncaughtExceptionCount;\n }\n var PATH = {\n isAbs: (path)=>path.charAt(0) === \"/\",\n splitPath: (filename)=>{\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot)=>{\n var up = 0;\n for(var i = parts.length - 1; i >= 0; i--){\n var last = parts[i];\n if (last === \".\") parts.splice(i, 1);\n else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) for(; up; up--)parts.unshift(\"..\");\n return parts;\n },\n normalize: (path)=>{\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p)=>!!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) path = \".\";\n if (path && trailingSlash) path += \"/\";\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: (path)=>{\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) return \".\";\n if (dir) dir = dir.substr(0, dir.length - 1);\n return root + dir;\n },\n basename: (path)=>{\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r)=>{\n return PATH.normalize(l + \"/\" + r);\n }\n };\n function getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return ()=>{\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return ()=>abort(\"randomDevice\");\n }\n var PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for(var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--){\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") throw new TypeError(\"Arguments to path.resolve must be strings\");\n else if (!path) return \"\";\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p)=>!!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to)=>{\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for(; start < arr.length; start++){\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for(; end >= 0; end--){\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for(var i = 0; i < length; i++)if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n var outputParts = [];\n for(var i = samePartsLength; i < fromParts.length; i++)outputParts.push(\"..\");\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n var TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) throw new FS.ErrnoError(43);\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) throw new FS.ErrnoError(60);\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) throw new FS.ErrnoError(60);\n try {\n for(var i = 0; i < length; i++)stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) result += \"\\n\";\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) result += \"\\n\";\n }\n if (!result) return null;\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n };\n function mmapAlloc(size) {\n abort();\n }\n var MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16895, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) throw new FS.ErrnoError(63);\n if (!MEMFS.ops_table) MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1048576;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) attr.size = 4096;\n else if (FS.isFile(node.mode)) attr.size = node.usedBytes;\n else if (FS.isLink(node.mode)) attr.size = node.link.length;\n else attr.size = 0;\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) node.mode = attr.mode;\n if (attr.timestamp !== undefined) node.timestamp = attr.timestamp;\n if (attr.size !== undefined) MEMFS.resizeFileStorage(node, attr.size);\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for(var i in new_node.contents)throw new FS.ErrnoError(55);\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for(var i in node.contents)throw new FS.ErrnoError(55);\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [\n \".\",\n \"..\"\n ];\n for(var key in node.contents){\n if (!node.contents.hasOwnProperty(key)) continue;\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 41471, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) throw new FS.ErrnoError(28);\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) buffer.set(contents.subarray(position, position + size), offset);\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) canOwn = false;\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);\n else for(var i = 0; i < length; i++)node.contents[position + i] = buffer[offset + i];\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) position += stream.position;\n else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) position += stream.node.usedBytes;\n }\n if (position < 0) throw new FS.ErrnoError(28);\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) contents = contents.subarray(position, position + length);\n else contents = Array.prototype.slice.call(contents, position, position + length);\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n };\n function asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, (arrayBuffer)=>{\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, (event)=>{\n if (onerror) onerror();\n else throw 'Loading data file \"' + url + '\" failed.';\n });\n if (dep) addRunDependency(dep);\n }\n var FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {})=>{\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) throw new FS.ErrnoError(32);\n var parts = path.split(\"/\").filter((p)=>!!p);\n var current = FS.root;\n var current_path = \"/\";\n for(var i = 0; i < parts.length; i++){\n var islast = i === parts.length - 1;\n if (islast && opts.parent) break;\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) current = current.mounted.root;\n }\n if (!islast || opts.follow) {\n var count = 0;\n while(FS.isLink(current.mode)){\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) throw new FS.ErrnoError(32);\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: (node)=>{\n var path;\n while(true){\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name)=>{\n var hash = 0;\n for(var i = 0; i < name.length; i++)hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) FS.nameTable[hash] = node.name_next;\n else {\n var current = FS.nameTable[hash];\n while(current){\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name)=>{\n var errCode = FS.mayLookup(parent);\n if (errCode) throw new FS.ErrnoError(errCode, parent);\n var hash = FS.hashName(parent.id, name);\n for(var node = FS.nameTable[hash]; node; node = node.name_next){\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) return node;\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev)=>{\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: (node)=>{\n FS.hashRemoveNode(node);\n },\n isRoot: (node)=>{\n return node === node.parent;\n },\n isMountpoint: (node)=>{\n return !!node.mounted;\n },\n isFile: (mode)=>{\n return (mode & 61440) === 32768;\n },\n isDir: (mode)=>{\n return (mode & 61440) === 16384;\n },\n isLink: (mode)=>{\n return (mode & 61440) === 40960;\n },\n isChrdev: (mode)=>{\n return (mode & 61440) === 8192;\n },\n isBlkdev: (mode)=>{\n return (mode & 61440) === 24576;\n },\n isFIFO: (mode)=>{\n return (mode & 61440) === 4096;\n },\n isSocket: (mode)=>{\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: (str)=>{\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") throw new Error(\"Unknown file open mode: \" + str);\n return flags;\n },\n flagsToPermissionString: (flag)=>{\n var perms = [\n \"r\",\n \"w\",\n \"rw\"\n ][flag & 3];\n if (flag & 512) perms += \"w\";\n return perms;\n },\n nodePermissions: (node, perms)=>{\n if (FS.ignorePermissions) return 0;\n if (perms.includes(\"r\") && !(node.mode & 292)) return 2;\n else if (perms.includes(\"w\") && !(node.mode & 146)) return 2;\n else if (perms.includes(\"x\") && !(node.mode & 73)) return 2;\n return 0;\n },\n mayLookup: (dir)=>{\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name)=>{\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir)=>{\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) return errCode;\n if (isdir) {\n if (!FS.isDir(node.mode)) return 54;\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) return 10;\n } else {\n if (FS.isDir(node.mode)) return 31;\n }\n return 0;\n },\n mayOpen: (node, flags)=>{\n if (!node) return 44;\n if (FS.isLink(node.mode)) return 32;\n else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) return 31;\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS)=>{\n for(var fd = fd_start; fd <= fd_end; fd++){\n if (!FS.streams[fd]) return fd;\n }\n throw new FS.ErrnoError(33);\n },\n getStream: (fd)=>FS.streams[fd],\n createStream: (stream, fd_start, fd_end)=>{\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: (fd)=>{\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: (stream)=>{\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n },\n llseek: ()=>{\n throw new FS.ErrnoError(70);\n }\n },\n major: (dev)=>dev >> 8,\n minor: (dev)=>dev & 255,\n makedev: (ma, mi)=>ma << 8 | mi,\n registerDevice: (dev, ops)=>{\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: (dev)=>FS.devices[dev],\n getMounts: (mount)=>{\n var mounts = [];\n var check = [\n mount\n ];\n while(check.length){\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback)=>{\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) doCallback(null);\n }\n mounts.forEach((mount)=>{\n if (!mount.type.syncfs) return done(null);\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint)=>{\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) throw new FS.ErrnoError(10);\n else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n if (!FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) FS.root = mountRoot;\n else if (node) {\n node.mounted = mount;\n if (node.mount) node.mount.mounts.push(mount);\n }\n return mountRoot;\n },\n unmount: (mountpoint)=>{\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) throw new FS.ErrnoError(28);\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash)=>{\n var current = FS.nameTable[hash];\n while(current){\n var next = current.name_next;\n if (mounts.includes(current.mount)) FS.destroyNode(current);\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name)=>{\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") throw new FS.ErrnoError(28);\n var errCode = FS.mayCreate(parent, name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.mknod) throw new FS.ErrnoError(63);\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode)=>{\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode)=>{\n mode = mode !== undefined ? mode : 511;\n mode &= 1023;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode)=>{\n var dirs = path.split(\"/\");\n var d = \"\";\n for(var i = 0; i < dirs.length; ++i){\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev)=>{\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath)=>{\n if (!PATH_FS.resolve(oldpath)) throw new FS.ErrnoError(44);\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.symlink) throw new FS.ErrnoError(63);\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path)=>{\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) throw new FS.ErrnoError(75);\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(28);\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(55);\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) return;\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) throw new FS.ErrnoError(errCode);\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!old_dir.node_ops.rename) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) throw new FS.ErrnoError(10);\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally{\n FS.hashAddNode(old_node);\n }\n },\n rmdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.rmdir) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) throw new FS.ErrnoError(54);\n return node.node_ops.readdir(node);\n },\n unlink: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.unlink) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: (path)=>{\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) throw new FS.ErrnoError(44);\n if (!link.node_ops.readlink) throw new FS.ErrnoError(28);\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow)=>{\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) throw new FS.ErrnoError(44);\n if (!node.node_ops.getattr) throw new FS.ErrnoError(63);\n return node.node_ops.getattr(node);\n },\n lstat: (path)=>{\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & -4096,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode)=>{\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid)=>{\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len)=>{\n if (len < 0) throw new FS.ErrnoError(28);\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n if (FS.isDir(node.mode)) throw new FS.ErrnoError(31);\n if (!FS.isFile(node.mode)) throw new FS.ErrnoError(28);\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(28);\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode)=>{\n if (path === \"\") throw new FS.ErrnoError(44);\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) mode = mode & 4095 | 32768;\n else mode = 0;\n var node;\n if (typeof path == \"object\") node = path;\n else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) throw new FS.ErrnoError(20);\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) throw new FS.ErrnoError(44);\n if (FS.isChrdev(node.mode)) flags &= -513;\n if (flags & 65536 && !FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n if (flags & 512 && !created) FS.truncate(node, 0);\n flags &= -131713;\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) FS.readFiles[path] = 1;\n }\n return stream;\n },\n close: (stream)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) stream.stream_ops.close(stream);\n } catch (e) {\n throw e;\n } finally{\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: (stream)=>{\n return stream.fd === null;\n },\n llseek: (stream, offset, whence)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (!stream.seekable || !stream.stream_ops.llseek) throw new FS.ErrnoError(70);\n if (whence != 0 && whence != 1 && whence != 2) throw new FS.ErrnoError(28);\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.read) throw new FS.ErrnoError(28);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.write) throw new FS.ErrnoError(28);\n if (stream.seekable && stream.flags & 1024) FS.llseek(stream, 0, 2);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (offset < 0 || length <= 0) throw new FS.ErrnoError(28);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) throw new FS.ErrnoError(43);\n if (!stream.stream_ops.allocate) throw new FS.ErrnoError(138);\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags)=>{\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) throw new FS.ErrnoError(2);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(2);\n if (!stream.stream_ops.mmap) throw new FS.ErrnoError(43);\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags)=>{\n if (!stream.stream_ops.msync) return 0;\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: (stream)=>0,\n ioctl: (stream, cmd, arg)=>{\n if (!stream.stream_ops.ioctl) throw new FS.ErrnoError(59);\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {})=>{\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") ret = UTF8ArrayToString(buf, 0);\n else if (opts.encoding === \"binary\") ret = buf;\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {})=>{\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n else throw new Error(\"Unsupported data type\");\n FS.close(stream);\n },\n cwd: ()=>FS.currentPath,\n chdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) throw new FS.ErrnoError(44);\n if (!FS.isDir(lookup.node.mode)) throw new FS.ErrnoError(54);\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) throw new FS.ErrnoError(errCode);\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: ()=>{\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: ()=>{\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: ()=>0,\n write: (stream, buffer, offset, length, pos)=>length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: ()=>{\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: ()=>{\n var node = FS.createNode(proc_self, \"fd\", 16895, 73);\n node.node_ops = {\n lookup: (parent, name)=>{\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: ()=>stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: ()=>{\n if (Module[\"stdin\"]) FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n if (Module[\"stdout\"]) FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n if (Module[\"stderr\"]) FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n else FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: ()=>{\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [\n 44\n ].forEach((code)=>{\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: ()=>{\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error)=>{\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: ()=>{\n FS.init.initialized = false;\n _fflush(0);\n for(var i = 0; i < FS.streams.length; i++){\n var stream = FS.streams[i];\n if (!stream) continue;\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite)=>{\n var mode = 0;\n if (canRead) mode |= 365;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink)=>{\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) return null;\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink)=>{\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite)=>{\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while(parts.length){\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn)=>{\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for(var i = 0, len = data.length; i < len; ++i)arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: (stream)=>{\n stream.seekable = false;\n },\n close: (stream)=>{\n if (output && output.buffer && output.buffer.length) output(10);\n },\n read: (stream, buffer, offset, length, pos)=>{\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos)=>{\n for(var i = 0; i < length; i++)try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: (obj)=>{\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n else if (read_) try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n else throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n },\n createLazyFile: (parent, name, url, canRead, canWrite)=>{\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) return undefined;\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1048576;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to)=>{\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) return new Uint8Array(xhr.response || []);\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter((chunkNum)=>{\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") lazyArray.chunks[chunkNum] = doXHR(start, end);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else var properties = {\n isDevice: false,\n url: url\n };\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) node.contents = properties.contents;\n else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach((key)=>{\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents.get(position + i);\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position)=>{\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags)=>{\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish)=>{\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, ()=>{\n if (onerror) onerror();\n removeRunDependency(dep);\n })) return;\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") asyncLoad(url, (byteArray)=>processData(byteArray), onerror);\n else processData(url);\n },\n indexedDB: ()=>{\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: ()=>{\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = ()=>{\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = ()=>{\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n try {\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var getRequest = files.get(path);\n getRequest.onsuccess = ()=>{\n if (FS.analyzePath(path).exists) FS.unlink(path);\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n };\n var SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) return path;\n var dir;\n if (dirfd === -100) dir = FS.cwd();\n else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) throw new FS.ErrnoError(44);\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) return -54;\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [\n stat.size >>> 0,\n (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [\n Math.floor(atime / 1e3) >>> 0,\n (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(mtime / 1e3) >>> 0,\n (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(ctime / 1e3) >>> 0,\n (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [\n stat.ino >>> 0,\n (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n if (flags & 2) return 0;\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n };\n function ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & -8) return -28;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) return -44;\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) return -2;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n }\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(cmd){\n case 0:\n var arg = SYSCALLS.get();\n if (arg < 0) return -28;\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4:\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n case 5:\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(op){\n case 21509:\n case 21505:\n if (!stream.tty) return -59;\n return 0;\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n if (!stream.tty) return -59;\n return 0;\n case 21519:\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n case 21520:\n if (!stream.tty) return -59;\n return -28;\n case 21531:\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n case 21523:\n if (!stream.tty) return -59;\n return 0;\n case 21524:\n if (!stream.tty) return -59;\n return 0;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var nowIsMonotonic = true;\n function __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n }\n function readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n }\n function __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n }\n var __MONTH_DAYS_LEAP_CUMULATIVE = [\n 0,\n 31,\n 60,\n 91,\n 121,\n 152,\n 182,\n 213,\n 244,\n 274,\n 305,\n 335\n ];\n var __MONTH_DAYS_REGULAR_CUMULATIVE = [\n 0,\n 31,\n 59,\n 90,\n 120,\n 151,\n 181,\n 212,\n 243,\n 273,\n 304,\n 334\n ];\n function __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n }\n function __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n }\n function allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n }\n function _abort() {\n abort(\"\");\n }\n function _emscripten_date_now() {\n return Date.now();\n }\n var _emscripten_get_now;\n _emscripten_get_now = ()=>performance.now();\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n }\n function getHeapMax() {\n return 2147483648;\n }\n function emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) return false;\n let alignUp = (x, multiple)=>x + (multiple - x % multiple) % multiple;\n for(var cutDown = 1; cutDown <= 4; cutDown *= 2){\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) return true;\n }\n return false;\n }\n var ENV = {};\n function getExecutableName() {\n return thisProgram || \"./this.program\";\n }\n function getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": lang,\n \"_\": getExecutableName()\n };\n for(var x in ENV)if (ENV[x] === undefined) delete env[x];\n else env[x] = ENV[x];\n var strings = [];\n for(var x in env)strings.push(x + \"=\" + env[x]);\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n }\n function writeAsciiToMemory(str, buffer, dontAddNull) {\n for(var i = 0; i < str.length; ++i)HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n }\n function _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function(string, i) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n }\n function _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function(string) {\n bufSize += string.length + 1;\n });\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n }\n function _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n }\n function exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) exitRuntime();\n _proc_exit(status);\n }\n var _exit = exitJS;\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n }\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [\n stream.position >>> 0,\n (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function _llvm_eh_typeid_for(type) {\n return type;\n }\n function __arraySum(array, index) {\n var sum = 0;\n for(var i = 0; i <= index; sum += array[i++]);\n return sum;\n }\n var __MONTH_DAYS_LEAP = [\n 31,\n 29,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n ];\n var __MONTH_DAYS_REGULAR = [\n 31,\n 28,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n ];\n function __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while(days > 0){\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) newDate.setMonth(currentMonth + 1);\n else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n }\n function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }\n function _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\"\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for(var rule in EXPANSION_RULES_1)pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n var WEEKDAYS = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ];\n var MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ];\n function leadingSomething(value, digits, character) {\n var str = typeof value == \"number\" ? value.toString() : value || \"\";\n while(str.length < digits)str = character[0] + str;\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) compare = sgn(date1.getDate() - date2.getDate());\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch(janFourth.getDay()){\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n case 1:\n return janFourth;\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) return thisDate.getFullYear() + 1;\n return thisDate.getFullYear();\n }\n return thisDate.getFullYear() - 1;\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function(date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function(date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function(date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function(date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function(date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n \"%d\": function(date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function(date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function(date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function(date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function(date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function(date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12;\n else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function(date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n \"%m\": function(date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function(date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function() {\n return \"\\n\";\n },\n \"%p\": function(date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) return \"AM\";\n return \"PM\";\n },\n \"%S\": function(date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function() {\n return \"\t\";\n },\n \"%u\": function(date) {\n return date.tm_wday || 7;\n },\n \"%U\": function(date) {\n var days = date.tm_yday + 7 - date.tm_wday;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%V\": function(date) {\n var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7);\n if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) val++;\n if (!val) {\n val = 52;\n var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;\n if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) val++;\n } else if (val == 53) {\n var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;\n if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1;\n }\n return leadingNulls(val, 2);\n },\n \"%w\": function(date) {\n return date.tm_wday;\n },\n \"%W\": function(date) {\n var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%y\": function(date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function(date) {\n return date.tm_year + 1900;\n },\n \"%z\": function(date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function(date) {\n return date.tm_zone;\n },\n \"%%\": function() {\n return \"%\";\n }\n };\n pattern = pattern.replace(/%%/g, \"\\x00\\x00\");\n for(var rule in EXPANSION_RULES_2)if (pattern.includes(rule)) pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_2[rule](date));\n pattern = pattern.replace(/\\0\\0/g, \"%\");\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) return 0;\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n }\n function _strftime_l(s, maxsize, format, tm, loc) {\n return _strftime(s, maxsize, format, tm);\n }\n function handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") return EXITSTATUS;\n quit_(1, e);\n }\n function allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n }\n function maybeExit() {\n if (!keepRuntimeAlive()) try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n function callUserCallback(func) {\n if (runtimeExited || ABORT) return;\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n }\n function runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n }\n function runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n }\n var Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [\n \"invoke_*\",\n \"emscripten_sleep\",\n \"emscripten_wget\",\n \"emscripten_wget_data\",\n \"emscripten_idb_load\",\n \"emscripten_idb_store\",\n \"emscripten_idb_delete\",\n \"emscripten_idb_exists\",\n \"emscripten_idb_load_blob\",\n \"emscripten_idb_store_blob\",\n \"SDL_Delay\",\n \"emscripten_scan_registers\",\n \"emscripten_lazy_load_code\",\n \"emscripten_fiber_swap\",\n \"__load_secondary_module\",\n \"fd_sync\",\n \"__wasi_fd_sync\",\n \"_emval_await\",\n \"_dlopen_js\",\n \"__asyncjs__*\"\n ];\n for(var x in imports)(function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n })(x);\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for(var x in exports)(function(x) {\n var original = exports[x];\n if (typeof original == \"function\") ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally{\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n else ret[x] = original;\n })(x);\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") Fibers.trampoline();\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject)=>{\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0)=>{\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) return;\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.resume();\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) throw asyncWasmReturnValue;\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.pause();\n runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach((func)=>callUserCallback(func));\n } else abort(\"invalid state: \" + Asyncify.state);\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep((wakeUp)=>{\n startAsync().then(wakeUp);\n });\n }\n };\n function AsciiToString(ptr) {\n var str = \"\";\n while(true){\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n }\n var FSNode = function(parent, name, mode, rdev) {\n if (!parent) parent = this;\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n var readMode = 365;\n var writeMode = 146;\n Object.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n });\n FS.FSNode = FSNode;\n FS.staticInit();\n var wasmImports = {\n \"S\": __asyncjs__emglken_fill_stdin_buffer,\n \"k\": ___cxa_begin_catch,\n \"n\": ___cxa_end_catch,\n \"a\": ___cxa_find_matching_catch_2,\n \"d\": ___cxa_find_matching_catch_3,\n \"m\": ___cxa_find_matching_catch_4,\n \"s\": ___cxa_find_matching_catch_5,\n \"x\": ___cxa_find_matching_catch_6,\n \"ca\": ___cxa_find_matching_catch_7,\n \"K\": ___cxa_rethrow,\n \"o\": ___cxa_throw,\n \"ba\": ___cxa_uncaught_exceptions,\n \"g\": ___resumeException,\n \"aa\": ___syscall_faccessat,\n \"J\": ___syscall_fcntl64,\n \"$\": ___syscall_getcwd,\n \"_\": ___syscall_ioctl,\n \"Z\": ___syscall_openat,\n \"V\": __emscripten_get_now_is_monotonic,\n \"U\": __localtime_js,\n \"T\": __tzset_js,\n \"D\": _abort,\n \"B\": _emscripten_date_now,\n \"R\": _emscripten_memcpy_big,\n \"Q\": _emscripten_resize_heap,\n \"Y\": _environ_get,\n \"X\": _environ_sizes_get,\n \"C\": _exit,\n \"I\": _fd_close,\n \"W\": _fd_read,\n \"P\": _fd_seek,\n \"H\": _fd_write,\n \"G\": invoke_diii,\n \"F\": invoke_fiii,\n \"q\": invoke_i,\n \"b\": invoke_ii,\n \"c\": invoke_iii,\n \"e\": invoke_iiii,\n \"p\": invoke_iiiii,\n \"u\": invoke_iiiiii,\n \"w\": invoke_iiiiiii,\n \"E\": invoke_iiiiiiii,\n \"A\": invoke_iiiiiiiiiiii,\n \"O\": invoke_ji,\n \"N\": invoke_jiiii,\n \"h\": invoke_v,\n \"i\": invoke_vi,\n \"f\": invoke_vii,\n \"j\": invoke_viii,\n \"r\": invoke_viiii,\n \"t\": invoke_viiiii,\n \"v\": invoke_viiiiiii,\n \"y\": invoke_viiiiiiiiii,\n \"z\": invoke_viiiiiiiiiiiiiii,\n \"l\": _llvm_eh_typeid_for,\n \"M\": _strftime,\n \"L\": _strftime_l\n };\n var asm = createWasm();\n var ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"ea\"]).apply(null, arguments);\n };\n var ___cxa_free_exception = function() {\n return (___cxa_free_exception = Module[\"asm\"][\"fa\"]).apply(null, arguments);\n };\n var _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"ga\"]).apply(null, arguments);\n };\n var ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"ha\"]).apply(null, arguments);\n };\n var _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"ia\"]).apply(null, arguments);\n };\n var _malloc = function() {\n return (_malloc = Module[\"asm\"][\"ja\"]).apply(null, arguments);\n };\n var _free = function() {\n return (_free = Module[\"asm\"][\"ka\"]).apply(null, arguments);\n };\n var _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"la\"]).apply(null, arguments);\n };\n var ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"ma\"]).apply(null, arguments);\n };\n var _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"oa\"]).apply(null, arguments);\n };\n var setTempRet0 = function() {\n return (setTempRet0 = Module[\"asm\"][\"pa\"]).apply(null, arguments);\n };\n var _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n };\n var stackSave = function() {\n return (stackSave = Module[\"asm\"][\"qa\"]).apply(null, arguments);\n };\n var stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"ra\"]).apply(null, arguments);\n };\n var stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"sa\"]).apply(null, arguments);\n };\n var ___cxa_can_catch = function() {\n return (___cxa_can_catch = Module[\"asm\"][\"ta\"]).apply(null, arguments);\n };\n var ___cxa_is_pointer_type = function() {\n return (___cxa_is_pointer_type = Module[\"asm\"][\"ua\"]).apply(null, arguments);\n };\n var dynCall_ii = Module[\"dynCall_ii\"] = function() {\n return (dynCall_ii = Module[\"dynCall_ii\"] = Module[\"asm\"][\"va\"]).apply(null, arguments);\n };\n var dynCall_iiii = Module[\"dynCall_iiii\"] = function() {\n return (dynCall_iiii = Module[\"dynCall_iiii\"] = Module[\"asm\"][\"wa\"]).apply(null, arguments);\n };\n var dynCall_viii = Module[\"dynCall_viii\"] = function() {\n return (dynCall_viii = Module[\"dynCall_viii\"] = Module[\"asm\"][\"xa\"]).apply(null, arguments);\n };\n var dynCall_v = Module[\"dynCall_v\"] = function() {\n return (dynCall_v = Module[\"dynCall_v\"] = Module[\"asm\"][\"ya\"]).apply(null, arguments);\n };\n var dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"za\"]).apply(null, arguments);\n };\n var dynCall_iii = Module[\"dynCall_iii\"] = function() {\n return (dynCall_iii = Module[\"dynCall_iii\"] = Module[\"asm\"][\"Aa\"]).apply(null, arguments);\n };\n var dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"Ba\"]).apply(null, arguments);\n };\n var dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = function() {\n return (dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = Module[\"asm\"][\"Ca\"]).apply(null, arguments);\n };\n var dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() {\n return (dynCall_iiiii = Module[\"dynCall_iiiii\"] = Module[\"asm\"][\"Da\"]).apply(null, arguments);\n };\n var dynCall_i = Module[\"dynCall_i\"] = function() {\n return (dynCall_i = Module[\"dynCall_i\"] = Module[\"asm\"][\"Ea\"]).apply(null, arguments);\n };\n var dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = function() {\n return (dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = Module[\"asm\"][\"Fa\"]).apply(null, arguments);\n };\n var dynCall_viiii = Module[\"dynCall_viiii\"] = function() {\n return (dynCall_viiii = Module[\"dynCall_viiii\"] = Module[\"asm\"][\"Ga\"]).apply(null, arguments);\n };\n var dynCall_ji = Module[\"dynCall_ji\"] = function() {\n return (dynCall_ji = Module[\"dynCall_ji\"] = Module[\"asm\"][\"Ha\"]).apply(null, arguments);\n };\n var dynCall_viiiii = Module[\"dynCall_viiiii\"] = function() {\n return (dynCall_viiiii = Module[\"dynCall_viiiii\"] = Module[\"asm\"][\"Ia\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = function() {\n return (dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = Module[\"asm\"][\"Ja\"]).apply(null, arguments);\n };\n var dynCall_jiiii = Module[\"dynCall_jiiii\"] = function() {\n return (dynCall_jiiii = Module[\"dynCall_jiiii\"] = Module[\"asm\"][\"Ka\"]).apply(null, arguments);\n };\n var dynCall_fiii = Module[\"dynCall_fiii\"] = function() {\n return (dynCall_fiii = Module[\"dynCall_fiii\"] = Module[\"asm\"][\"La\"]).apply(null, arguments);\n };\n var dynCall_diii = Module[\"dynCall_diii\"] = function() {\n return (dynCall_diii = Module[\"dynCall_diii\"] = Module[\"asm\"][\"Ma\"]).apply(null, arguments);\n };\n var dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = function() {\n return (dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = Module[\"asm\"][\"Na\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = Module[\"asm\"][\"Oa\"]).apply(null, arguments);\n };\n var dynCall_viiiiiiiiii = Module[\"dynCall_viiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiii = Module[\"dynCall_viiiiiiiiii\"] = Module[\"asm\"][\"Pa\"]).apply(null, arguments);\n };\n var dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Qa\"]).apply(null, arguments);\n };\n var _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"Ra\"]).apply(null, arguments);\n };\n var _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"Sa\"]).apply(null, arguments);\n };\n var _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"Ta\"]).apply(null, arguments);\n };\n var _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"Ua\"]).apply(null, arguments);\n };\n var ___start_em_js = Module[\"___start_em_js\"] = 52440;\n var ___stop_em_js = Module[\"___stop_em_js\"] = 55125;\n function invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iii(index, a1, a2) {\n var sp = stackSave();\n try {\n return dynCall_iii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n return dynCall_iiiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiii(index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n dynCall_viiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_fiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_fiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_diii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_diii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n dynCall_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_ji(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ji(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_jiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_jiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n Module[\"AsciiToString\"] = AsciiToString;\n Module[\"FS\"] = FS;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach((arg)=>{\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n }\n function run(args = arguments_) {\n if (runDependencies > 0) return;\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else doRun();\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [\n Module[\"preInit\"]\n ];\n while(Module[\"preInit\"].length > 0)Module[\"preInit\"].pop()();\n }\n var shouldRunNow = true;\n if (Module[\"noInitialRun\"]) shouldRunNow = false;\n run();\n return Module.ready;\n };\n})();\nvar $1c3c240882313db4$export$2e2bcd8739ae039 = $1c3c240882313db4$var$Module;\n\n\nclass $cc564b5c889ac118$export$2e2bcd8739ae039 extends (0, $7c4ebf67e8338ec8$export$2e2bcd8739ae039) {\n default_options() {\n return {\n vmcore: (0, $1c3c240882313db4$export$2e2bcd8739ae039)\n };\n }\n}\n\n\n/*\n\nEmglken port of Git\n===================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ \nvar $90bdb86e43292d66$exports = {};\n\n\n$90bdb86e43292d66$exports = (parcelRequire(\"6kBsm\")).getBundleURL(\"ejVIo\") + (parcelRequire(\"n9Yfb\")).resolve(\"9Qh6d\");\n\n\nvar $a5c3b71e8affc86f$var$Module = (()=>{\n var _scriptDir = \"file:///node_modules/emglken/build/git-core.js\";\n return function(Module = {}) {\n var Module = typeof Module != \"undefined\" ? Module : {};\n var readyPromiseResolve, readyPromiseReject;\n Module[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow)=>{\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary, setWindowTitle;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) scriptDirectory = self.location.href;\n else if (typeof document != \"undefined\" && document.currentScript) scriptDirectory = document.currentScript.src;\n if (_scriptDir) scriptDirectory = _scriptDir;\n if (scriptDirectory.indexOf(\"blob:\") !== 0) scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n else scriptDirectory = \"\";\n read_ = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) readBinary = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n readAsync = (url, onload, onerror)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = ()=>{\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n setWindowTitle = (title)=>document.title = title;\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n var wasmBinary;\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n var noExitRuntime = Module[\"noExitRuntime\"] || false;\n if (typeof WebAssembly != \"object\") abort(\"no native wasm support detected\");\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) abort(text);\n }\n var UTF8Decoder = new TextDecoder(\"utf8\");\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while(heapOrArray[endPtr] && !(endPtr >= endIdx))++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for(var end = ptr; !(end >= maxPtr) && HEAPU8[end];)++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n }\n function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for(var i = 0; i < str.length; ++i){\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n function lengthBytesUTF8(str) {\n var len = 0;\n for(var i = 0; i < str.length; ++i){\n var c = str.charCodeAt(i);\n if (c <= 127) len++;\n else if (c <= 2047) len += 2;\n else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else len += 3;\n }\n return len;\n }\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var wasmTable;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATEXIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n var runtimeKeepaliveCounter = 0;\n function keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [\n Module[\"preRun\"]\n ];\n while(Module[\"preRun\"].length)addOnPreRun(Module[\"preRun\"].shift());\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n }\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n function exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [\n Module[\"postRun\"]\n ];\n while(Module[\"postRun\"].length)addOnPostRun(Module[\"postRun\"].shift());\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n if (Module[\"onAbort\"]) Module[\"onAbort\"](what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n if (Module[\"locateFile\"]) {\n wasmBinaryFile = \"git-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) wasmBinaryFile = locateFile(wasmBinaryFile);\n } else wasmBinaryFile = new URL($90bdb86e43292d66$exports).href;\n function getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary);\n if (readBinary) return readBinary(file);\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n }\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n else return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n function createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"E\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"N\"];\n addOnInit(Module[\"asm\"][\"F\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n }\n var tempDouble;\n var tempI64;\n function emglken_common_buffer_transformer(buf, len, numchars, func, dont_reduce) {\n const index = buf >> 2;\n const utf32 = HEAPU32.subarray(index, index + numchars);\n const data = dont_reduce ? utf32 : utf32.reduce((prev, ch)=>prev + String.fromCodePoint(ch), \"\");\n const new_str = func(data);\n const newbuf = Uint32Array.from(new_str, (ch)=>ch.codePointAt(0));\n const newlen = newbuf.length;\n HEAPU32.set(newbuf.subarray(0, Math.min(len, newlen)), index);\n return newlen;\n }\n function glk_buffer_to_lower_case_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, (str)=>str.toLowerCase());\n }\n function glk_buffer_to_upper_case_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, (str)=>str.toUpperCase());\n }\n function glk_buffer_to_title_case_uni(buf, len, numchars, lowerrest) {\n return emglken_common_buffer_transformer(buf, len, numchars, (utf32)=>utf32.reduce((prev, ch, index)=>{\n const special_cases = {\n \"\\xdf\": \"Ss\",\n \"DŽ\": \"Dž\",\n \"Dž\": \"Dž\",\n \"dž\": \"Dž\",\n \"LJ\": \"Lj\",\n \"Lj\": \"Lj\",\n \"lj\": \"Lj\",\n \"NJ\": \"Nj\",\n \"Nj\": \"Nj\",\n \"nj\": \"Nj\",\n \"DZ\": \"Dz\",\n \"Dz\": \"Dz\",\n \"dz\": \"Dz\",\n \"և\": \"Եւ\",\n \"ᾲ\": \"Ὰͅ\",\n \"ᾳ\": \"ᾼ\",\n \"ᾴ\": \"Άͅ\",\n \"ᾷ\": \"ᾼ͂\",\n \"ᾼ\": \"ᾼ\",\n \"ῂ\": \"Ὴͅ\",\n \"ῃ\": \"ῌ\",\n \"ῄ\": \"Ήͅ\",\n \"ῇ\": \"ῌ͂\",\n \"ῌ\": \"ῌ\",\n \"ῲ\": \"Ὼͅ\",\n \"ῳ\": \"ῼ\",\n \"ῴ\": \"Ώͅ\",\n \"ῷ\": \"ῼ͂\",\n \"ῼ\": \"ῼ\",\n \"ff\": \"Ff\",\n \"fi\": \"Fi\",\n \"fl\": \"Fl\",\n \"ffi\": \"Ffi\",\n \"ffl\": \"Ffl\",\n \"ſt\": \"St\",\n \"st\": \"St\",\n \"ﬓ\": \"Մն\",\n \"ﬔ\": \"Մե\",\n \"ﬕ\": \"Մի\",\n \"ﬖ\": \"Վն\",\n \"ﬗ\": \"Մխ\"\n };\n const slightly_less_special_cases = [\n \"ᾈᾉᾊᾋᾌᾍᾎᾏ\",\n \"ᾘᾙᾚᾛᾜᾝᾞᾟ\",\n \"ᾨᾩᾪᾫᾬᾭᾮᾯ\"\n ];\n let thischar = String.fromCodePoint(ch);\n if (index === 0) {\n if (special_cases[thischar]) thischar = special_cases[thischar];\n else if (ch >= 8064 && ch < 8112) thischar = slightly_less_special_cases[(ch - 8064) / 16 | 0][ch % 8];\n else thischar = thischar.toUpperCase();\n } else if (lowerrest) thischar = thischar.toLowerCase();\n return prev + thischar;\n }, \"\"), 1);\n }\n function glk_buffer_canon_decompose_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, (str)=>str.normalize(\"NFD\"));\n }\n function glk_buffer_canon_normalize_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, (str)=>str.normalize(\"NFC\"));\n }\n function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async ()=>{\n if (!Module.emglken_stdin_buffers.length) await new Promise((resolve)=>{\n Module.emglken_stdin_ready = resolve;\n });\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) HEAPU8.set(input, buffer);\n else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n }\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n }\n function callRuntimeCallbacks(callbacks) {\n while(callbacks.length > 0)callbacks.shift()(Module);\n }\n var PATH = {\n isAbs: (path)=>path.charAt(0) === \"/\",\n splitPath: (filename)=>{\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot)=>{\n var up = 0;\n for(var i = parts.length - 1; i >= 0; i--){\n var last = parts[i];\n if (last === \".\") parts.splice(i, 1);\n else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) for(; up; up--)parts.unshift(\"..\");\n return parts;\n },\n normalize: (path)=>{\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p)=>!!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) path = \".\";\n if (path && trailingSlash) path += \"/\";\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: (path)=>{\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) return \".\";\n if (dir) dir = dir.substr(0, dir.length - 1);\n return root + dir;\n },\n basename: (path)=>{\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r)=>{\n return PATH.normalize(l + \"/\" + r);\n }\n };\n function getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return ()=>{\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return ()=>abort(\"randomDevice\");\n }\n var PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for(var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--){\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") throw new TypeError(\"Arguments to path.resolve must be strings\");\n else if (!path) return \"\";\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p)=>!!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to)=>{\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for(; start < arr.length; start++){\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for(; end >= 0; end--){\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for(var i = 0; i < length; i++)if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n var outputParts = [];\n for(var i = samePartsLength; i < fromParts.length; i++)outputParts.push(\"..\");\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n var TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) throw new FS.ErrnoError(43);\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) throw new FS.ErrnoError(60);\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) throw new FS.ErrnoError(60);\n try {\n for(var i = 0; i < length; i++)stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) result += \"\\n\";\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) result += \"\\n\";\n }\n if (!result) return null;\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n };\n function mmapAlloc(size) {\n abort();\n }\n var MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16895, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) throw new FS.ErrnoError(63);\n if (!MEMFS.ops_table) MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1048576;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) attr.size = 4096;\n else if (FS.isFile(node.mode)) attr.size = node.usedBytes;\n else if (FS.isLink(node.mode)) attr.size = node.link.length;\n else attr.size = 0;\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) node.mode = attr.mode;\n if (attr.timestamp !== undefined) node.timestamp = attr.timestamp;\n if (attr.size !== undefined) MEMFS.resizeFileStorage(node, attr.size);\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for(var i in new_node.contents)throw new FS.ErrnoError(55);\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for(var i in node.contents)throw new FS.ErrnoError(55);\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [\n \".\",\n \"..\"\n ];\n for(var key in node.contents){\n if (!node.contents.hasOwnProperty(key)) continue;\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 41471, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) throw new FS.ErrnoError(28);\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) buffer.set(contents.subarray(position, position + size), offset);\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) canOwn = false;\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);\n else for(var i = 0; i < length; i++)node.contents[position + i] = buffer[offset + i];\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) position += stream.position;\n else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) position += stream.node.usedBytes;\n }\n if (position < 0) throw new FS.ErrnoError(28);\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) contents = contents.subarray(position, position + length);\n else contents = Array.prototype.slice.call(contents, position, position + length);\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n };\n function asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, (arrayBuffer)=>{\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, (event)=>{\n if (onerror) onerror();\n else throw 'Loading data file \"' + url + '\" failed.';\n });\n if (dep) addRunDependency(dep);\n }\n var FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {})=>{\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) throw new FS.ErrnoError(32);\n var parts = path.split(\"/\").filter((p)=>!!p);\n var current = FS.root;\n var current_path = \"/\";\n for(var i = 0; i < parts.length; i++){\n var islast = i === parts.length - 1;\n if (islast && opts.parent) break;\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) current = current.mounted.root;\n }\n if (!islast || opts.follow) {\n var count = 0;\n while(FS.isLink(current.mode)){\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) throw new FS.ErrnoError(32);\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: (node)=>{\n var path;\n while(true){\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name)=>{\n var hash = 0;\n for(var i = 0; i < name.length; i++)hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) FS.nameTable[hash] = node.name_next;\n else {\n var current = FS.nameTable[hash];\n while(current){\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name)=>{\n var errCode = FS.mayLookup(parent);\n if (errCode) throw new FS.ErrnoError(errCode, parent);\n var hash = FS.hashName(parent.id, name);\n for(var node = FS.nameTable[hash]; node; node = node.name_next){\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) return node;\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev)=>{\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: (node)=>{\n FS.hashRemoveNode(node);\n },\n isRoot: (node)=>{\n return node === node.parent;\n },\n isMountpoint: (node)=>{\n return !!node.mounted;\n },\n isFile: (mode)=>{\n return (mode & 61440) === 32768;\n },\n isDir: (mode)=>{\n return (mode & 61440) === 16384;\n },\n isLink: (mode)=>{\n return (mode & 61440) === 40960;\n },\n isChrdev: (mode)=>{\n return (mode & 61440) === 8192;\n },\n isBlkdev: (mode)=>{\n return (mode & 61440) === 24576;\n },\n isFIFO: (mode)=>{\n return (mode & 61440) === 4096;\n },\n isSocket: (mode)=>{\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: (str)=>{\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") throw new Error(\"Unknown file open mode: \" + str);\n return flags;\n },\n flagsToPermissionString: (flag)=>{\n var perms = [\n \"r\",\n \"w\",\n \"rw\"\n ][flag & 3];\n if (flag & 512) perms += \"w\";\n return perms;\n },\n nodePermissions: (node, perms)=>{\n if (FS.ignorePermissions) return 0;\n if (perms.includes(\"r\") && !(node.mode & 292)) return 2;\n else if (perms.includes(\"w\") && !(node.mode & 146)) return 2;\n else if (perms.includes(\"x\") && !(node.mode & 73)) return 2;\n return 0;\n },\n mayLookup: (dir)=>{\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name)=>{\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir)=>{\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) return errCode;\n if (isdir) {\n if (!FS.isDir(node.mode)) return 54;\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) return 10;\n } else {\n if (FS.isDir(node.mode)) return 31;\n }\n return 0;\n },\n mayOpen: (node, flags)=>{\n if (!node) return 44;\n if (FS.isLink(node.mode)) return 32;\n else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) return 31;\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS)=>{\n for(var fd = fd_start; fd <= fd_end; fd++){\n if (!FS.streams[fd]) return fd;\n }\n throw new FS.ErrnoError(33);\n },\n getStream: (fd)=>FS.streams[fd],\n createStream: (stream, fd_start, fd_end)=>{\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: (fd)=>{\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: (stream)=>{\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n },\n llseek: ()=>{\n throw new FS.ErrnoError(70);\n }\n },\n major: (dev)=>dev >> 8,\n minor: (dev)=>dev & 255,\n makedev: (ma, mi)=>ma << 8 | mi,\n registerDevice: (dev, ops)=>{\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: (dev)=>FS.devices[dev],\n getMounts: (mount)=>{\n var mounts = [];\n var check = [\n mount\n ];\n while(check.length){\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback)=>{\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) doCallback(null);\n }\n mounts.forEach((mount)=>{\n if (!mount.type.syncfs) return done(null);\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint)=>{\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) throw new FS.ErrnoError(10);\n else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n if (!FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) FS.root = mountRoot;\n else if (node) {\n node.mounted = mount;\n if (node.mount) node.mount.mounts.push(mount);\n }\n return mountRoot;\n },\n unmount: (mountpoint)=>{\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) throw new FS.ErrnoError(28);\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash)=>{\n var current = FS.nameTable[hash];\n while(current){\n var next = current.name_next;\n if (mounts.includes(current.mount)) FS.destroyNode(current);\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name)=>{\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") throw new FS.ErrnoError(28);\n var errCode = FS.mayCreate(parent, name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.mknod) throw new FS.ErrnoError(63);\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode)=>{\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode)=>{\n mode = mode !== undefined ? mode : 511;\n mode &= 1023;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode)=>{\n var dirs = path.split(\"/\");\n var d = \"\";\n for(var i = 0; i < dirs.length; ++i){\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev)=>{\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath)=>{\n if (!PATH_FS.resolve(oldpath)) throw new FS.ErrnoError(44);\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.symlink) throw new FS.ErrnoError(63);\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path)=>{\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) throw new FS.ErrnoError(75);\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(28);\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(55);\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) return;\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) throw new FS.ErrnoError(errCode);\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!old_dir.node_ops.rename) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) throw new FS.ErrnoError(10);\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally{\n FS.hashAddNode(old_node);\n }\n },\n rmdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.rmdir) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) throw new FS.ErrnoError(54);\n return node.node_ops.readdir(node);\n },\n unlink: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.unlink) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: (path)=>{\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) throw new FS.ErrnoError(44);\n if (!link.node_ops.readlink) throw new FS.ErrnoError(28);\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow)=>{\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) throw new FS.ErrnoError(44);\n if (!node.node_ops.getattr) throw new FS.ErrnoError(63);\n return node.node_ops.getattr(node);\n },\n lstat: (path)=>{\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & -4096,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode)=>{\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid)=>{\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len)=>{\n if (len < 0) throw new FS.ErrnoError(28);\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n if (FS.isDir(node.mode)) throw new FS.ErrnoError(31);\n if (!FS.isFile(node.mode)) throw new FS.ErrnoError(28);\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(28);\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode)=>{\n if (path === \"\") throw new FS.ErrnoError(44);\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) mode = mode & 4095 | 32768;\n else mode = 0;\n var node;\n if (typeof path == \"object\") node = path;\n else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) throw new FS.ErrnoError(20);\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) throw new FS.ErrnoError(44);\n if (FS.isChrdev(node.mode)) flags &= -513;\n if (flags & 65536 && !FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n if (flags & 512 && !created) FS.truncate(node, 0);\n flags &= -131713;\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) FS.readFiles[path] = 1;\n }\n return stream;\n },\n close: (stream)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) stream.stream_ops.close(stream);\n } catch (e) {\n throw e;\n } finally{\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: (stream)=>{\n return stream.fd === null;\n },\n llseek: (stream, offset, whence)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (!stream.seekable || !stream.stream_ops.llseek) throw new FS.ErrnoError(70);\n if (whence != 0 && whence != 1 && whence != 2) throw new FS.ErrnoError(28);\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.read) throw new FS.ErrnoError(28);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.write) throw new FS.ErrnoError(28);\n if (stream.seekable && stream.flags & 1024) FS.llseek(stream, 0, 2);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (offset < 0 || length <= 0) throw new FS.ErrnoError(28);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) throw new FS.ErrnoError(43);\n if (!stream.stream_ops.allocate) throw new FS.ErrnoError(138);\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags)=>{\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) throw new FS.ErrnoError(2);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(2);\n if (!stream.stream_ops.mmap) throw new FS.ErrnoError(43);\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags)=>{\n if (!stream.stream_ops.msync) return 0;\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: (stream)=>0,\n ioctl: (stream, cmd, arg)=>{\n if (!stream.stream_ops.ioctl) throw new FS.ErrnoError(59);\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {})=>{\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") ret = UTF8ArrayToString(buf, 0);\n else if (opts.encoding === \"binary\") ret = buf;\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {})=>{\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n else throw new Error(\"Unsupported data type\");\n FS.close(stream);\n },\n cwd: ()=>FS.currentPath,\n chdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) throw new FS.ErrnoError(44);\n if (!FS.isDir(lookup.node.mode)) throw new FS.ErrnoError(54);\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) throw new FS.ErrnoError(errCode);\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: ()=>{\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: ()=>{\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: ()=>0,\n write: (stream, buffer, offset, length, pos)=>length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: ()=>{\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: ()=>{\n var node = FS.createNode(proc_self, \"fd\", 16895, 73);\n node.node_ops = {\n lookup: (parent, name)=>{\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: ()=>stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: ()=>{\n if (Module[\"stdin\"]) FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n if (Module[\"stdout\"]) FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n if (Module[\"stderr\"]) FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n else FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: ()=>{\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [\n 44\n ].forEach((code)=>{\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: ()=>{\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error)=>{\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: ()=>{\n FS.init.initialized = false;\n _fflush(0);\n for(var i = 0; i < FS.streams.length; i++){\n var stream = FS.streams[i];\n if (!stream) continue;\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite)=>{\n var mode = 0;\n if (canRead) mode |= 365;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink)=>{\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) return null;\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink)=>{\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite)=>{\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while(parts.length){\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn)=>{\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for(var i = 0, len = data.length; i < len; ++i)arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: (stream)=>{\n stream.seekable = false;\n },\n close: (stream)=>{\n if (output && output.buffer && output.buffer.length) output(10);\n },\n read: (stream, buffer, offset, length, pos)=>{\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos)=>{\n for(var i = 0; i < length; i++)try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: (obj)=>{\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n else if (read_) try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n else throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n },\n createLazyFile: (parent, name, url, canRead, canWrite)=>{\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) return undefined;\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1048576;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to)=>{\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) return new Uint8Array(xhr.response || []);\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter((chunkNum)=>{\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") lazyArray.chunks[chunkNum] = doXHR(start, end);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else var properties = {\n isDevice: false,\n url: url\n };\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) node.contents = properties.contents;\n else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach((key)=>{\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents.get(position + i);\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position)=>{\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags)=>{\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish)=>{\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, ()=>{\n if (onerror) onerror();\n removeRunDependency(dep);\n })) return;\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") asyncLoad(url, (byteArray)=>processData(byteArray), onerror);\n else processData(url);\n },\n indexedDB: ()=>{\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: ()=>{\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = ()=>{\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = ()=>{\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n try {\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var getRequest = files.get(path);\n getRequest.onsuccess = ()=>{\n if (FS.analyzePath(path).exists) FS.unlink(path);\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n };\n var SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) return path;\n var dir;\n if (dirfd === -100) dir = FS.cwd();\n else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) throw new FS.ErrnoError(44);\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) return -54;\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [\n stat.size >>> 0,\n (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [\n Math.floor(atime / 1e3) >>> 0,\n (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(mtime / 1e3) >>> 0,\n (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(ctime / 1e3) >>> 0,\n (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [\n stat.ino >>> 0,\n (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n if (flags & 2) return 0;\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n };\n function ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & -8) return -28;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) return -44;\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) return -2;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n }\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(cmd){\n case 0:\n var arg = SYSCALLS.get();\n if (arg < 0) return -28;\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4:\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n case 5:\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(op){\n case 21509:\n case 21505:\n if (!stream.tty) return -59;\n return 0;\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n if (!stream.tty) return -59;\n return 0;\n case 21519:\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n case 21520:\n if (!stream.tty) return -59;\n return -28;\n case 21531:\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n case 21523:\n if (!stream.tty) return -59;\n return 0;\n case 21524:\n if (!stream.tty) return -59;\n return 0;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_unlinkat(dirfd, path, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (flags === 0) FS.unlink(path);\n else if (flags === 512) FS.rmdir(path);\n else abort(\"Invalid flags passed to unlinkat\");\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var nowIsMonotonic = true;\n function __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n }\n function __emscripten_throw_longjmp() {\n throw Infinity;\n }\n function readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n }\n function __gmtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getUTCSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getUTCHours();\n HEAP32[tmPtr + 12 >> 2] = date.getUTCDate();\n HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / 86400000 | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n }\n function __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n }\n var __MONTH_DAYS_LEAP_CUMULATIVE = [\n 0,\n 31,\n 60,\n 91,\n 121,\n 152,\n 182,\n 213,\n 244,\n 274,\n 305,\n 335\n ];\n var __MONTH_DAYS_REGULAR_CUMULATIVE = [\n 0,\n 31,\n 59,\n 90,\n 120,\n 151,\n 181,\n 212,\n 243,\n 273,\n 304,\n 334\n ];\n function __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n }\n function __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n }\n function __mktime_js(tmPtr) {\n var date = new Date(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0);\n var dst = HEAP32[tmPtr + 32 >> 2];\n var guessedOffset = date.getTimezoneOffset();\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dstOffset = Math.min(winterOffset, summerOffset);\n if (dst < 0) HEAP32[tmPtr + 32 >> 2] = Number(summerOffset != winterOffset && dstOffset == guessedOffset);\n else if (dst > 0 != (dstOffset == guessedOffset)) {\n var nonDstOffset = Math.max(winterOffset, summerOffset);\n var trueOffset = dst > 0 ? dstOffset : nonDstOffset;\n date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4);\n }\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getYear();\n return date.getTime() / 1e3 | 0;\n }\n function __timegm_js(tmPtr) {\n var time = Date.UTC(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0);\n var date = new Date(time);\n HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / 86400000 | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n return date.getTime() / 1e3 | 0;\n }\n function allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n }\n function _emscripten_date_now() {\n return Date.now();\n }\n var _emscripten_get_now;\n _emscripten_get_now = ()=>performance.now();\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n }\n function getHeapMax() {\n return 2147483648;\n }\n function emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) return false;\n let alignUp = (x, multiple)=>x + (multiple - x % multiple) % multiple;\n for(var cutDown = 1; cutDown <= 4; cutDown *= 2){\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) return true;\n }\n return false;\n }\n function _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n }\n function exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) exitRuntime();\n _proc_exit(status);\n }\n var _exit = exitJS;\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n }\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [\n stream.position >>> 0,\n (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") return EXITSTATUS;\n quit_(1, e);\n }\n function allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n }\n function maybeExit() {\n if (!keepRuntimeAlive()) try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n function callUserCallback(func) {\n if (runtimeExited || ABORT) return;\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n }\n function runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n }\n function runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n }\n var Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [\n \"emscripten_sleep\",\n \"emscripten_wget\",\n \"emscripten_wget_data\",\n \"emscripten_idb_load\",\n \"emscripten_idb_store\",\n \"emscripten_idb_delete\",\n \"emscripten_idb_exists\",\n \"emscripten_idb_load_blob\",\n \"emscripten_idb_store_blob\",\n \"SDL_Delay\",\n \"emscripten_scan_registers\",\n \"emscripten_lazy_load_code\",\n \"emscripten_fiber_swap\",\n \"__load_secondary_module\",\n \"fd_sync\",\n \"__wasi_fd_sync\",\n \"_emval_await\",\n \"_dlopen_js\",\n \"__asyncjs__*\"\n ];\n for(var x in imports)(function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n })(x);\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for(var x in exports)(function(x) {\n var original = exports[x];\n if (typeof original == \"function\") ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally{\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n else ret[x] = original;\n })(x);\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") Fibers.trampoline();\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject)=>{\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0)=>{\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) return;\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.resume();\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) throw asyncWasmReturnValue;\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.pause();\n runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach((func)=>callUserCallback(func));\n } else abort(\"invalid state: \" + Asyncify.state);\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep((wakeUp)=>{\n startAsync().then(wakeUp);\n });\n }\n };\n function AsciiToString(ptr) {\n var str = \"\";\n while(true){\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n }\n var FSNode = function(parent, name, mode, rdev) {\n if (!parent) parent = this;\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n var readMode = 365;\n var writeMode = 146;\n Object.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n });\n FS.FSNode = FSNode;\n FS.staticInit();\n var wasmImports = {\n \"q\": __asyncjs__emglken_fill_stdin_buffer,\n \"D\": ___syscall_faccessat,\n \"l\": ___syscall_fcntl64,\n \"C\": ___syscall_getcwd,\n \"B\": ___syscall_ioctl,\n \"k\": ___syscall_openat,\n \"A\": ___syscall_stat64,\n \"z\": ___syscall_unlinkat,\n \"x\": __emscripten_get_now_is_monotonic,\n \"w\": __emscripten_throw_longjmp,\n \"v\": __gmtime_js,\n \"u\": __localtime_js,\n \"t\": __mktime_js,\n \"s\": __timegm_js,\n \"r\": __tzset_js,\n \"i\": _emscripten_date_now,\n \"p\": _emscripten_memcpy_big,\n \"o\": _emscripten_resize_heap,\n \"a\": _exit,\n \"c\": _fd_close,\n \"y\": _fd_read,\n \"m\": _fd_seek,\n \"j\": _fd_write,\n \"h\": glk_buffer_canon_decompose_uni,\n \"g\": glk_buffer_canon_normalize_uni,\n \"f\": glk_buffer_to_lower_case_uni,\n \"e\": glk_buffer_to_title_case_uni,\n \"d\": glk_buffer_to_upper_case_uni,\n \"n\": invoke_vi,\n \"b\": invoke_vii\n };\n var asm = createWasm();\n var ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"F\"]).apply(null, arguments);\n };\n var _malloc = function() {\n return (_malloc = Module[\"asm\"][\"G\"]).apply(null, arguments);\n };\n var _free = function() {\n return (_free = Module[\"asm\"][\"H\"]).apply(null, arguments);\n };\n var _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"I\"]).apply(null, arguments);\n };\n var _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"J\"]).apply(null, arguments);\n };\n var _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"K\"]).apply(null, arguments);\n };\n var ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"L\"]).apply(null, arguments);\n };\n var ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"M\"]).apply(null, arguments);\n };\n var _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"O\"]).apply(null, arguments);\n };\n var _saveSetjmp = function() {\n return (_saveSetjmp = Module[\"asm\"][\"saveSetjmp\"]).apply(null, arguments);\n };\n var _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n };\n var stackSave = function() {\n return (stackSave = Module[\"asm\"][\"P\"]).apply(null, arguments);\n };\n var stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"Q\"]).apply(null, arguments);\n };\n var stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"R\"]).apply(null, arguments);\n };\n var dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"S\"]).apply(null, arguments);\n };\n var dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"T\"]).apply(null, arguments);\n };\n var _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"U\"]).apply(null, arguments);\n };\n var _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"V\"]).apply(null, arguments);\n };\n var _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"W\"]).apply(null, arguments);\n };\n var _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"X\"]).apply(null, arguments);\n };\n var ___start_em_js = Module[\"___start_em_js\"] = 33568;\n var ___stop_em_js = Module[\"___stop_em_js\"] = 36253;\n function invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n Module[\"AsciiToString\"] = AsciiToString;\n Module[\"FS\"] = FS;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach((arg)=>{\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n }\n function run(args = arguments_) {\n if (runDependencies > 0) return;\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else doRun();\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [\n Module[\"preInit\"]\n ];\n while(Module[\"preInit\"].length > 0)Module[\"preInit\"].pop()();\n }\n var shouldRunNow = true;\n if (Module[\"noInitialRun\"]) shouldRunNow = false;\n run();\n return Module.ready;\n };\n})();\nvar $a5c3b71e8affc86f$export$2e2bcd8739ae039 = $a5c3b71e8affc86f$var$Module;\n\n\nclass $724db3da43d21d57$export$2e2bcd8739ae039 extends (0, $7c4ebf67e8338ec8$export$2e2bcd8739ae039) {\n default_options() {\n return {\n vmcore: (0, $a5c3b71e8affc86f$export$2e2bcd8739ae039)\n };\n }\n}\n\n\n/*\n\nEmglken port of Hugo\n====================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ \nvar $b4505afa6c4299ab$exports = {};\n\n\n$b4505afa6c4299ab$exports = (parcelRequire(\"6kBsm\")).getBundleURL(\"ejVIo\") + (parcelRequire(\"n9Yfb\")).resolve(\"huVfu\");\n\n\nvar $6b4c486f96eb5551$var$Module = (()=>{\n var _scriptDir = \"file:///node_modules/emglken/build/hugo-core.js\";\n return function(Module = {}) {\n var Module = typeof Module != \"undefined\" ? Module : {};\n var readyPromiseResolve, readyPromiseReject;\n Module[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow)=>{\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary, setWindowTitle;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) scriptDirectory = self.location.href;\n else if (typeof document != \"undefined\" && document.currentScript) scriptDirectory = document.currentScript.src;\n if (_scriptDir) scriptDirectory = _scriptDir;\n if (scriptDirectory.indexOf(\"blob:\") !== 0) scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n else scriptDirectory = \"\";\n read_ = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) readBinary = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n readAsync = (url, onload, onerror)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = ()=>{\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n setWindowTitle = (title)=>document.title = title;\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n var wasmBinary;\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n var noExitRuntime = Module[\"noExitRuntime\"] || false;\n if (typeof WebAssembly != \"object\") abort(\"no native wasm support detected\");\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) abort(text);\n }\n var UTF8Decoder = new TextDecoder(\"utf8\");\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while(heapOrArray[endPtr] && !(endPtr >= endIdx))++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for(var end = ptr; !(end >= maxPtr) && HEAPU8[end];)++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n }\n function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for(var i = 0; i < str.length; ++i){\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n function lengthBytesUTF8(str) {\n var len = 0;\n for(var i = 0; i < str.length; ++i){\n var c = str.charCodeAt(i);\n if (c <= 127) len++;\n else if (c <= 2047) len += 2;\n else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else len += 3;\n }\n return len;\n }\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var wasmTable;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATEXIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n var runtimeKeepaliveCounter = 0;\n function keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [\n Module[\"preRun\"]\n ];\n while(Module[\"preRun\"].length)addOnPreRun(Module[\"preRun\"].shift());\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n }\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n function exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [\n Module[\"postRun\"]\n ];\n while(Module[\"postRun\"].length)addOnPostRun(Module[\"postRun\"].shift());\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n if (Module[\"onAbort\"]) Module[\"onAbort\"](what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n if (Module[\"locateFile\"]) {\n wasmBinaryFile = \"hugo-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) wasmBinaryFile = locateFile(wasmBinaryFile);\n } else wasmBinaryFile = new URL($b4505afa6c4299ab$exports).href;\n function getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary);\n if (readBinary) return readBinary(file);\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n }\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n else return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n function createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"t\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"C\"];\n addOnInit(Module[\"asm\"][\"u\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n }\n var tempDouble;\n var tempI64;\n function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async ()=>{\n if (!Module.emglken_stdin_buffers.length) await new Promise((resolve)=>{\n Module.emglken_stdin_ready = resolve;\n });\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) HEAPU8.set(input, buffer);\n else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n }\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n }\n function callRuntimeCallbacks(callbacks) {\n while(callbacks.length > 0)callbacks.shift()(Module);\n }\n var PATH = {\n isAbs: (path)=>path.charAt(0) === \"/\",\n splitPath: (filename)=>{\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot)=>{\n var up = 0;\n for(var i = parts.length - 1; i >= 0; i--){\n var last = parts[i];\n if (last === \".\") parts.splice(i, 1);\n else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) for(; up; up--)parts.unshift(\"..\");\n return parts;\n },\n normalize: (path)=>{\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p)=>!!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) path = \".\";\n if (path && trailingSlash) path += \"/\";\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: (path)=>{\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) return \".\";\n if (dir) dir = dir.substr(0, dir.length - 1);\n return root + dir;\n },\n basename: (path)=>{\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r)=>{\n return PATH.normalize(l + \"/\" + r);\n }\n };\n function getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return ()=>{\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return ()=>abort(\"randomDevice\");\n }\n var PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for(var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--){\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") throw new TypeError(\"Arguments to path.resolve must be strings\");\n else if (!path) return \"\";\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p)=>!!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to)=>{\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for(; start < arr.length; start++){\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for(; end >= 0; end--){\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for(var i = 0; i < length; i++)if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n var outputParts = [];\n for(var i = samePartsLength; i < fromParts.length; i++)outputParts.push(\"..\");\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n var TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) throw new FS.ErrnoError(43);\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) throw new FS.ErrnoError(60);\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) throw new FS.ErrnoError(60);\n try {\n for(var i = 0; i < length; i++)stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) result += \"\\n\";\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) result += \"\\n\";\n }\n if (!result) return null;\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n };\n function mmapAlloc(size) {\n abort();\n }\n var MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16895, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) throw new FS.ErrnoError(63);\n if (!MEMFS.ops_table) MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1048576;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) attr.size = 4096;\n else if (FS.isFile(node.mode)) attr.size = node.usedBytes;\n else if (FS.isLink(node.mode)) attr.size = node.link.length;\n else attr.size = 0;\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) node.mode = attr.mode;\n if (attr.timestamp !== undefined) node.timestamp = attr.timestamp;\n if (attr.size !== undefined) MEMFS.resizeFileStorage(node, attr.size);\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for(var i in new_node.contents)throw new FS.ErrnoError(55);\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for(var i in node.contents)throw new FS.ErrnoError(55);\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [\n \".\",\n \"..\"\n ];\n for(var key in node.contents){\n if (!node.contents.hasOwnProperty(key)) continue;\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 41471, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) throw new FS.ErrnoError(28);\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) buffer.set(contents.subarray(position, position + size), offset);\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) canOwn = false;\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);\n else for(var i = 0; i < length; i++)node.contents[position + i] = buffer[offset + i];\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) position += stream.position;\n else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) position += stream.node.usedBytes;\n }\n if (position < 0) throw new FS.ErrnoError(28);\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) contents = contents.subarray(position, position + length);\n else contents = Array.prototype.slice.call(contents, position, position + length);\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n };\n function asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, (arrayBuffer)=>{\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, (event)=>{\n if (onerror) onerror();\n else throw 'Loading data file \"' + url + '\" failed.';\n });\n if (dep) addRunDependency(dep);\n }\n var FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {})=>{\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) throw new FS.ErrnoError(32);\n var parts = path.split(\"/\").filter((p)=>!!p);\n var current = FS.root;\n var current_path = \"/\";\n for(var i = 0; i < parts.length; i++){\n var islast = i === parts.length - 1;\n if (islast && opts.parent) break;\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) current = current.mounted.root;\n }\n if (!islast || opts.follow) {\n var count = 0;\n while(FS.isLink(current.mode)){\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) throw new FS.ErrnoError(32);\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: (node)=>{\n var path;\n while(true){\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name)=>{\n var hash = 0;\n for(var i = 0; i < name.length; i++)hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) FS.nameTable[hash] = node.name_next;\n else {\n var current = FS.nameTable[hash];\n while(current){\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name)=>{\n var errCode = FS.mayLookup(parent);\n if (errCode) throw new FS.ErrnoError(errCode, parent);\n var hash = FS.hashName(parent.id, name);\n for(var node = FS.nameTable[hash]; node; node = node.name_next){\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) return node;\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev)=>{\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: (node)=>{\n FS.hashRemoveNode(node);\n },\n isRoot: (node)=>{\n return node === node.parent;\n },\n isMountpoint: (node)=>{\n return !!node.mounted;\n },\n isFile: (mode)=>{\n return (mode & 61440) === 32768;\n },\n isDir: (mode)=>{\n return (mode & 61440) === 16384;\n },\n isLink: (mode)=>{\n return (mode & 61440) === 40960;\n },\n isChrdev: (mode)=>{\n return (mode & 61440) === 8192;\n },\n isBlkdev: (mode)=>{\n return (mode & 61440) === 24576;\n },\n isFIFO: (mode)=>{\n return (mode & 61440) === 4096;\n },\n isSocket: (mode)=>{\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: (str)=>{\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") throw new Error(\"Unknown file open mode: \" + str);\n return flags;\n },\n flagsToPermissionString: (flag)=>{\n var perms = [\n \"r\",\n \"w\",\n \"rw\"\n ][flag & 3];\n if (flag & 512) perms += \"w\";\n return perms;\n },\n nodePermissions: (node, perms)=>{\n if (FS.ignorePermissions) return 0;\n if (perms.includes(\"r\") && !(node.mode & 292)) return 2;\n else if (perms.includes(\"w\") && !(node.mode & 146)) return 2;\n else if (perms.includes(\"x\") && !(node.mode & 73)) return 2;\n return 0;\n },\n mayLookup: (dir)=>{\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name)=>{\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir)=>{\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) return errCode;\n if (isdir) {\n if (!FS.isDir(node.mode)) return 54;\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) return 10;\n } else {\n if (FS.isDir(node.mode)) return 31;\n }\n return 0;\n },\n mayOpen: (node, flags)=>{\n if (!node) return 44;\n if (FS.isLink(node.mode)) return 32;\n else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) return 31;\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS)=>{\n for(var fd = fd_start; fd <= fd_end; fd++){\n if (!FS.streams[fd]) return fd;\n }\n throw new FS.ErrnoError(33);\n },\n getStream: (fd)=>FS.streams[fd],\n createStream: (stream, fd_start, fd_end)=>{\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: (fd)=>{\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: (stream)=>{\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n },\n llseek: ()=>{\n throw new FS.ErrnoError(70);\n }\n },\n major: (dev)=>dev >> 8,\n minor: (dev)=>dev & 255,\n makedev: (ma, mi)=>ma << 8 | mi,\n registerDevice: (dev, ops)=>{\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: (dev)=>FS.devices[dev],\n getMounts: (mount)=>{\n var mounts = [];\n var check = [\n mount\n ];\n while(check.length){\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback)=>{\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) doCallback(null);\n }\n mounts.forEach((mount)=>{\n if (!mount.type.syncfs) return done(null);\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint)=>{\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) throw new FS.ErrnoError(10);\n else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n if (!FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) FS.root = mountRoot;\n else if (node) {\n node.mounted = mount;\n if (node.mount) node.mount.mounts.push(mount);\n }\n return mountRoot;\n },\n unmount: (mountpoint)=>{\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) throw new FS.ErrnoError(28);\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash)=>{\n var current = FS.nameTable[hash];\n while(current){\n var next = current.name_next;\n if (mounts.includes(current.mount)) FS.destroyNode(current);\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name)=>{\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") throw new FS.ErrnoError(28);\n var errCode = FS.mayCreate(parent, name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.mknod) throw new FS.ErrnoError(63);\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode)=>{\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode)=>{\n mode = mode !== undefined ? mode : 511;\n mode &= 1023;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode)=>{\n var dirs = path.split(\"/\");\n var d = \"\";\n for(var i = 0; i < dirs.length; ++i){\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev)=>{\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath)=>{\n if (!PATH_FS.resolve(oldpath)) throw new FS.ErrnoError(44);\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.symlink) throw new FS.ErrnoError(63);\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path)=>{\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) throw new FS.ErrnoError(75);\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(28);\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(55);\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) return;\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) throw new FS.ErrnoError(errCode);\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!old_dir.node_ops.rename) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) throw new FS.ErrnoError(10);\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally{\n FS.hashAddNode(old_node);\n }\n },\n rmdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.rmdir) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) throw new FS.ErrnoError(54);\n return node.node_ops.readdir(node);\n },\n unlink: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.unlink) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: (path)=>{\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) throw new FS.ErrnoError(44);\n if (!link.node_ops.readlink) throw new FS.ErrnoError(28);\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow)=>{\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) throw new FS.ErrnoError(44);\n if (!node.node_ops.getattr) throw new FS.ErrnoError(63);\n return node.node_ops.getattr(node);\n },\n lstat: (path)=>{\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & -4096,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode)=>{\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid)=>{\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len)=>{\n if (len < 0) throw new FS.ErrnoError(28);\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n if (FS.isDir(node.mode)) throw new FS.ErrnoError(31);\n if (!FS.isFile(node.mode)) throw new FS.ErrnoError(28);\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(28);\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode)=>{\n if (path === \"\") throw new FS.ErrnoError(44);\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) mode = mode & 4095 | 32768;\n else mode = 0;\n var node;\n if (typeof path == \"object\") node = path;\n else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) throw new FS.ErrnoError(20);\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) throw new FS.ErrnoError(44);\n if (FS.isChrdev(node.mode)) flags &= -513;\n if (flags & 65536 && !FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n if (flags & 512 && !created) FS.truncate(node, 0);\n flags &= -131713;\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) FS.readFiles[path] = 1;\n }\n return stream;\n },\n close: (stream)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) stream.stream_ops.close(stream);\n } catch (e) {\n throw e;\n } finally{\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: (stream)=>{\n return stream.fd === null;\n },\n llseek: (stream, offset, whence)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (!stream.seekable || !stream.stream_ops.llseek) throw new FS.ErrnoError(70);\n if (whence != 0 && whence != 1 && whence != 2) throw new FS.ErrnoError(28);\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.read) throw new FS.ErrnoError(28);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.write) throw new FS.ErrnoError(28);\n if (stream.seekable && stream.flags & 1024) FS.llseek(stream, 0, 2);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (offset < 0 || length <= 0) throw new FS.ErrnoError(28);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) throw new FS.ErrnoError(43);\n if (!stream.stream_ops.allocate) throw new FS.ErrnoError(138);\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags)=>{\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) throw new FS.ErrnoError(2);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(2);\n if (!stream.stream_ops.mmap) throw new FS.ErrnoError(43);\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags)=>{\n if (!stream.stream_ops.msync) return 0;\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: (stream)=>0,\n ioctl: (stream, cmd, arg)=>{\n if (!stream.stream_ops.ioctl) throw new FS.ErrnoError(59);\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {})=>{\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") ret = UTF8ArrayToString(buf, 0);\n else if (opts.encoding === \"binary\") ret = buf;\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {})=>{\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n else throw new Error(\"Unsupported data type\");\n FS.close(stream);\n },\n cwd: ()=>FS.currentPath,\n chdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) throw new FS.ErrnoError(44);\n if (!FS.isDir(lookup.node.mode)) throw new FS.ErrnoError(54);\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) throw new FS.ErrnoError(errCode);\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: ()=>{\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: ()=>{\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: ()=>0,\n write: (stream, buffer, offset, length, pos)=>length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: ()=>{\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: ()=>{\n var node = FS.createNode(proc_self, \"fd\", 16895, 73);\n node.node_ops = {\n lookup: (parent, name)=>{\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: ()=>stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: ()=>{\n if (Module[\"stdin\"]) FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n if (Module[\"stdout\"]) FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n if (Module[\"stderr\"]) FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n else FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: ()=>{\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [\n 44\n ].forEach((code)=>{\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: ()=>{\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error)=>{\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: ()=>{\n FS.init.initialized = false;\n _fflush(0);\n for(var i = 0; i < FS.streams.length; i++){\n var stream = FS.streams[i];\n if (!stream) continue;\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite)=>{\n var mode = 0;\n if (canRead) mode |= 365;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink)=>{\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) return null;\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink)=>{\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite)=>{\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while(parts.length){\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn)=>{\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for(var i = 0, len = data.length; i < len; ++i)arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: (stream)=>{\n stream.seekable = false;\n },\n close: (stream)=>{\n if (output && output.buffer && output.buffer.length) output(10);\n },\n read: (stream, buffer, offset, length, pos)=>{\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos)=>{\n for(var i = 0; i < length; i++)try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: (obj)=>{\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n else if (read_) try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n else throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n },\n createLazyFile: (parent, name, url, canRead, canWrite)=>{\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) return undefined;\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1048576;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to)=>{\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) return new Uint8Array(xhr.response || []);\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter((chunkNum)=>{\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") lazyArray.chunks[chunkNum] = doXHR(start, end);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else var properties = {\n isDevice: false,\n url: url\n };\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) node.contents = properties.contents;\n else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach((key)=>{\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents.get(position + i);\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position)=>{\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags)=>{\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish)=>{\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, ()=>{\n if (onerror) onerror();\n removeRunDependency(dep);\n })) return;\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") asyncLoad(url, (byteArray)=>processData(byteArray), onerror);\n else processData(url);\n },\n indexedDB: ()=>{\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: ()=>{\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = ()=>{\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = ()=>{\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n try {\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var getRequest = files.get(path);\n getRequest.onsuccess = ()=>{\n if (FS.analyzePath(path).exists) FS.unlink(path);\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n };\n var SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) return path;\n var dir;\n if (dirfd === -100) dir = FS.cwd();\n else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) throw new FS.ErrnoError(44);\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) return -54;\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [\n stat.size >>> 0,\n (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [\n Math.floor(atime / 1e3) >>> 0,\n (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(mtime / 1e3) >>> 0,\n (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(ctime / 1e3) >>> 0,\n (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [\n stat.ino >>> 0,\n (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n if (flags & 2) return 0;\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n };\n function ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & -8) return -28;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) return -44;\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) return -2;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n }\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(cmd){\n case 0:\n var arg = SYSCALLS.get();\n if (arg < 0) return -28;\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4:\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n case 5:\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(op){\n case 21509:\n case 21505:\n if (!stream.tty) return -59;\n return 0;\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n if (!stream.tty) return -59;\n return 0;\n case 21519:\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n case 21520:\n if (!stream.tty) return -59;\n return -28;\n case 21531:\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n case 21523:\n if (!stream.tty) return -59;\n return 0;\n case 21524:\n if (!stream.tty) return -59;\n return 0;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var nowIsMonotonic = true;\n function __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n }\n function readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n }\n function __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n }\n var __MONTH_DAYS_LEAP_CUMULATIVE = [\n 0,\n 31,\n 60,\n 91,\n 121,\n 152,\n 182,\n 213,\n 244,\n 274,\n 305,\n 335\n ];\n var __MONTH_DAYS_REGULAR_CUMULATIVE = [\n 0,\n 31,\n 59,\n 90,\n 120,\n 151,\n 181,\n 212,\n 243,\n 273,\n 304,\n 334\n ];\n function __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n }\n function __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n }\n function allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n }\n function _emscripten_date_now() {\n return Date.now();\n }\n var _emscripten_get_now;\n _emscripten_get_now = ()=>performance.now();\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n }\n function getHeapMax() {\n return 2147483648;\n }\n function emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) return false;\n let alignUp = (x, multiple)=>x + (multiple - x % multiple) % multiple;\n for(var cutDown = 1; cutDown <= 4; cutDown *= 2){\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) return true;\n }\n return false;\n }\n function _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n }\n function exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) exitRuntime();\n _proc_exit(status);\n }\n var _exit = exitJS;\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n }\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [\n stream.position >>> 0,\n (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function __arraySum(array, index) {\n var sum = 0;\n for(var i = 0; i <= index; sum += array[i++]);\n return sum;\n }\n var __MONTH_DAYS_LEAP = [\n 31,\n 29,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n ];\n var __MONTH_DAYS_REGULAR = [\n 31,\n 28,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n ];\n function __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while(days > 0){\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) newDate.setMonth(currentMonth + 1);\n else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n }\n function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }\n function _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\"\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for(var rule in EXPANSION_RULES_1)pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n var WEEKDAYS = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ];\n var MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ];\n function leadingSomething(value, digits, character) {\n var str = typeof value == \"number\" ? value.toString() : value || \"\";\n while(str.length < digits)str = character[0] + str;\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) compare = sgn(date1.getDate() - date2.getDate());\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch(janFourth.getDay()){\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n case 1:\n return janFourth;\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) return thisDate.getFullYear() + 1;\n return thisDate.getFullYear();\n }\n return thisDate.getFullYear() - 1;\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function(date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function(date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function(date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function(date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function(date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n \"%d\": function(date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function(date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function(date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function(date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function(date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function(date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12;\n else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function(date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n \"%m\": function(date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function(date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function() {\n return \"\\n\";\n },\n \"%p\": function(date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) return \"AM\";\n return \"PM\";\n },\n \"%S\": function(date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function() {\n return \"\t\";\n },\n \"%u\": function(date) {\n return date.tm_wday || 7;\n },\n \"%U\": function(date) {\n var days = date.tm_yday + 7 - date.tm_wday;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%V\": function(date) {\n var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7);\n if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) val++;\n if (!val) {\n val = 52;\n var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;\n if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) val++;\n } else if (val == 53) {\n var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;\n if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1;\n }\n return leadingNulls(val, 2);\n },\n \"%w\": function(date) {\n return date.tm_wday;\n },\n \"%W\": function(date) {\n var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%y\": function(date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function(date) {\n return date.tm_year + 1900;\n },\n \"%z\": function(date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function(date) {\n return date.tm_zone;\n },\n \"%%\": function() {\n return \"%\";\n }\n };\n pattern = pattern.replace(/%%/g, \"\\x00\\x00\");\n for(var rule in EXPANSION_RULES_2)if (pattern.includes(rule)) pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_2[rule](date));\n pattern = pattern.replace(/\\0\\0/g, \"%\");\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) return 0;\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n }\n function handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") return EXITSTATUS;\n quit_(1, e);\n }\n function allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n }\n function maybeExit() {\n if (!keepRuntimeAlive()) try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n function callUserCallback(func) {\n if (runtimeExited || ABORT) return;\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n }\n function runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n }\n function runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n }\n var Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [\n \"emscripten_sleep\",\n \"emscripten_wget\",\n \"emscripten_wget_data\",\n \"emscripten_idb_load\",\n \"emscripten_idb_store\",\n \"emscripten_idb_delete\",\n \"emscripten_idb_exists\",\n \"emscripten_idb_load_blob\",\n \"emscripten_idb_store_blob\",\n \"SDL_Delay\",\n \"emscripten_scan_registers\",\n \"emscripten_lazy_load_code\",\n \"emscripten_fiber_swap\",\n \"__load_secondary_module\",\n \"fd_sync\",\n \"__wasi_fd_sync\",\n \"_emval_await\",\n \"_dlopen_js\",\n \"__asyncjs__*\"\n ];\n for(var x in imports)(function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n })(x);\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for(var x in exports)(function(x) {\n var original = exports[x];\n if (typeof original == \"function\") ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally{\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n else ret[x] = original;\n })(x);\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") Fibers.trampoline();\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject)=>{\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0)=>{\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) return;\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.resume();\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) throw asyncWasmReturnValue;\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.pause();\n runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach((func)=>callUserCallback(func));\n } else abort(\"invalid state: \" + Asyncify.state);\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep((wakeUp)=>{\n startAsync().then(wakeUp);\n });\n }\n };\n function AsciiToString(ptr) {\n var str = \"\";\n while(true){\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n }\n var FSNode = function(parent, name, mode, rdev) {\n if (!parent) parent = this;\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n var readMode = 365;\n var writeMode = 146;\n Object.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n });\n FS.FSNode = FSNode;\n FS.staticInit();\n var wasmImports = {\n \"j\": __asyncjs__emglken_fill_stdin_buffer,\n \"s\": ___syscall_faccessat,\n \"e\": ___syscall_fcntl64,\n \"r\": ___syscall_getcwd,\n \"q\": ___syscall_ioctl,\n \"p\": ___syscall_openat,\n \"o\": ___syscall_stat64,\n \"m\": __emscripten_get_now_is_monotonic,\n \"l\": __localtime_js,\n \"k\": __tzset_js,\n \"b\": _emscripten_date_now,\n \"i\": _emscripten_memcpy_big,\n \"h\": _emscripten_resize_heap,\n \"a\": _exit,\n \"d\": _fd_close,\n \"n\": _fd_read,\n \"g\": _fd_seek,\n \"c\": _fd_write,\n \"f\": _strftime\n };\n var asm = createWasm();\n var ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"u\"]).apply(null, arguments);\n };\n var _malloc = function() {\n return (_malloc = Module[\"asm\"][\"v\"]).apply(null, arguments);\n };\n var _free = function() {\n return (_free = Module[\"asm\"][\"w\"]).apply(null, arguments);\n };\n var _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"x\"]).apply(null, arguments);\n };\n var _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"y\"]).apply(null, arguments);\n };\n var _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"z\"]).apply(null, arguments);\n };\n var ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"A\"]).apply(null, arguments);\n };\n var ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"B\"]).apply(null, arguments);\n };\n var _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n };\n var stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"D\"]).apply(null, arguments);\n };\n var _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"E\"]).apply(null, arguments);\n };\n var _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"F\"]).apply(null, arguments);\n };\n var _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"G\"]).apply(null, arguments);\n };\n var _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"H\"]).apply(null, arguments);\n };\n var ___start_em_js = Module[\"___start_em_js\"] = 18128;\n var ___stop_em_js = Module[\"___stop_em_js\"] = 20813;\n Module[\"AsciiToString\"] = AsciiToString;\n Module[\"FS\"] = FS;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach((arg)=>{\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n }\n function run(args = arguments_) {\n if (runDependencies > 0) return;\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else doRun();\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [\n Module[\"preInit\"]\n ];\n while(Module[\"preInit\"].length > 0)Module[\"preInit\"].pop()();\n }\n var shouldRunNow = true;\n if (Module[\"noInitialRun\"]) shouldRunNow = false;\n run();\n return Module.ready;\n };\n})();\nvar $6b4c486f96eb5551$export$2e2bcd8739ae039 = $6b4c486f96eb5551$var$Module;\n\n\nclass $93f872a37763fb75$export$2e2bcd8739ae039 extends (0, $7c4ebf67e8338ec8$export$2e2bcd8739ae039) {\n default_options() {\n return {\n vmcore: (0, $6b4c486f96eb5551$export$2e2bcd8739ae039)\n };\n }\n}\n\n\n/*\n\nEmglken port of TADS\n====================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ \nvar $56d7e4ab31bcd78a$exports = {};\n\n\n$56d7e4ab31bcd78a$exports = (parcelRequire(\"6kBsm\")).getBundleURL(\"ejVIo\") + (parcelRequire(\"n9Yfb\")).resolve(\"b8QSH\");\n\n\nvar $5da5b9828ec10744$var$Module = (()=>{\n var _scriptDir = \"file:///node_modules/emglken/build/tads-core.js\";\n return function(Module = {}) {\n var Module = typeof Module != \"undefined\" ? Module : {};\n var readyPromiseResolve, readyPromiseReject;\n Module[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow)=>{\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary, setWindowTitle;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) scriptDirectory = self.location.href;\n else if (typeof document != \"undefined\" && document.currentScript) scriptDirectory = document.currentScript.src;\n if (_scriptDir) scriptDirectory = _scriptDir;\n if (scriptDirectory.indexOf(\"blob:\") !== 0) scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n else scriptDirectory = \"\";\n read_ = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) readBinary = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n readAsync = (url, onload, onerror)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = ()=>{\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n setWindowTitle = (title)=>document.title = title;\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n var wasmBinary;\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n var noExitRuntime = Module[\"noExitRuntime\"] || false;\n if (typeof WebAssembly != \"object\") abort(\"no native wasm support detected\");\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) abort(text);\n }\n var UTF8Decoder = new TextDecoder(\"utf8\");\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while(heapOrArray[endPtr] && !(endPtr >= endIdx))++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for(var end = ptr; !(end >= maxPtr) && HEAPU8[end];)++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n }\n function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for(var i = 0; i < str.length; ++i){\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n function lengthBytesUTF8(str) {\n var len = 0;\n for(var i = 0; i < str.length; ++i){\n var c = str.charCodeAt(i);\n if (c <= 127) len++;\n else if (c <= 2047) len += 2;\n else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else len += 3;\n }\n return len;\n }\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var wasmTable;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATEXIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n var runtimeKeepaliveCounter = 0;\n function keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [\n Module[\"preRun\"]\n ];\n while(Module[\"preRun\"].length)addOnPreRun(Module[\"preRun\"].shift());\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n }\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n function exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [\n Module[\"postRun\"]\n ];\n while(Module[\"postRun\"].length)addOnPostRun(Module[\"postRun\"].shift());\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n if (Module[\"onAbort\"]) Module[\"onAbort\"](what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n if (Module[\"locateFile\"]) {\n wasmBinaryFile = \"tads-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) wasmBinaryFile = locateFile(wasmBinaryFile);\n } else wasmBinaryFile = new URL($56d7e4ab31bcd78a$exports).href;\n function getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary);\n if (readBinary) return readBinary(file);\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n }\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n else return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n function createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"ha\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"qa\"];\n addOnInit(Module[\"asm\"][\"ia\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n }\n var tempDouble;\n var tempI64;\n function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async ()=>{\n if (!Module.emglken_stdin_buffers.length) await new Promise((resolve)=>{\n Module.emglken_stdin_ready = resolve;\n });\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) HEAPU8.set(input, buffer);\n else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n }\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n }\n function callRuntimeCallbacks(callbacks) {\n while(callbacks.length > 0)callbacks.shift()(Module);\n }\n var PATH = {\n isAbs: (path)=>path.charAt(0) === \"/\",\n splitPath: (filename)=>{\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot)=>{\n var up = 0;\n for(var i = parts.length - 1; i >= 0; i--){\n var last = parts[i];\n if (last === \".\") parts.splice(i, 1);\n else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) for(; up; up--)parts.unshift(\"..\");\n return parts;\n },\n normalize: (path)=>{\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p)=>!!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) path = \".\";\n if (path && trailingSlash) path += \"/\";\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: (path)=>{\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) return \".\";\n if (dir) dir = dir.substr(0, dir.length - 1);\n return root + dir;\n },\n basename: (path)=>{\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r)=>{\n return PATH.normalize(l + \"/\" + r);\n }\n };\n function getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return ()=>{\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return ()=>abort(\"randomDevice\");\n }\n var PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for(var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--){\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") throw new TypeError(\"Arguments to path.resolve must be strings\");\n else if (!path) return \"\";\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p)=>!!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to)=>{\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for(; start < arr.length; start++){\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for(; end >= 0; end--){\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for(var i = 0; i < length; i++)if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n var outputParts = [];\n for(var i = samePartsLength; i < fromParts.length; i++)outputParts.push(\"..\");\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n var TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) throw new FS.ErrnoError(43);\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) throw new FS.ErrnoError(60);\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) throw new FS.ErrnoError(60);\n try {\n for(var i = 0; i < length; i++)stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) result += \"\\n\";\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) result += \"\\n\";\n }\n if (!result) return null;\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n };\n function mmapAlloc(size) {\n abort();\n }\n var MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16895, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) throw new FS.ErrnoError(63);\n if (!MEMFS.ops_table) MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1048576;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) attr.size = 4096;\n else if (FS.isFile(node.mode)) attr.size = node.usedBytes;\n else if (FS.isLink(node.mode)) attr.size = node.link.length;\n else attr.size = 0;\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) node.mode = attr.mode;\n if (attr.timestamp !== undefined) node.timestamp = attr.timestamp;\n if (attr.size !== undefined) MEMFS.resizeFileStorage(node, attr.size);\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for(var i in new_node.contents)throw new FS.ErrnoError(55);\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for(var i in node.contents)throw new FS.ErrnoError(55);\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [\n \".\",\n \"..\"\n ];\n for(var key in node.contents){\n if (!node.contents.hasOwnProperty(key)) continue;\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 41471, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) throw new FS.ErrnoError(28);\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) buffer.set(contents.subarray(position, position + size), offset);\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) canOwn = false;\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);\n else for(var i = 0; i < length; i++)node.contents[position + i] = buffer[offset + i];\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) position += stream.position;\n else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) position += stream.node.usedBytes;\n }\n if (position < 0) throw new FS.ErrnoError(28);\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) contents = contents.subarray(position, position + length);\n else contents = Array.prototype.slice.call(contents, position, position + length);\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n };\n function asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, (arrayBuffer)=>{\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, (event)=>{\n if (onerror) onerror();\n else throw 'Loading data file \"' + url + '\" failed.';\n });\n if (dep) addRunDependency(dep);\n }\n var FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {})=>{\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) throw new FS.ErrnoError(32);\n var parts = path.split(\"/\").filter((p)=>!!p);\n var current = FS.root;\n var current_path = \"/\";\n for(var i = 0; i < parts.length; i++){\n var islast = i === parts.length - 1;\n if (islast && opts.parent) break;\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) current = current.mounted.root;\n }\n if (!islast || opts.follow) {\n var count = 0;\n while(FS.isLink(current.mode)){\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) throw new FS.ErrnoError(32);\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: (node)=>{\n var path;\n while(true){\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name)=>{\n var hash = 0;\n for(var i = 0; i < name.length; i++)hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) FS.nameTable[hash] = node.name_next;\n else {\n var current = FS.nameTable[hash];\n while(current){\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name)=>{\n var errCode = FS.mayLookup(parent);\n if (errCode) throw new FS.ErrnoError(errCode, parent);\n var hash = FS.hashName(parent.id, name);\n for(var node = FS.nameTable[hash]; node; node = node.name_next){\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) return node;\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev)=>{\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: (node)=>{\n FS.hashRemoveNode(node);\n },\n isRoot: (node)=>{\n return node === node.parent;\n },\n isMountpoint: (node)=>{\n return !!node.mounted;\n },\n isFile: (mode)=>{\n return (mode & 61440) === 32768;\n },\n isDir: (mode)=>{\n return (mode & 61440) === 16384;\n },\n isLink: (mode)=>{\n return (mode & 61440) === 40960;\n },\n isChrdev: (mode)=>{\n return (mode & 61440) === 8192;\n },\n isBlkdev: (mode)=>{\n return (mode & 61440) === 24576;\n },\n isFIFO: (mode)=>{\n return (mode & 61440) === 4096;\n },\n isSocket: (mode)=>{\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: (str)=>{\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") throw new Error(\"Unknown file open mode: \" + str);\n return flags;\n },\n flagsToPermissionString: (flag)=>{\n var perms = [\n \"r\",\n \"w\",\n \"rw\"\n ][flag & 3];\n if (flag & 512) perms += \"w\";\n return perms;\n },\n nodePermissions: (node, perms)=>{\n if (FS.ignorePermissions) return 0;\n if (perms.includes(\"r\") && !(node.mode & 292)) return 2;\n else if (perms.includes(\"w\") && !(node.mode & 146)) return 2;\n else if (perms.includes(\"x\") && !(node.mode & 73)) return 2;\n return 0;\n },\n mayLookup: (dir)=>{\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name)=>{\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir)=>{\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) return errCode;\n if (isdir) {\n if (!FS.isDir(node.mode)) return 54;\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) return 10;\n } else {\n if (FS.isDir(node.mode)) return 31;\n }\n return 0;\n },\n mayOpen: (node, flags)=>{\n if (!node) return 44;\n if (FS.isLink(node.mode)) return 32;\n else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) return 31;\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS)=>{\n for(var fd = fd_start; fd <= fd_end; fd++){\n if (!FS.streams[fd]) return fd;\n }\n throw new FS.ErrnoError(33);\n },\n getStream: (fd)=>FS.streams[fd],\n createStream: (stream, fd_start, fd_end)=>{\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: (fd)=>{\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: (stream)=>{\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n },\n llseek: ()=>{\n throw new FS.ErrnoError(70);\n }\n },\n major: (dev)=>dev >> 8,\n minor: (dev)=>dev & 255,\n makedev: (ma, mi)=>ma << 8 | mi,\n registerDevice: (dev, ops)=>{\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: (dev)=>FS.devices[dev],\n getMounts: (mount)=>{\n var mounts = [];\n var check = [\n mount\n ];\n while(check.length){\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback)=>{\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) doCallback(null);\n }\n mounts.forEach((mount)=>{\n if (!mount.type.syncfs) return done(null);\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint)=>{\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) throw new FS.ErrnoError(10);\n else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n if (!FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) FS.root = mountRoot;\n else if (node) {\n node.mounted = mount;\n if (node.mount) node.mount.mounts.push(mount);\n }\n return mountRoot;\n },\n unmount: (mountpoint)=>{\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) throw new FS.ErrnoError(28);\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash)=>{\n var current = FS.nameTable[hash];\n while(current){\n var next = current.name_next;\n if (mounts.includes(current.mount)) FS.destroyNode(current);\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name)=>{\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") throw new FS.ErrnoError(28);\n var errCode = FS.mayCreate(parent, name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.mknod) throw new FS.ErrnoError(63);\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode)=>{\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode)=>{\n mode = mode !== undefined ? mode : 511;\n mode &= 1023;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode)=>{\n var dirs = path.split(\"/\");\n var d = \"\";\n for(var i = 0; i < dirs.length; ++i){\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev)=>{\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath)=>{\n if (!PATH_FS.resolve(oldpath)) throw new FS.ErrnoError(44);\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.symlink) throw new FS.ErrnoError(63);\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path)=>{\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) throw new FS.ErrnoError(75);\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(28);\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(55);\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) return;\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) throw new FS.ErrnoError(errCode);\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!old_dir.node_ops.rename) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) throw new FS.ErrnoError(10);\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally{\n FS.hashAddNode(old_node);\n }\n },\n rmdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.rmdir) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) throw new FS.ErrnoError(54);\n return node.node_ops.readdir(node);\n },\n unlink: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.unlink) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: (path)=>{\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) throw new FS.ErrnoError(44);\n if (!link.node_ops.readlink) throw new FS.ErrnoError(28);\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow)=>{\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) throw new FS.ErrnoError(44);\n if (!node.node_ops.getattr) throw new FS.ErrnoError(63);\n return node.node_ops.getattr(node);\n },\n lstat: (path)=>{\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & -4096,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode)=>{\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid)=>{\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len)=>{\n if (len < 0) throw new FS.ErrnoError(28);\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n if (FS.isDir(node.mode)) throw new FS.ErrnoError(31);\n if (!FS.isFile(node.mode)) throw new FS.ErrnoError(28);\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(28);\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode)=>{\n if (path === \"\") throw new FS.ErrnoError(44);\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) mode = mode & 4095 | 32768;\n else mode = 0;\n var node;\n if (typeof path == \"object\") node = path;\n else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) throw new FS.ErrnoError(20);\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) throw new FS.ErrnoError(44);\n if (FS.isChrdev(node.mode)) flags &= -513;\n if (flags & 65536 && !FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n if (flags & 512 && !created) FS.truncate(node, 0);\n flags &= -131713;\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) FS.readFiles[path] = 1;\n }\n return stream;\n },\n close: (stream)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) stream.stream_ops.close(stream);\n } catch (e) {\n throw e;\n } finally{\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: (stream)=>{\n return stream.fd === null;\n },\n llseek: (stream, offset, whence)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (!stream.seekable || !stream.stream_ops.llseek) throw new FS.ErrnoError(70);\n if (whence != 0 && whence != 1 && whence != 2) throw new FS.ErrnoError(28);\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.read) throw new FS.ErrnoError(28);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.write) throw new FS.ErrnoError(28);\n if (stream.seekable && stream.flags & 1024) FS.llseek(stream, 0, 2);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (offset < 0 || length <= 0) throw new FS.ErrnoError(28);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) throw new FS.ErrnoError(43);\n if (!stream.stream_ops.allocate) throw new FS.ErrnoError(138);\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags)=>{\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) throw new FS.ErrnoError(2);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(2);\n if (!stream.stream_ops.mmap) throw new FS.ErrnoError(43);\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags)=>{\n if (!stream.stream_ops.msync) return 0;\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: (stream)=>0,\n ioctl: (stream, cmd, arg)=>{\n if (!stream.stream_ops.ioctl) throw new FS.ErrnoError(59);\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {})=>{\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") ret = UTF8ArrayToString(buf, 0);\n else if (opts.encoding === \"binary\") ret = buf;\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {})=>{\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n else throw new Error(\"Unsupported data type\");\n FS.close(stream);\n },\n cwd: ()=>FS.currentPath,\n chdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) throw new FS.ErrnoError(44);\n if (!FS.isDir(lookup.node.mode)) throw new FS.ErrnoError(54);\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) throw new FS.ErrnoError(errCode);\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: ()=>{\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: ()=>{\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: ()=>0,\n write: (stream, buffer, offset, length, pos)=>length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: ()=>{\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: ()=>{\n var node = FS.createNode(proc_self, \"fd\", 16895, 73);\n node.node_ops = {\n lookup: (parent, name)=>{\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: ()=>stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: ()=>{\n if (Module[\"stdin\"]) FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n if (Module[\"stdout\"]) FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n if (Module[\"stderr\"]) FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n else FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: ()=>{\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [\n 44\n ].forEach((code)=>{\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: ()=>{\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error)=>{\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: ()=>{\n FS.init.initialized = false;\n _fflush(0);\n for(var i = 0; i < FS.streams.length; i++){\n var stream = FS.streams[i];\n if (!stream) continue;\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite)=>{\n var mode = 0;\n if (canRead) mode |= 365;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink)=>{\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) return null;\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink)=>{\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite)=>{\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while(parts.length){\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn)=>{\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for(var i = 0, len = data.length; i < len; ++i)arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: (stream)=>{\n stream.seekable = false;\n },\n close: (stream)=>{\n if (output && output.buffer && output.buffer.length) output(10);\n },\n read: (stream, buffer, offset, length, pos)=>{\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos)=>{\n for(var i = 0; i < length; i++)try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: (obj)=>{\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n else if (read_) try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n else throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n },\n createLazyFile: (parent, name, url, canRead, canWrite)=>{\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) return undefined;\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1048576;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to)=>{\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) return new Uint8Array(xhr.response || []);\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter((chunkNum)=>{\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") lazyArray.chunks[chunkNum] = doXHR(start, end);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else var properties = {\n isDevice: false,\n url: url\n };\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) node.contents = properties.contents;\n else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach((key)=>{\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents.get(position + i);\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position)=>{\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags)=>{\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish)=>{\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, ()=>{\n if (onerror) onerror();\n removeRunDependency(dep);\n })) return;\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") asyncLoad(url, (byteArray)=>processData(byteArray), onerror);\n else processData(url);\n },\n indexedDB: ()=>{\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: ()=>{\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = ()=>{\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = ()=>{\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n try {\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var getRequest = files.get(path);\n getRequest.onsuccess = ()=>{\n if (FS.analyzePath(path).exists) FS.unlink(path);\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n };\n var SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) return path;\n var dir;\n if (dirfd === -100) dir = FS.cwd();\n else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) throw new FS.ErrnoError(44);\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) return -54;\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [\n stat.size >>> 0,\n (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [\n Math.floor(atime / 1e3) >>> 0,\n (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(mtime / 1e3) >>> 0,\n (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(ctime / 1e3) >>> 0,\n (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [\n stat.ino >>> 0,\n (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n if (flags & 2) return 0;\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n };\n function ___syscall_dup(fd) {\n try {\n var old = SYSCALLS.getStreamFromFD(fd);\n return FS.createStream(old, 0).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & -8) return -28;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) return -44;\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) return -2;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n }\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(cmd){\n case 0:\n var arg = SYSCALLS.get();\n if (arg < 0) return -28;\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4:\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n case 5:\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_getdents64(fd, dirp, count) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n if (!stream.getdents) stream.getdents = FS.readdir(stream.path);\n var struct_size = 280;\n var pos = 0;\n var off = FS.llseek(stream, 0, 1);\n var idx = Math.floor(off / struct_size);\n while(idx < stream.getdents.length && pos + struct_size <= count){\n var id;\n var type;\n var name = stream.getdents[idx];\n if (name === \".\") {\n id = stream.node.id;\n type = 4;\n } else if (name === \"..\") {\n var lookup = FS.lookupPath(stream.path, {\n parent: true\n });\n id = lookup.node.id;\n type = 4;\n } else {\n var child = FS.lookupNode(stream.node, name);\n id = child.id;\n type = FS.isChrdev(child.mode) ? 2 : FS.isDir(child.mode) ? 4 : FS.isLink(child.mode) ? 10 : 8;\n }\n tempI64 = [\n id >>> 0,\n (tempDouble = id, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[dirp + pos >> 2] = tempI64[0], HEAP32[dirp + pos + 4 >> 2] = tempI64[1];\n tempI64 = [\n (idx + 1) * struct_size >>> 0,\n (tempDouble = (idx + 1) * struct_size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[dirp + pos + 8 >> 2] = tempI64[0], HEAP32[dirp + pos + 12 >> 2] = tempI64[1];\n HEAP16[dirp + pos + 16 >> 1] = 280;\n HEAP8[dirp + pos + 18 >> 0] = type;\n stringToUTF8(name, dirp + pos + 19, 256);\n pos += struct_size;\n idx += 1;\n }\n FS.llseek(stream, idx * struct_size, 0);\n return pos;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(op){\n case 21509:\n case 21505:\n if (!stream.tty) return -59;\n return 0;\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n if (!stream.tty) return -59;\n return 0;\n case 21519:\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n case 21520:\n if (!stream.tty) return -59;\n return -28;\n case 21531:\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n case 21523:\n if (!stream.tty) return -59;\n return 0;\n case 21524:\n if (!stream.tty) return -59;\n return 0;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_lstat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.lstat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_mkdirat(dirfd, path, mode) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n path = PATH.normalize(path);\n if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\n FS.mkdir(path, mode, 0);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_newfstatat(dirfd, path, buf, flags) {\n try {\n path = SYSCALLS.getStr(path);\n var nofollow = flags & 256;\n var allowEmpty = flags & 4096;\n flags = flags & -6401;\n path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);\n return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_readlinkat(dirfd, path, buf, bufsize) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (bufsize <= 0) return -28;\n var ret = FS.readlink(path);\n var len = Math.min(bufsize, lengthBytesUTF8(ret));\n var endChar = HEAP8[buf + len];\n stringToUTF8(ret, buf, bufsize + 1);\n HEAP8[buf + len] = endChar;\n return len;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_renameat(olddirfd, oldpath, newdirfd, newpath) {\n try {\n oldpath = SYSCALLS.getStr(oldpath);\n newpath = SYSCALLS.getStr(newpath);\n oldpath = SYSCALLS.calculateAt(olddirfd, oldpath);\n newpath = SYSCALLS.calculateAt(newdirfd, newpath);\n FS.rename(oldpath, newpath);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_rmdir(path) {\n try {\n path = SYSCALLS.getStr(path);\n FS.rmdir(path);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_unlinkat(dirfd, path, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (flags === 0) FS.unlink(path);\n else if (flags === 512) FS.rmdir(path);\n else abort(\"Invalid flags passed to unlinkat\");\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var nowIsMonotonic = true;\n function __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n }\n function __emscripten_throw_longjmp() {\n throw Infinity;\n }\n function readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n }\n function __gmtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getUTCSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getUTCHours();\n HEAP32[tmPtr + 12 >> 2] = date.getUTCDate();\n HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / 86400000 | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n }\n function __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n }\n var __MONTH_DAYS_LEAP_CUMULATIVE = [\n 0,\n 31,\n 60,\n 91,\n 121,\n 152,\n 182,\n 213,\n 244,\n 274,\n 305,\n 335\n ];\n var __MONTH_DAYS_REGULAR_CUMULATIVE = [\n 0,\n 31,\n 59,\n 90,\n 120,\n 151,\n 181,\n 212,\n 243,\n 273,\n 304,\n 334\n ];\n function __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n }\n function __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n }\n function allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n }\n function _abort() {\n abort(\"\");\n }\n function _emscripten_date_now() {\n return Date.now();\n }\n var _emscripten_get_now;\n _emscripten_get_now = ()=>performance.now();\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n }\n function getHeapMax() {\n return 2147483648;\n }\n function emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) return false;\n let alignUp = (x, multiple)=>x + (multiple - x % multiple) % multiple;\n for(var cutDown = 1; cutDown <= 4; cutDown *= 2){\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) return true;\n }\n return false;\n }\n var ENV = {};\n function getExecutableName() {\n return thisProgram || \"./this.program\";\n }\n function getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": lang,\n \"_\": getExecutableName()\n };\n for(var x in ENV)if (ENV[x] === undefined) delete env[x];\n else env[x] = ENV[x];\n var strings = [];\n for(var x in env)strings.push(x + \"=\" + env[x]);\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n }\n function writeAsciiToMemory(str, buffer, dontAddNull) {\n for(var i = 0; i < str.length; ++i)HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n }\n function _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function(string, i) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n }\n function _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function(string) {\n bufSize += string.length + 1;\n });\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n }\n function _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n }\n function exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) exitRuntime();\n _proc_exit(status);\n }\n var _exit = exitJS;\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n }\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [\n stream.position >>> 0,\n (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function __arraySum(array, index) {\n var sum = 0;\n for(var i = 0; i <= index; sum += array[i++]);\n return sum;\n }\n var __MONTH_DAYS_LEAP = [\n 31,\n 29,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n ];\n var __MONTH_DAYS_REGULAR = [\n 31,\n 28,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n ];\n function __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while(days > 0){\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) newDate.setMonth(currentMonth + 1);\n else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n }\n function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }\n function _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\"\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for(var rule in EXPANSION_RULES_1)pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n var WEEKDAYS = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ];\n var MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ];\n function leadingSomething(value, digits, character) {\n var str = typeof value == \"number\" ? value.toString() : value || \"\";\n while(str.length < digits)str = character[0] + str;\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) compare = sgn(date1.getDate() - date2.getDate());\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch(janFourth.getDay()){\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n case 1:\n return janFourth;\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) return thisDate.getFullYear() + 1;\n return thisDate.getFullYear();\n }\n return thisDate.getFullYear() - 1;\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function(date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function(date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function(date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function(date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function(date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n \"%d\": function(date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function(date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function(date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function(date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function(date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function(date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12;\n else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function(date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n \"%m\": function(date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function(date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function() {\n return \"\\n\";\n },\n \"%p\": function(date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) return \"AM\";\n return \"PM\";\n },\n \"%S\": function(date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function() {\n return \"\t\";\n },\n \"%u\": function(date) {\n return date.tm_wday || 7;\n },\n \"%U\": function(date) {\n var days = date.tm_yday + 7 - date.tm_wday;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%V\": function(date) {\n var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7);\n if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) val++;\n if (!val) {\n val = 52;\n var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;\n if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) val++;\n } else if (val == 53) {\n var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;\n if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1;\n }\n return leadingNulls(val, 2);\n },\n \"%w\": function(date) {\n return date.tm_wday;\n },\n \"%W\": function(date) {\n var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%y\": function(date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function(date) {\n return date.tm_year + 1900;\n },\n \"%z\": function(date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function(date) {\n return date.tm_zone;\n },\n \"%%\": function() {\n return \"%\";\n }\n };\n pattern = pattern.replace(/%%/g, \"\\x00\\x00\");\n for(var rule in EXPANSION_RULES_2)if (pattern.includes(rule)) pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_2[rule](date));\n pattern = pattern.replace(/\\0\\0/g, \"%\");\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) return 0;\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n }\n function handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") return EXITSTATUS;\n quit_(1, e);\n }\n function allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n }\n function maybeExit() {\n if (!keepRuntimeAlive()) try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n function callUserCallback(func) {\n if (runtimeExited || ABORT) return;\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n }\n function runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n }\n function runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n }\n var Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [\n \"invoke_*\",\n \"emscripten_sleep\",\n \"emscripten_wget\",\n \"emscripten_wget_data\",\n \"emscripten_idb_load\",\n \"emscripten_idb_store\",\n \"emscripten_idb_delete\",\n \"emscripten_idb_exists\",\n \"emscripten_idb_load_blob\",\n \"emscripten_idb_store_blob\",\n \"SDL_Delay\",\n \"emscripten_scan_registers\",\n \"emscripten_lazy_load_code\",\n \"emscripten_fiber_swap\",\n \"__load_secondary_module\",\n \"fd_sync\",\n \"__wasi_fd_sync\",\n \"_emval_await\",\n \"_dlopen_js\",\n \"__asyncjs__*\"\n ];\n for(var x in imports)(function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n })(x);\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for(var x in exports)(function(x) {\n var original = exports[x];\n if (typeof original == \"function\") ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally{\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n else ret[x] = original;\n })(x);\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") Fibers.trampoline();\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject)=>{\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0)=>{\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) return;\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.resume();\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) throw asyncWasmReturnValue;\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.pause();\n runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach((func)=>callUserCallback(func));\n } else abort(\"invalid state: \" + Asyncify.state);\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep((wakeUp)=>{\n startAsync().then(wakeUp);\n });\n }\n };\n function AsciiToString(ptr) {\n var str = \"\";\n while(true){\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n }\n var FSNode = function(parent, name, mode, rdev) {\n if (!parent) parent = this;\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n var readMode = 365;\n var writeMode = 146;\n Object.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n });\n FS.FSNode = FSNode;\n FS.staticInit();\n var wasmImports = {\n \"O\": __asyncjs__emglken_fill_stdin_buffer,\n \"ga\": ___syscall_dup,\n \"fa\": ___syscall_faccessat,\n \"G\": ___syscall_fcntl64,\n \"ea\": ___syscall_getcwd,\n \"da\": ___syscall_getdents64,\n \"ca\": ___syscall_ioctl,\n \"ba\": ___syscall_lstat64,\n \"aa\": ___syscall_mkdirat,\n \"$\": ___syscall_newfstatat,\n \"F\": ___syscall_openat,\n \"_\": ___syscall_readlinkat,\n \"Z\": ___syscall_renameat,\n \"E\": ___syscall_rmdir,\n \"Y\": ___syscall_stat64,\n \"X\": ___syscall_unlinkat,\n \"T\": __emscripten_get_now_is_monotonic,\n \"S\": __emscripten_throw_longjmp,\n \"R\": __gmtime_js,\n \"Q\": __localtime_js,\n \"P\": __tzset_js,\n \"C\": _abort,\n \"B\": _emscripten_date_now,\n \"A\": _emscripten_get_now,\n \"N\": _emscripten_memcpy_big,\n \"M\": _emscripten_resize_heap,\n \"W\": _environ_get,\n \"V\": _environ_sizes_get,\n \"y\": _exit,\n \"w\": _fd_close,\n \"U\": _fd_read,\n \"I\": _fd_seek,\n \"D\": _fd_write,\n \"L\": invoke_i,\n \"b\": invoke_ii,\n \"f\": invoke_iii,\n \"e\": invoke_iiii,\n \"c\": invoke_iiiii,\n \"j\": invoke_iiiiii,\n \"l\": invoke_iiiiiii,\n \"m\": invoke_iiiiiiii,\n \"s\": invoke_iiiiiiiii,\n \"t\": invoke_iiiiiiiiii,\n \"p\": invoke_iiiiiiiiiii,\n \"x\": invoke_iiiiiiiiiiii,\n \"q\": invoke_iiiiiiiiiiiiii,\n \"z\": invoke_iiiiiiiiiiiiiiii,\n \"v\": invoke_iiiiiiiiiiiiiiiiii,\n \"i\": invoke_v,\n \"h\": invoke_vi,\n \"d\": invoke_vii,\n \"a\": invoke_viii,\n \"g\": invoke_viiii,\n \"o\": invoke_viiiii,\n \"n\": invoke_viiiiii,\n \"K\": invoke_viiiiiii,\n \"r\": invoke_viiiiiiii,\n \"k\": invoke_viiiiiiiii,\n \"u\": invoke_viiiiiiiiiii,\n \"J\": invoke_viiiiiiiiiiiiiii,\n \"H\": _strftime\n };\n var asm = createWasm();\n var ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"ia\"]).apply(null, arguments);\n };\n var _malloc = function() {\n return (_malloc = Module[\"asm\"][\"ja\"]).apply(null, arguments);\n };\n var _free = function() {\n return (_free = Module[\"asm\"][\"ka\"]).apply(null, arguments);\n };\n var _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"la\"]).apply(null, arguments);\n };\n var _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"ma\"]).apply(null, arguments);\n };\n var _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"na\"]).apply(null, arguments);\n };\n var ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"oa\"]).apply(null, arguments);\n };\n var ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"pa\"]).apply(null, arguments);\n };\n var _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"ra\"]).apply(null, arguments);\n };\n var _saveSetjmp = function() {\n return (_saveSetjmp = Module[\"asm\"][\"saveSetjmp\"]).apply(null, arguments);\n };\n var _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n };\n var stackSave = function() {\n return (stackSave = Module[\"asm\"][\"sa\"]).apply(null, arguments);\n };\n var stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"ta\"]).apply(null, arguments);\n };\n var stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"ua\"]).apply(null, arguments);\n };\n var dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() {\n return (dynCall_iiiii = Module[\"dynCall_iiiii\"] = Module[\"asm\"][\"va\"]).apply(null, arguments);\n };\n var dynCall_ii = Module[\"dynCall_ii\"] = function() {\n return (dynCall_ii = Module[\"dynCall_ii\"] = Module[\"asm\"][\"wa\"]).apply(null, arguments);\n };\n var dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"xa\"]).apply(null, arguments);\n };\n var dynCall_iii = Module[\"dynCall_iii\"] = function() {\n return (dynCall_iii = Module[\"dynCall_iii\"] = Module[\"asm\"][\"ya\"]).apply(null, arguments);\n };\n var dynCall_viii = Module[\"dynCall_viii\"] = function() {\n return (dynCall_viii = Module[\"dynCall_viii\"] = Module[\"asm\"][\"za\"]).apply(null, arguments);\n };\n var dynCall_viiiiiiii = Module[\"dynCall_viiiiiiii\"] = function() {\n return (dynCall_viiiiiiii = Module[\"dynCall_viiiiiiii\"] = Module[\"asm\"][\"Aa\"]).apply(null, arguments);\n };\n var dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"Ba\"]).apply(null, arguments);\n };\n var dynCall_viiiii = Module[\"dynCall_viiiii\"] = function() {\n return (dynCall_viiiii = Module[\"dynCall_viiiii\"] = Module[\"asm\"][\"Ca\"]).apply(null, arguments);\n };\n var dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = function() {\n return (dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = Module[\"asm\"][\"Da\"]).apply(null, arguments);\n };\n var dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = function() {\n return (dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = Module[\"asm\"][\"Ea\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiii = Module[\"dynCall_iiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiii = Module[\"dynCall_iiiiiiiii\"] = Module[\"asm\"][\"Fa\"]).apply(null, arguments);\n };\n var dynCall_iiii = Module[\"dynCall_iiii\"] = function() {\n return (dynCall_iiii = Module[\"dynCall_iiii\"] = Module[\"asm\"][\"Ga\"]).apply(null, arguments);\n };\n var dynCall_viiiiiiiii = Module[\"dynCall_viiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiii = Module[\"dynCall_viiiiiiiii\"] = Module[\"asm\"][\"Ha\"]).apply(null, arguments);\n };\n var dynCall_viiii = Module[\"dynCall_viiii\"] = function() {\n return (dynCall_viiii = Module[\"dynCall_viiii\"] = Module[\"asm\"][\"Ia\"]).apply(null, arguments);\n };\n var dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = function() {\n return (dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = Module[\"asm\"][\"Ja\"]).apply(null, arguments);\n };\n var dynCall_viiiiiiiiiii = Module[\"dynCall_viiiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiiii = Module[\"dynCall_viiiiiiiiiii\"] = Module[\"asm\"][\"Ka\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiii = Module[\"dynCall_iiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiii = Module[\"dynCall_iiiiiiiiii\"] = Module[\"asm\"][\"La\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = function() {\n return (dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = Module[\"asm\"][\"Ma\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiiii = Module[\"dynCall_iiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiii = Module[\"dynCall_iiiiiiiiiii\"] = Module[\"asm\"][\"Na\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiii\"] = Module[\"asm\"][\"Oa\"]).apply(null, arguments);\n };\n var dynCall_v = Module[\"dynCall_v\"] = function() {\n return (dynCall_v = Module[\"dynCall_v\"] = Module[\"asm\"][\"Pa\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Qa\"]).apply(null, arguments);\n };\n var dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = function() {\n return (dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = Module[\"asm\"][\"Ra\"]).apply(null, arguments);\n };\n var dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Sa\"]).apply(null, arguments);\n };\n var dynCall_i = Module[\"dynCall_i\"] = function() {\n return (dynCall_i = Module[\"dynCall_i\"] = Module[\"asm\"][\"Ta\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = Module[\"asm\"][\"Ua\"]).apply(null, arguments);\n };\n var dynCall_iiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Va\"]).apply(null, arguments);\n };\n var _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"Wa\"]).apply(null, arguments);\n };\n var _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"Xa\"]).apply(null, arguments);\n };\n var _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"Ya\"]).apply(null, arguments);\n };\n var _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"Za\"]).apply(null, arguments);\n };\n var ___start_em_js = Module[\"___start_em_js\"] = 356528;\n var ___stop_em_js = Module[\"___stop_em_js\"] = 359213;\n function invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n return dynCall_iiiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iii(index, a1, a2) {\n var sp = stackSave();\n try {\n return dynCall_iii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) {\n var sp = stackSave();\n try {\n dynCall_viiiiii(index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiii(index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n dynCall_viiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n dynCall_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n Module[\"AsciiToString\"] = AsciiToString;\n Module[\"FS\"] = FS;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach((arg)=>{\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n }\n function run(args = arguments_) {\n if (runDependencies > 0) return;\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else doRun();\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [\n Module[\"preInit\"]\n ];\n while(Module[\"preInit\"].length > 0)Module[\"preInit\"].pop()();\n }\n var shouldRunNow = true;\n if (Module[\"noInitialRun\"]) shouldRunNow = false;\n run();\n return Module.ready;\n };\n})();\nvar $5da5b9828ec10744$export$2e2bcd8739ae039 = $5da5b9828ec10744$var$Module;\n\n\nclass $fe7c55ec16cd7a3a$export$2e2bcd8739ae039 extends (0, $7c4ebf67e8338ec8$export$2e2bcd8739ae039) {\n default_options() {\n return {\n vmcore: (0, $5da5b9828ec10744$export$2e2bcd8739ae039)\n };\n }\n}\n\n\n/*\n\nEmglken port of Scare\n=====================\n\nCopyright (c) 2023 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/ \nvar $9057ad164b194cd9$exports = {};\n\n\n$9057ad164b194cd9$exports = (parcelRequire(\"6kBsm\")).getBundleURL(\"ejVIo\") + (parcelRequire(\"n9Yfb\")).resolve(\"iM1SU\");\n\n\nvar $504b148d08d37416$var$Module = (()=>{\n var _scriptDir = \"file:///node_modules/emglken/build/scare-core.js\";\n return function(Module = {}) {\n var Module = typeof Module != \"undefined\" ? Module : {};\n var readyPromiseResolve, readyPromiseReject;\n Module[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow)=>{\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary, setWindowTitle;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) scriptDirectory = self.location.href;\n else if (typeof document != \"undefined\" && document.currentScript) scriptDirectory = document.currentScript.src;\n if (_scriptDir) scriptDirectory = _scriptDir;\n if (scriptDirectory.indexOf(\"blob:\") !== 0) scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n else scriptDirectory = \"\";\n read_ = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) readBinary = (url)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n readAsync = (url, onload, onerror)=>{\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = ()=>{\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n setWindowTitle = (title)=>document.title = title;\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n var wasmBinary;\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n var noExitRuntime = Module[\"noExitRuntime\"] || false;\n if (typeof WebAssembly != \"object\") abort(\"no native wasm support detected\");\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) abort(text);\n }\n var UTF8Decoder = new TextDecoder(\"utf8\");\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while(heapOrArray[endPtr] && !(endPtr >= endIdx))++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for(var end = ptr; !(end >= maxPtr) && HEAPU8[end];)++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n }\n function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for(var i = 0; i < str.length; ++i){\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n function lengthBytesUTF8(str) {\n var len = 0;\n for(var i = 0; i < str.length; ++i){\n var c = str.charCodeAt(i);\n if (c <= 127) len++;\n else if (c <= 2047) len += 2;\n else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else len += 3;\n }\n return len;\n }\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var wasmTable;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATEXIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n var runtimeKeepaliveCounter = 0;\n function keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n }\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [\n Module[\"preRun\"]\n ];\n while(Module[\"preRun\"].length)addOnPreRun(Module[\"preRun\"].shift());\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n }\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n function exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [\n Module[\"postRun\"]\n ];\n while(Module[\"postRun\"].length)addOnPostRun(Module[\"postRun\"].shift());\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n if (Module[\"onAbort\"]) Module[\"onAbort\"](what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n if (Module[\"locateFile\"]) {\n wasmBinaryFile = \"scare-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) wasmBinaryFile = locateFile(wasmBinaryFile);\n } else wasmBinaryFile = new URL($9057ad164b194cd9$exports).href;\n function getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary);\n if (readBinary) return readBinary(file);\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n }\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n else return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n function createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"E\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"N\"];\n addOnInit(Module[\"asm\"][\"F\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n }\n var tempDouble;\n var tempI64;\n function __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async ()=>{\n if (!Module.emglken_stdin_buffers.length) await new Promise((resolve)=>{\n Module.emglken_stdin_ready = resolve;\n });\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) HEAPU8.set(input, buffer);\n else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n }\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n }\n function callRuntimeCallbacks(callbacks) {\n while(callbacks.length > 0)callbacks.shift()(Module);\n }\n var PATH = {\n isAbs: (path)=>path.charAt(0) === \"/\",\n splitPath: (filename)=>{\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot)=>{\n var up = 0;\n for(var i = parts.length - 1; i >= 0; i--){\n var last = parts[i];\n if (last === \".\") parts.splice(i, 1);\n else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) for(; up; up--)parts.unshift(\"..\");\n return parts;\n },\n normalize: (path)=>{\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p)=>!!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) path = \".\";\n if (path && trailingSlash) path += \"/\";\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: (path)=>{\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) return \".\";\n if (dir) dir = dir.substr(0, dir.length - 1);\n return root + dir;\n },\n basename: (path)=>{\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r)=>{\n return PATH.normalize(l + \"/\" + r);\n }\n };\n function getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return ()=>{\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return ()=>abort(\"randomDevice\");\n }\n var PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for(var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--){\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") throw new TypeError(\"Arguments to path.resolve must be strings\");\n else if (!path) return \"\";\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p)=>!!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to)=>{\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for(; start < arr.length; start++){\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for(; end >= 0; end--){\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for(var i = 0; i < length; i++)if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n var outputParts = [];\n for(var i = samePartsLength; i < fromParts.length; i++)outputParts.push(\"..\");\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n var TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) throw new FS.ErrnoError(43);\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) throw new FS.ErrnoError(60);\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) throw new FS.ErrnoError(60);\n try {\n for(var i = 0; i < length; i++)stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) result += \"\\n\";\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) result += \"\\n\";\n }\n if (!result) return null;\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n };\n function mmapAlloc(size) {\n abort();\n }\n var MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16895, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) throw new FS.ErrnoError(63);\n if (!MEMFS.ops_table) MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1048576;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) attr.size = 4096;\n else if (FS.isFile(node.mode)) attr.size = node.usedBytes;\n else if (FS.isLink(node.mode)) attr.size = node.link.length;\n else attr.size = 0;\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) node.mode = attr.mode;\n if (attr.timestamp !== undefined) node.timestamp = attr.timestamp;\n if (attr.size !== undefined) MEMFS.resizeFileStorage(node, attr.size);\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for(var i in new_node.contents)throw new FS.ErrnoError(55);\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for(var i in node.contents)throw new FS.ErrnoError(55);\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [\n \".\",\n \"..\"\n ];\n for(var key in node.contents){\n if (!node.contents.hasOwnProperty(key)) continue;\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 41471, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) throw new FS.ErrnoError(28);\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) buffer.set(contents.subarray(position, position + size), offset);\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) canOwn = false;\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);\n else for(var i = 0; i < length; i++)node.contents[position + i] = buffer[offset + i];\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) position += stream.position;\n else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) position += stream.node.usedBytes;\n }\n if (position < 0) throw new FS.ErrnoError(28);\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) contents = contents.subarray(position, position + length);\n else contents = Array.prototype.slice.call(contents, position, position + length);\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n };\n function asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, (arrayBuffer)=>{\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, (event)=>{\n if (onerror) onerror();\n else throw 'Loading data file \"' + url + '\" failed.';\n });\n if (dep) addRunDependency(dep);\n }\n var FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {})=>{\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) throw new FS.ErrnoError(32);\n var parts = path.split(\"/\").filter((p)=>!!p);\n var current = FS.root;\n var current_path = \"/\";\n for(var i = 0; i < parts.length; i++){\n var islast = i === parts.length - 1;\n if (islast && opts.parent) break;\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) current = current.mounted.root;\n }\n if (!islast || opts.follow) {\n var count = 0;\n while(FS.isLink(current.mode)){\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) throw new FS.ErrnoError(32);\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: (node)=>{\n var path;\n while(true){\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name)=>{\n var hash = 0;\n for(var i = 0; i < name.length; i++)hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: (node)=>{\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) FS.nameTable[hash] = node.name_next;\n else {\n var current = FS.nameTable[hash];\n while(current){\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name)=>{\n var errCode = FS.mayLookup(parent);\n if (errCode) throw new FS.ErrnoError(errCode, parent);\n var hash = FS.hashName(parent.id, name);\n for(var node = FS.nameTable[hash]; node; node = node.name_next){\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) return node;\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev)=>{\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: (node)=>{\n FS.hashRemoveNode(node);\n },\n isRoot: (node)=>{\n return node === node.parent;\n },\n isMountpoint: (node)=>{\n return !!node.mounted;\n },\n isFile: (mode)=>{\n return (mode & 61440) === 32768;\n },\n isDir: (mode)=>{\n return (mode & 61440) === 16384;\n },\n isLink: (mode)=>{\n return (mode & 61440) === 40960;\n },\n isChrdev: (mode)=>{\n return (mode & 61440) === 8192;\n },\n isBlkdev: (mode)=>{\n return (mode & 61440) === 24576;\n },\n isFIFO: (mode)=>{\n return (mode & 61440) === 4096;\n },\n isSocket: (mode)=>{\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: (str)=>{\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") throw new Error(\"Unknown file open mode: \" + str);\n return flags;\n },\n flagsToPermissionString: (flag)=>{\n var perms = [\n \"r\",\n \"w\",\n \"rw\"\n ][flag & 3];\n if (flag & 512) perms += \"w\";\n return perms;\n },\n nodePermissions: (node, perms)=>{\n if (FS.ignorePermissions) return 0;\n if (perms.includes(\"r\") && !(node.mode & 292)) return 2;\n else if (perms.includes(\"w\") && !(node.mode & 146)) return 2;\n else if (perms.includes(\"x\") && !(node.mode & 73)) return 2;\n return 0;\n },\n mayLookup: (dir)=>{\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name)=>{\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir)=>{\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) return errCode;\n if (isdir) {\n if (!FS.isDir(node.mode)) return 54;\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) return 10;\n } else {\n if (FS.isDir(node.mode)) return 31;\n }\n return 0;\n },\n mayOpen: (node, flags)=>{\n if (!node) return 44;\n if (FS.isLink(node.mode)) return 32;\n else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) return 31;\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS)=>{\n for(var fd = fd_start; fd <= fd_end; fd++){\n if (!FS.streams[fd]) return fd;\n }\n throw new FS.ErrnoError(33);\n },\n getStream: (fd)=>FS.streams[fd],\n createStream: (stream, fd_start, fd_end)=>{\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: (fd)=>{\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: (stream)=>{\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n },\n llseek: ()=>{\n throw new FS.ErrnoError(70);\n }\n },\n major: (dev)=>dev >> 8,\n minor: (dev)=>dev & 255,\n makedev: (ma, mi)=>ma << 8 | mi,\n registerDevice: (dev, ops)=>{\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: (dev)=>FS.devices[dev],\n getMounts: (mount)=>{\n var mounts = [];\n var check = [\n mount\n ];\n while(check.length){\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback)=>{\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) doCallback(null);\n }\n mounts.forEach((mount)=>{\n if (!mount.type.syncfs) return done(null);\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint)=>{\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) throw new FS.ErrnoError(10);\n else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n if (!FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) FS.root = mountRoot;\n else if (node) {\n node.mounted = mount;\n if (node.mount) node.mount.mounts.push(mount);\n }\n return mountRoot;\n },\n unmount: (mountpoint)=>{\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) throw new FS.ErrnoError(28);\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash)=>{\n var current = FS.nameTable[hash];\n while(current){\n var next = current.name_next;\n if (mounts.includes(current.mount)) FS.destroyNode(current);\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name)=>{\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") throw new FS.ErrnoError(28);\n var errCode = FS.mayCreate(parent, name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.mknod) throw new FS.ErrnoError(63);\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode)=>{\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode)=>{\n mode = mode !== undefined ? mode : 511;\n mode &= 1023;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode)=>{\n var dirs = path.split(\"/\");\n var d = \"\";\n for(var i = 0; i < dirs.length; ++i){\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev)=>{\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath)=>{\n if (!PATH_FS.resolve(oldpath)) throw new FS.ErrnoError(44);\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.symlink) throw new FS.ErrnoError(63);\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path)=>{\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) throw new FS.ErrnoError(75);\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(28);\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(55);\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) return;\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) throw new FS.ErrnoError(errCode);\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!old_dir.node_ops.rename) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) throw new FS.ErrnoError(10);\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally{\n FS.hashAddNode(old_node);\n }\n },\n rmdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.rmdir) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) throw new FS.ErrnoError(54);\n return node.node_ops.readdir(node);\n },\n unlink: (path)=>{\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) throw new FS.ErrnoError(44);\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.unlink) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: (path)=>{\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) throw new FS.ErrnoError(44);\n if (!link.node_ops.readlink) throw new FS.ErrnoError(28);\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow)=>{\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) throw new FS.ErrnoError(44);\n if (!node.node_ops.getattr) throw new FS.ErrnoError(63);\n return node.node_ops.getattr(node);\n },\n lstat: (path)=>{\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & -4096,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode)=>{\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow)=>{\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid)=>{\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len)=>{\n if (len < 0) throw new FS.ErrnoError(28);\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n if (FS.isDir(node.mode)) throw new FS.ErrnoError(31);\n if (!FS.isFile(node.mode)) throw new FS.ErrnoError(28);\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len)=>{\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(28);\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode)=>{\n if (path === \"\") throw new FS.ErrnoError(44);\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) mode = mode & 4095 | 32768;\n else mode = 0;\n var node;\n if (typeof path == \"object\") node = path;\n else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) throw new FS.ErrnoError(20);\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) throw new FS.ErrnoError(44);\n if (FS.isChrdev(node.mode)) flags &= -513;\n if (flags & 65536 && !FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n if (flags & 512 && !created) FS.truncate(node, 0);\n flags &= -131713;\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) FS.readFiles[path] = 1;\n }\n return stream;\n },\n close: (stream)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) stream.stream_ops.close(stream);\n } catch (e) {\n throw e;\n } finally{\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: (stream)=>{\n return stream.fd === null;\n },\n llseek: (stream, offset, whence)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (!stream.seekable || !stream.stream_ops.llseek) throw new FS.ErrnoError(70);\n if (whence != 0 && whence != 1 && whence != 2) throw new FS.ErrnoError(28);\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.read) throw new FS.ErrnoError(28);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn)=>{\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.write) throw new FS.ErrnoError(28);\n if (stream.seekable && stream.flags & 1024) FS.llseek(stream, 0, 2);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length)=>{\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (offset < 0 || length <= 0) throw new FS.ErrnoError(28);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) throw new FS.ErrnoError(43);\n if (!stream.stream_ops.allocate) throw new FS.ErrnoError(138);\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags)=>{\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) throw new FS.ErrnoError(2);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(2);\n if (!stream.stream_ops.mmap) throw new FS.ErrnoError(43);\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags)=>{\n if (!stream.stream_ops.msync) return 0;\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: (stream)=>0,\n ioctl: (stream, cmd, arg)=>{\n if (!stream.stream_ops.ioctl) throw new FS.ErrnoError(59);\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {})=>{\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") ret = UTF8ArrayToString(buf, 0);\n else if (opts.encoding === \"binary\") ret = buf;\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {})=>{\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n else throw new Error(\"Unsupported data type\");\n FS.close(stream);\n },\n cwd: ()=>FS.currentPath,\n chdir: (path)=>{\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) throw new FS.ErrnoError(44);\n if (!FS.isDir(lookup.node.mode)) throw new FS.ErrnoError(54);\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) throw new FS.ErrnoError(errCode);\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: ()=>{\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: ()=>{\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: ()=>0,\n write: (stream, buffer, offset, length, pos)=>length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: ()=>{\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: ()=>{\n var node = FS.createNode(proc_self, \"fd\", 16895, 73);\n node.node_ops = {\n lookup: (parent, name)=>{\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: ()=>stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: ()=>{\n if (Module[\"stdin\"]) FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n if (Module[\"stdout\"]) FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n else FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n if (Module[\"stderr\"]) FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n else FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: ()=>{\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [\n 44\n ].forEach((code)=>{\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: ()=>{\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error)=>{\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: ()=>{\n FS.init.initialized = false;\n _fflush(0);\n for(var i = 0; i < FS.streams.length; i++){\n var stream = FS.streams[i];\n if (!stream) continue;\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite)=>{\n var mode = 0;\n if (canRead) mode |= 365;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink)=>{\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) return null;\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink)=>{\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite)=>{\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while(parts.length){\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn)=>{\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for(var i = 0, len = data.length; i < len; ++i)arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output)=>{\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: (stream)=>{\n stream.seekable = false;\n },\n close: (stream)=>{\n if (output && output.buffer && output.buffer.length) output(10);\n },\n read: (stream, buffer, offset, length, pos)=>{\n var bytesRead = 0;\n for(var i = 0; i < length; i++){\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos)=>{\n for(var i = 0; i < length; i++)try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: (obj)=>{\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n else if (read_) try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n else throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n },\n createLazyFile: (parent, name, url, canRead, canWrite)=>{\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) return undefined;\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1048576;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to)=>{\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) return new Uint8Array(xhr.response || []);\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter((chunkNum)=>{\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") lazyArray.chunks[chunkNum] = doXHR(start, end);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) this.cacheLength();\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else var properties = {\n isDevice: false,\n url: url\n };\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) node.contents = properties.contents;\n else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach((key)=>{\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) for(var i = 0; i < size; i++)buffer[offset + i] = contents[position + i];\n else for(var i = 0; i < size; i++)buffer[offset + i] = contents.get(position + i);\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position)=>{\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags)=>{\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish)=>{\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, ()=>{\n if (onerror) onerror();\n removeRunDependency(dep);\n })) return;\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") asyncLoad(url, (byteArray)=>processData(byteArray), onerror);\n else processData(url);\n },\n indexedDB: ()=>{\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: ()=>{\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = ()=>{\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = ()=>{\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = ()=>{}, onerror = ()=>{})=>{\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = ()=>{\n var db = openRequest.result;\n try {\n var transaction = db.transaction([\n FS.DB_STORE_NAME\n ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload();\n else onerror();\n }\n paths.forEach((path)=>{\n var getRequest = files.get(path);\n getRequest.onsuccess = ()=>{\n if (FS.analyzePath(path).exists) FS.unlink(path);\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = ()=>{\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n };\n var SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) return path;\n var dir;\n if (dirfd === -100) dir = FS.cwd();\n else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) throw new FS.ErrnoError(44);\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) return -54;\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [\n stat.size >>> 0,\n (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [\n Math.floor(atime / 1e3) >>> 0,\n (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(mtime / 1e3) >>> 0,\n (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [\n Math.floor(ctime / 1e3) >>> 0,\n (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [\n stat.ino >>> 0,\n (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n if (flags & 2) return 0;\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n };\n function ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & -8) return -28;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) return -44;\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) return -2;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n }\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(cmd){\n case 0:\n var arg = SYSCALLS.get();\n if (arg < 0) return -28;\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4:\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n case 5:\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch(op){\n case 21509:\n case 21505:\n if (!stream.tty) return -59;\n return 0;\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n if (!stream.tty) return -59;\n return 0;\n case 21519:\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n case 21520:\n if (!stream.tty) return -59;\n return -28;\n case 21531:\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n case 21523:\n if (!stream.tty) return -59;\n return 0;\n case 21524:\n if (!stream.tty) return -59;\n return 0;\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var nowIsMonotonic = true;\n function __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n }\n function __emscripten_throw_longjmp() {\n throw Infinity;\n }\n function _abort() {\n abort(\"\");\n }\n function _emscripten_date_now() {\n return Date.now();\n }\n var _emscripten_get_now;\n _emscripten_get_now = ()=>performance.now();\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n }\n function getHeapMax() {\n return 2147483648;\n }\n function emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) return false;\n let alignUp = (x, multiple)=>x + (multiple - x % multiple) % multiple;\n for(var cutDown = 1; cutDown <= 4; cutDown *= 2){\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) return true;\n }\n return false;\n }\n var ENV = {};\n function getExecutableName() {\n return thisProgram || \"./this.program\";\n }\n function getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": lang,\n \"_\": getExecutableName()\n };\n for(var x in ENV)if (ENV[x] === undefined) delete env[x];\n else env[x] = ENV[x];\n var strings = [];\n for(var x in env)strings.push(x + \"=\" + env[x]);\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n }\n function writeAsciiToMemory(str, buffer, dontAddNull) {\n for(var i = 0; i < str.length; ++i)HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n }\n function _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function(string, i) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n }\n function _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function(string) {\n bufSize += string.length + 1;\n });\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n }\n function _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n }\n function exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) exitRuntime();\n _proc_exit(status);\n }\n var _exit = exitJS;\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n }\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [\n stream.position >>> 0,\n (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for(var i = 0; i < iovcnt; i++){\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") offset += curr;\n }\n return ret;\n }\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") return EXITSTATUS;\n quit_(1, e);\n }\n function allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n }\n function runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n }\n function maybeExit() {\n if (!keepRuntimeAlive()) try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n function callUserCallback(func) {\n if (runtimeExited || ABORT) return;\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n }\n function runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n }\n function runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n }\n var Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [\n \"invoke_*\",\n \"emscripten_sleep\",\n \"emscripten_wget\",\n \"emscripten_wget_data\",\n \"emscripten_idb_load\",\n \"emscripten_idb_store\",\n \"emscripten_idb_delete\",\n \"emscripten_idb_exists\",\n \"emscripten_idb_load_blob\",\n \"emscripten_idb_store_blob\",\n \"SDL_Delay\",\n \"emscripten_scan_registers\",\n \"emscripten_lazy_load_code\",\n \"emscripten_fiber_swap\",\n \"__load_secondary_module\",\n \"fd_sync\",\n \"__wasi_fd_sync\",\n \"_emval_await\",\n \"_dlopen_js\",\n \"__asyncjs__*\"\n ];\n for(var x in imports)(function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n })(x);\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for(var x in exports)(function(x) {\n var original = exports[x];\n if (typeof original == \"function\") ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally{\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n else ret[x] = original;\n })(x);\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") Fibers.trampoline();\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject)=>{\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0)=>{\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) return;\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.resume();\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) throw asyncWasmReturnValue;\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) Browser.mainLoop.pause();\n runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach((func)=>callUserCallback(func));\n } else abort(\"invalid state: \" + Asyncify.state);\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep((wakeUp)=>{\n startAsync().then(wakeUp);\n });\n }\n };\n function AsciiToString(ptr) {\n var str = \"\";\n while(true){\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n }\n var FSNode = function(parent, name, mode, rdev) {\n if (!parent) parent = this;\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n var readMode = 365;\n var writeMode = 146;\n Object.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n });\n FS.FSNode = FSNode;\n FS.staticInit();\n var wasmImports = {\n \"s\": __asyncjs__emglken_fill_stdin_buffer,\n \"D\": ___syscall_faccessat,\n \"n\": ___syscall_fcntl64,\n \"C\": ___syscall_getcwd,\n \"B\": ___syscall_ioctl,\n \"A\": ___syscall_openat,\n \"z\": ___syscall_stat64,\n \"v\": __emscripten_get_now_is_monotonic,\n \"u\": __emscripten_throw_longjmp,\n \"t\": _abort,\n \"k\": _emscripten_date_now,\n \"r\": _emscripten_memcpy_big,\n \"q\": _emscripten_resize_heap,\n \"y\": _environ_get,\n \"x\": _environ_sizes_get,\n \"i\": _exit,\n \"m\": _fd_close,\n \"w\": _fd_read,\n \"p\": _fd_seek,\n \"l\": _fd_write,\n \"c\": invoke_i,\n \"g\": invoke_ii,\n \"f\": invoke_iiii,\n \"d\": invoke_iiiii,\n \"o\": invoke_ji,\n \"j\": invoke_v,\n \"b\": invoke_vi,\n \"a\": invoke_vii,\n \"h\": invoke_viii,\n \"e\": invoke_viiii\n };\n var asm = createWasm();\n var ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"F\"]).apply(null, arguments);\n };\n var _free = function() {\n return (_free = Module[\"asm\"][\"G\"]).apply(null, arguments);\n };\n var _malloc = function() {\n return (_malloc = Module[\"asm\"][\"H\"]).apply(null, arguments);\n };\n var _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"I\"]).apply(null, arguments);\n };\n var _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"J\"]).apply(null, arguments);\n };\n var _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"K\"]).apply(null, arguments);\n };\n var ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"L\"]).apply(null, arguments);\n };\n var ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"M\"]).apply(null, arguments);\n };\n var _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"O\"]).apply(null, arguments);\n };\n var _saveSetjmp = function() {\n return (_saveSetjmp = Module[\"asm\"][\"saveSetjmp\"]).apply(null, arguments);\n };\n var _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n };\n var _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n };\n var stackSave = function() {\n return (stackSave = Module[\"asm\"][\"P\"]).apply(null, arguments);\n };\n var stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"Q\"]).apply(null, arguments);\n };\n var stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"R\"]).apply(null, arguments);\n };\n var dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"S\"]).apply(null, arguments);\n };\n var dynCall_iiii = Module[\"dynCall_iiii\"] = function() {\n return (dynCall_iiii = Module[\"dynCall_iiii\"] = Module[\"asm\"][\"T\"]).apply(null, arguments);\n };\n var dynCall_ii = Module[\"dynCall_ii\"] = function() {\n return (dynCall_ii = Module[\"dynCall_ii\"] = Module[\"asm\"][\"U\"]).apply(null, arguments);\n };\n var dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"V\"]).apply(null, arguments);\n };\n var dynCall_i = Module[\"dynCall_i\"] = function() {\n return (dynCall_i = Module[\"dynCall_i\"] = Module[\"asm\"][\"W\"]).apply(null, arguments);\n };\n var dynCall_v = Module[\"dynCall_v\"] = function() {\n return (dynCall_v = Module[\"dynCall_v\"] = Module[\"asm\"][\"X\"]).apply(null, arguments);\n };\n var dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() {\n return (dynCall_iiiii = Module[\"dynCall_iiiii\"] = Module[\"asm\"][\"Y\"]).apply(null, arguments);\n };\n var dynCall_viii = Module[\"dynCall_viii\"] = function() {\n return (dynCall_viii = Module[\"dynCall_viii\"] = Module[\"asm\"][\"Z\"]).apply(null, arguments);\n };\n var dynCall_viiii = Module[\"dynCall_viiii\"] = function() {\n return (dynCall_viiii = Module[\"dynCall_viiii\"] = Module[\"asm\"][\"_\"]).apply(null, arguments);\n };\n var dynCall_ji = Module[\"dynCall_ji\"] = function() {\n return (dynCall_ji = Module[\"dynCall_ji\"] = Module[\"asm\"][\"$\"]).apply(null, arguments);\n };\n var _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"aa\"]).apply(null, arguments);\n };\n var _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"ba\"]).apply(null, arguments);\n };\n var _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"ca\"]).apply(null, arguments);\n };\n var _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"da\"]).apply(null, arguments);\n };\n var ___start_em_js = Module[\"___start_em_js\"] = 107504;\n var ___stop_em_js = Module[\"___stop_em_js\"] = 110189;\n function invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n function invoke_ji(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ji(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n }\n Module[\"AsciiToString\"] = AsciiToString;\n Module[\"FS\"] = FS;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach((arg)=>{\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n }\n function run(args = arguments_) {\n if (runDependencies > 0) return;\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else doRun();\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [\n Module[\"preInit\"]\n ];\n while(Module[\"preInit\"].length > 0)Module[\"preInit\"].pop()();\n }\n var shouldRunNow = true;\n if (Module[\"noInitialRun\"]) shouldRunNow = false;\n run();\n return Module.ready;\n };\n})();\nvar $504b148d08d37416$export$2e2bcd8739ae039 = $504b148d08d37416$var$Module;\n\n\nclass $707ef77e10663475$export$2e2bcd8739ae039 extends (0, $7c4ebf67e8338ec8$export$2e2bcd8739ae039) {\n default_options() {\n return {\n vmcore: (0, $504b148d08d37416$export$2e2bcd8739ae039)\n };\n }\n}\n\n\nconst $11084da5888c7d7e$var$formats = [\n {\n id: \"bocfel\",\n extensions: /z([3458]|blorb)$/,\n engine: (0, $cc564b5c889ac118$export$2e2bcd8739ae039)\n },\n {\n id: \"git\",\n extensions: /(gblorb|ulx)$/,\n engine: (0, $724db3da43d21d57$export$2e2bcd8739ae039)\n },\n {\n id: \"hugo\",\n extensions: /hex$/,\n engine: (0, $93f872a37763fb75$export$2e2bcd8739ae039)\n },\n {\n id: \"scare\",\n extensions: /taf$/,\n engine: (0, $707ef77e10663475$export$2e2bcd8739ae039)\n },\n {\n id: \"tads\",\n extensions: /(gam|t3)$/,\n engine: (0, $fe7c55ec16cd7a3a$export$2e2bcd8739ae039)\n }\n];\nconst $11084da5888c7d7e$export$1784a1ff765207b7 = (filename)=>{\n const format = $11084da5888c7d7e$var$formats.find((x)=>x.extensions.test(filename));\n if (format) return {\n ...format,\n /* @see staticFiles in package.json */ wasmBinaryName: `emglken/${format.id}-core.wasm`\n };\n throw new Error(\"Unsupported file type\");\n};\n\n\n\n\n/**\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/glkote-dumb.js\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/electrofs.js\n */ class $5e25d1360d04c823$var$FakeDialog {\n constructor(handlers, loggers){\n this.streaming = false;\n this.handlers = handlers;\n this.loggers = loggers;\n }\n file_ref_exists({ usage: usage }) {\n return usage === \"save\" ? true : false;\n }\n file_remove_ref() {\n return true;\n }\n file_construct_ref(filename, usage) {\n return {\n filename: filename,\n usage: usage || \"\"\n };\n }\n file_read(dirent, israw) {\n return this.handlers.onFileRead(dirent, israw);\n }\n file_write(dirent, content, israw) {\n if (content.length === 0) return void 0;\n this.handlers.onFileWrite(dirent, content, israw);\n }\n open(tosave, usage, gameid, callback) {\n this.handlers.onFileNameRequest(tosave, usage, gameid, callback);\n }\n log(message) {\n this.loggers.log(message);\n }\n warning(message) {\n this.loggers.warn(message);\n }\n error(message) {\n this.loggers.error(message);\n }\n}\nvar $5e25d1360d04c823$export$2e2bcd8739ae039 = $5e25d1360d04c823$var$FakeDialog;\n\n\n/**\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/glkote-dumb.js\n */ /**\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/glkote-term.js\n */ class $640511b266482529$var$GlkOte {\n constructor({ width: width, height: height }){\n this.width = width;\n this.height = height;\n this.current_metrics = null;\n this.disabled = false;\n this.generation = 0;\n this.interface = null;\n this.version = \"0.5.1\";\n }\n measure_window() {\n return {\n width: this.width,\n height: this.height,\n buffercharheight: 1,\n buffercharwidth: 1,\n buffermarginx: 0,\n buffermarginy: 0,\n graphicsmarginx: 0,\n graphicsmarginy: 0,\n gridcharheight: 1,\n gridcharwidth: 1,\n gridmarginx: 0,\n gridmarginy: 0,\n inspacingx: 0,\n inspacingy: 0,\n outspacingx: 0,\n outspacingy: 0\n };\n }\n getinterface() {\n return this.interface;\n }\n init(iface) {\n if (!iface) this.error(\"No game interface object has been provided.\");\n if (!iface.accept) this.error(\"The game interface object must have an accept() function.\");\n this.interface = iface;\n this.current_metrics = this.measure_window();\n this.send_response(\"init\", null, this.current_metrics);\n }\n update(data) {\n if (data.type === \"error\") this.error(data.message);\n if (data.type === \"pass\") return;\n if (data.type !== \"update\" && data.type !== \"exit\") {\n this.log(`Ignoring unknown message type: ${data.type}`);\n return;\n }\n if (data.gen === this.generation) {\n this.log(`Ignoring repeated generation number: ${data.gen}`);\n return;\n }\n if (data.gen < this.generation) {\n this.log(`Ignoring out-of-order generation number: got ${data.gen}, currently at ${this.generation}`);\n return;\n }\n this.generation = data.gen;\n if (this.disabled) this.disable(false);\n /* Handle the update */ if (data.input != null) this.cancel_inputs(data.input);\n if (data.windows != null) this.update_windows(data.windows);\n if (data.content != null && data.content.length) this.update_content(data.content);\n if (data.input != null) this.update_inputs(data.input);\n /* Disable everything if requested */ this.disabled = false;\n if (data.disabled || data.specialinput) this.disable(true);\n if (data.specialinput != null) this.accept_specialinput(data.specialinput);\n /* Detach all handlers and exit */ if (data.type === \"exit\") this.exit();\n }\n send_response(type, win, val, val2) {\n const res = {\n type: type,\n gen: this.generation\n };\n if (win) res.window = win.id;\n if (type === \"init\" || type === \"arrange\") res.metrics = val;\n if (type === \"init\") res.support = this.support();\n if (type === \"char\") res.value = val;\n if (type === \"line\") res.value = val;\n if (type === \"specialresponse\") {\n res.response = val;\n res.value = val2;\n }\n this.interface.accept(res);\n }\n support() {\n return [];\n }\n}\nvar $640511b266482529$export$2e2bcd8739ae039 = $640511b266482529$var$GlkOte;\n\n\nclass $25e930408cddd3f8$var$CheapGlkOte extends (0, $640511b266482529$export$2e2bcd8739ae039) {\n constructor(handlers, loggers, size){\n super(size);\n this.handlers = handlers;\n this.loggers = loggers;\n }\n sendFn(message, type, window) {\n this.send_response(type, window, message);\n }\n init(iface) {\n this.handlers.onInit();\n super.init(iface);\n }\n update_inputs(data) {\n if (!data.length) return [];\n this.handlers.onUpdateInputs(data);\n }\n accept_specialinput(data) {\n if (data.type === \"fileref_prompt\") {\n const callback = (ref)=>this.send_response(\"specialresponse\", null, \"fileref_prompt\", ref);\n this.interface.Dialog.open(data.filemode !== \"read\", data.filetype, data.gameid, callback);\n } else this.error(\"Request for unknown special input type: \" + data.type);\n }\n update_content(messages) {\n this.handlers.onUpdateContent(messages);\n }\n exit() {\n this.handlers.onExit();\n super.exit();\n }\n cancel_inputs(data) {\n this.handlers.onUpdateInputs(data);\n }\n disable(data) {\n this.handlers.onDisable(data);\n }\n update_windows(windows) {\n this.handlers.onUpdateWindows(windows);\n }\n log(message) {\n this.loggers.log(message);\n }\n warning(message) {\n this.loggers.warn(message);\n }\n error(message) {\n this.loggers.error(message);\n }\n}\nvar $25e930408cddd3f8$export$2e2bcd8739ae039 = $25e930408cddd3f8$var$CheapGlkOte;\n\n\nconst $db6ac6276ae4f3e4$var$noop = ()=>void 0;\nconst $db6ac6276ae4f3e4$var$defaultHandlers = [\n \"onInit\",\n \"onUpdateWindows\",\n \"onUpdateInputs\",\n \"onUpdateContent\",\n \"onDisable\",\n \"onFileNameRequest\",\n \"onFileRead\",\n \"onFileWrite\",\n \"onExit\"\n].reduce((acc, x)=>(acc[x] = $db6ac6276ae4f3e4$var$noop, acc), {});\nconst $db6ac6276ae4f3e4$var$defaultLoggers = {\n log: console.log,\n warning: console.warn,\n error: console.error\n};\nconst $db6ac6276ae4f3e4$var$defaultSize = {\n width: 80,\n height: 25\n};\nvar $db6ac6276ae4f3e4$export$2e2bcd8739ae039 = (handlers_, { loggers: loggers_, size: size_ } = {})=>{\n const handlers = Object.assign({}, $db6ac6276ae4f3e4$var$defaultHandlers, handlers_);\n const loggers = Object.assign({}, $db6ac6276ae4f3e4$var$defaultLoggers, loggers_);\n const size = Object.assign({}, $db6ac6276ae4f3e4$var$defaultSize, size_);\n const Dialog = new (0, $5e25d1360d04c823$export$2e2bcd8739ae039)(handlers, loggers);\n const GlkOte = new (0, $25e930408cddd3f8$export$2e2bcd8739ae039)(handlers, loggers, size);\n const send = GlkOte.sendFn.bind(GlkOte);\n return {\n Dialog: Dialog,\n GlkOte: GlkOte,\n send: send\n };\n};\n\n\n\n\n\nvar $7742cff3645aa0b6$exports = {};\n\n$parcel$export($7742cff3645aa0b6$exports, \"emphasized\", function () { return $7742cff3645aa0b6$export$1ee2ee71de083e4d; }, function (v) { return $7742cff3645aa0b6$export$1ee2ee71de083e4d = v; });\n$parcel$export($7742cff3645aa0b6$exports, \"input\", function () { return $7742cff3645aa0b6$export$b7e3ae3d7c15e42e; }, function (v) { return $7742cff3645aa0b6$export$b7e3ae3d7c15e42e = v; });\n$parcel$export($7742cff3645aa0b6$exports, \"message\", function () { return $7742cff3645aa0b6$export$a8ecead220dd38a6; }, function (v) { return $7742cff3645aa0b6$export$a8ecead220dd38a6 = v; });\n$parcel$export($7742cff3645aa0b6$exports, \"scrollTarget\", function () { return $7742cff3645aa0b6$export$64cbebf88d5f7b08; }, function (v) { return $7742cff3645aa0b6$export$64cbebf88d5f7b08 = v; });\n$parcel$export($7742cff3645aa0b6$exports, \"subheader\", function () { return $7742cff3645aa0b6$export$d61e5f8e032e1547; }, function (v) { return $7742cff3645aa0b6$export$d61e5f8e032e1547 = v; });\nvar $7742cff3645aa0b6$export$1ee2ee71de083e4d;\nvar $7742cff3645aa0b6$export$b7e3ae3d7c15e42e;\nvar $7742cff3645aa0b6$export$a8ecead220dd38a6;\nvar $7742cff3645aa0b6$export$64cbebf88d5f7b08;\nvar $7742cff3645aa0b6$export$d61e5f8e032e1547;\n$7742cff3645aa0b6$export$1ee2ee71de083e4d = `hBGgUq_emphasized`;\n$7742cff3645aa0b6$export$b7e3ae3d7c15e42e = `hBGgUq_input`;\n$7742cff3645aa0b6$export$a8ecead220dd38a6 = `hBGgUq_message`;\n$7742cff3645aa0b6$export$64cbebf88d5f7b08 = `hBGgUq_scrollTarget`;\n$7742cff3645aa0b6$export$d61e5f8e032e1547 = `hBGgUq_subheader`;\n\n\nfunction $0f82f0e8d6bc47f2$export$2e2bcd8739ae039({ style: style, text: text }) {\n const defaultContent = /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"span\", {\n className: [\n $7742cff3645aa0b6$exports.message,\n $7742cff3645aa0b6$exports[style]\n ].join(\" \"),\n children: text\n });\n return ({\n grid: text?.length > 0 ? /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n children: text\n }) : /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"br\", {}),\n input: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"span\", {\n className: [\n $7742cff3645aa0b6$exports.message,\n $7742cff3645aa0b6$exports.input\n ].join(\" \"),\n children: [\n \"> \",\n text\n ]\n }),\n subheader: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"strong\", {\n className: [\n $7742cff3645aa0b6$exports.message,\n $7742cff3645aa0b6$exports.subheader\n ].join(\" \"),\n children: text\n }),\n emphasized: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"em\", {\n className: [\n $7742cff3645aa0b6$exports.message,\n $7742cff3645aa0b6$exports.emphasized\n ].join(\" \"),\n children: text\n }),\n scrollTarget: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $7742cff3645aa0b6$exports.scrollTarget,\n style\n ].join(\" \")\n }),\n endOfLine: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"br\", {})\n })[style] || defaultContent;\n}\n\n\nvar $7264401512871bae$export$ab1029bcae9ddb4a;\nvar $7264401512871bae$export$d7f0ba9e5e132b36;\nvar $7264401512871bae$export$347a3a46df242257;\nvar $7264401512871bae$export$c789db2c85949867;\nvar $7264401512871bae$export$6181eef8f2dfdf3c;\n$7264401512871bae$export$ab1029bcae9ddb4a = `PwGQsW_buffer`;\n$7264401512871bae$export$d7f0ba9e5e132b36 = `PwGQsW_elseifplayer`;\n$7264401512871bae$export$347a3a46df242257 = `PwGQsW_gridBuffer`;\n$7264401512871bae$export$c789db2c85949867 = `PwGQsW_output`;\n$7264401512871bae$export$6181eef8f2dfdf3c = `PwGQsW_textBuffer`;\n\n\nconst $c5dda773199830f0$var$eol = {\n style: \"endOfLine\"\n};\nconst $c5dda773199830f0$var$scrollTarget = {\n style: \"scrollTarget\"\n};\nconst $c5dda773199830f0$var$isFakeStatus = (w)=>w.height < 5;\nconst $c5dda773199830f0$var$trimInputPrompt = (messages)=>messages.length < 1 ? messages : messages.slice(-1)[0].text === \">\" ? messages.slice(0, messages.length - 1) : messages;\nconst $c5dda773199830f0$var$parseInbox = (inbox, currentWindow)=>{\n const currentInbox = inbox.find(({ id: id })=>id === currentWindow.id);\n if (!currentInbox) return {\n clear: false,\n incoming: [\n $c5dda773199830f0$var$scrollTarget\n ]\n };\n const { text: inboxMessagesRaw } = currentInbox;\n const incoming = inboxMessagesRaw/* Normalize. */ .map(({ content: content })=>content ? [\n ...$c5dda773199830f0$var$trimInputPrompt(content),\n $c5dda773199830f0$var$eol\n ] : [\n $c5dda773199830f0$var$eol\n ])/* Flatten. */ .reduce((acc, x)=>acc.concat(x), [\n $c5dda773199830f0$var$scrollTarget\n ]);\n return {\n incoming: incoming,\n clear: $c5dda773199830f0$var$isFakeStatus(currentWindow) ? true : currentInbox.clear\n };\n};\nfunction $c5dda773199830f0$export$2e2bcd8739ae039({ inbox: inbox, currentWindow: currentWindow }) {\n const [messages, setMessages] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)([]);\n const textBufferEl = (0, $5c5fa90583e4b8e8$export$b8f5890fc79d6aca)(null);\n (0, $5c5fa90583e4b8e8$export$6d9c69b0de29b591)(()=>{\n const { incoming: incoming, clear: clear } = $c5dda773199830f0$var$parseInbox(inbox, currentWindow);\n setMessages((messages)=>clear ? incoming : messages.concat(incoming));\n setTimeout(()=>{\n const scrollTargets = textBufferEl.current.querySelectorAll(`.${$c5dda773199830f0$var$scrollTarget.style}`);\n const freshScrollTarget = scrollTargets[scrollTargets.length - 1];\n freshScrollTarget ? freshScrollTarget.scrollIntoView() : textBufferEl.current.scrollTo({\n top: textBufferEl.current.scrollHeight,\n behavior: \"smooth\"\n });\n }, 0);\n }, [\n currentWindow,\n inbox\n ]);\n const classes = ()=>[\n $7264401512871bae$export$ab1029bcae9ddb4a,\n $c5dda773199830f0$var$isFakeStatus(currentWindow) ? $7264401512871bae$export$347a3a46df242257 : $7264401512871bae$export$6181eef8f2dfdf3c\n ].join(\" \");\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n tabindex: \"0\",\n ref: textBufferEl,\n className: classes(),\n children: messages.map((0, $0f82f0e8d6bc47f2$export$2e2bcd8739ae039))\n });\n}\n\n\n\n\n\n\nfunction $272a9a66be55229e$export$2e2bcd8739ae039({ inbox: inbox, currentWindow: currentWindow }) {\n const [prevMessages, setPrevMessages] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)([]);\n const [messages, setMessages] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)([]);\n (0, $5c5fa90583e4b8e8$export$6d9c69b0de29b591)(()=>{\n const currentInboxObj = inbox.find(({ id: id })=>id === currentWindow.id);\n const currentInbox = currentInboxObj?.lines ?? [];\n const newOrPrev = (cur, prev)=>(i)=>{\n const byId = (list, i)=>list.find(({ line: line })=>line === i);\n return byId(cur, i) || byId(prev, i);\n };\n const rawMessages = Array(currentWindow.gridheight).fill(null).map((_, i)=>i).map(newOrPrev(currentInbox, prevMessages));\n /* */ const shouldUpdatePrev = (rawMessages, prevMessages)=>{\n const serialize = JSON.stringify;\n return serialize(rawMessages) !== serialize(prevMessages);\n };\n if (shouldUpdatePrev(rawMessages, prevMessages)) setPrevMessages(rawMessages);\n /* */ const rawMessagesContent = rawMessages.map((x)=>x.content).flat().map((message)=>({\n ...message,\n text: message.text.trim()\n }));\n const isEmpty = rawMessagesContent.map(({ text: text })=>text.length).every((l)=>l === 0);\n const getGridStyle = ({ style: style })=>{\n if ([\n \"alert\",\n \"normal\"\n ].includes(style)) return \"grid\";\n return style || \"grid\";\n };\n const messages = rawMessagesContent.map((message)=>({\n style: getGridStyle(message),\n text: message.text.replace(\" \", \" / \")\n }));\n setMessages(isEmpty ? [] : messages);\n }, [\n inbox,\n currentWindow,\n prevMessages\n ]);\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n className: [\n $7264401512871bae$export$ab1029bcae9ddb4a,\n $7264401512871bae$export$347a3a46df242257\n ].join(\" \"),\n children: messages.map((0, $0f82f0e8d6bc47f2$export$2e2bcd8739ae039))\n });\n}\n\n\n\n\n\nvar $fd5fe8e2ac9eacb0$export$2bacab2130704b28;\nvar $fd5fe8e2ac9eacb0$export$8439e0443b88eae;\n$fd5fe8e2ac9eacb0$export$2bacab2130704b28 = `gUkI1a_menuButton`;\n$fd5fe8e2ac9eacb0$export$8439e0443b88eae = `gUkI1a_menuIcon`;\n\n\nfunction $1aca019851cc147a$export$2e2bcd8739ae039({ onClick: onClick }) {\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"button\", {\n \"aria-label\": \"Menu\",\n className: $fd5fe8e2ac9eacb0$export$2bacab2130704b28,\n onClick: onClick,\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"svg\", {\n class: $fd5fe8e2ac9eacb0$export$8439e0443b88eae,\n viewBox: \"0 0 28 32\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"rect\", {\n x: \"12\",\n y: \"4\",\n width: \"4\",\n height: \"4\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"rect\", {\n x: \"12\",\n y: \"14\",\n width: \"4\",\n height: \"4\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"rect\", {\n x: \"12\",\n y: \"24\",\n width: \"4\",\n height: \"4\"\n })\n ]\n })\n });\n}\n\n\nvar $3193ce97b05087f7$export$1d6e32fec5a4f082;\nvar $3193ce97b05087f7$export$4a36d31092c0d718;\n$3193ce97b05087f7$export$1d6e32fec5a4f082 = `LdLucW_inputBox`;\n$3193ce97b05087f7$export$4a36d31092c0d718 = `LdLucW_inputControls`;\n\n\n/* eslint-disable */ const $6ceab6f7d9d9af03$var$keyCodes = {\n KEY_BACKSPACE: 8,\n KEY_TAB: 9,\n KEY_RETURN: 13,\n KEY_ESC: 27,\n KEY_PAGEUP: 33,\n KEY_PAGEDOWN: 34,\n KEY_END: 35,\n KEY_HOME: 36,\n KEY_LEFT: 37,\n KEY_UP: 38,\n KEY_RIGHT: 39,\n KEY_DOWN: 40\n};\nconst $6ceab6f7d9d9af03$var$keyNames = {\n [$6ceab6f7d9d9af03$var$keyCodes.KEY_BACKSPACE]: \"delete\",\n [$6ceab6f7d9d9af03$var$keyCodes.KEY_TAB]: \"tab\",\n [$6ceab6f7d9d9af03$var$keyCodes.KEY_RETURN]: \"return\",\n [$6ceab6f7d9d9af03$var$keyCodes.KEY_ESC]: \"escape\",\n [$6ceab6f7d9d9af03$var$keyCodes.KEY_PAGEUP]: \"pageup\",\n [$6ceab6f7d9d9af03$var$keyCodes.KEY_PAGEDOWN]: \"pagedown\",\n [$6ceab6f7d9d9af03$var$keyCodes.KEY_END]: \"end\",\n [$6ceab6f7d9d9af03$var$keyCodes.KEY_HOME]: \"home\",\n [$6ceab6f7d9d9af03$var$keyCodes.KEY_LEFT]: \"left\",\n [$6ceab6f7d9d9af03$var$keyCodes.KEY_UP]: \"up\",\n [$6ceab6f7d9d9af03$var$keyCodes.KEY_RIGHT]: \"right\",\n [$6ceab6f7d9d9af03$var$keyCodes.KEY_DOWN]: \"down\"\n};\n/* eslint-enable */ const $6ceab6f7d9d9af03$var$hasModifier = (event)=>{\n const modifiers = [\n event.altKey,\n event.ctrlKey,\n event.metaKey,\n event.shiftKey\n ];\n return modifiers.some((modifier)=>modifier === true);\n};\nfunction $6ceab6f7d9d9af03$export$2e2bcd8739ae039({ inputType: inputType, windows: windows, currentWindowId: currentWindowId, sendMessage: sendMessage, onFullscreenRequest: onFullscreenRequest, setMenuOpen: setMenuOpen }) {\n const [targetWindow, setTargetWindow] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)(null);\n const [inputText, setInputText] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)(\"\");\n const [lastInput, setLastInput] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)(\"\");\n const inputEl = (0, $5c5fa90583e4b8e8$export$b8f5890fc79d6aca)(null);\n (0, $5c5fa90583e4b8e8$export$6d9c69b0de29b591)(()=>{\n let setFocus = ()=>{\n inputEl.current && inputEl.current.focus();\n };\n setInputText(\"\");\n setFocus();\n document.addEventListener(\"fullscreenchange\", setFocus);\n return ()=>document.removeEventListener(\"fullscreenchange\", setFocus);\n }, [\n inputType\n ]);\n (0, $5c5fa90583e4b8e8$export$6d9c69b0de29b591)(()=>{\n setTargetWindow(windows.find(({ id: id })=>id === currentWindowId));\n }, [\n currentWindowId,\n windows\n ]);\n const send = (message)=>{\n sendMessage(message, inputType, targetWindow);\n setLastInput(message);\n setInputText(\"\");\n };\n const charHandler = (event)=>(event.keyCode === 229 ? charHandlerMobile : charHandlerDefault)(event);\n const charHandlerDefault = (event)=>{\n if ($6ceab6f7d9d9af03$var$hasModifier(event)) return undefined;\n event.preventDefault();\n const key = $6ceab6f7d9d9af03$var$keyNames[event.keyCode] || event.key;\n send(key);\n };\n const charHandlerMobile = (event)=>setTimeout(()=>{\n send(event.target.value.slice(-1).toUpperCase());\n setInputText(\"\");\n });\n const lineHandler = ({ keyCode: keyCode, target: { value: value } })=>{\n if (keyCode === $6ceab6f7d9d9af03$var$keyCodes.KEY_RETURN) send(value);\n };\n const lineArrowHandler = ({ keyCode: keyCode })=>{\n if (keyCode === $6ceab6f7d9d9af03$var$keyCodes.KEY_UP) {\n setInputText(lastInput);\n setTimeout(()=>{\n const end = lastInput.length;\n inputEl.current.setSelectionRange(end, end);\n }, 0);\n }\n if (keyCode === $6ceab6f7d9d9af03$var$keyCodes.KEY_DOWN) setInputText(\"\");\n };\n const inputHandlers = {\n char: {\n maxlength: \"1\",\n placeholder: \"Press any key here\",\n onKeyDown: charHandler\n },\n line: {\n placeholder: \" > \",\n onKeyDown: lineArrowHandler,\n onKeyPress: lineHandler\n },\n finished: {\n placeholder: \"The program has finished\",\n disabled: true\n }\n };\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n className: $3193ce97b05087f7$export$4a36d31092c0d718,\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"input\", {\n ...inputHandlers[inputType],\n className: $3193ce97b05087f7$export$1d6e32fec5a4f082,\n ref: inputEl,\n value: inputText,\n autofocus: true,\n autocomplete: \"off\",\n spellCheck: \"false\",\n autocapitalize: \"off\",\n autocorrect: \"off\",\n onDblClick: onFullscreenRequest,\n onInput: ({ target: { value: value } })=>setInputText(value),\n type: \"search\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $1aca019851cc147a$export$2e2bcd8739ae039), {\n onClick: ()=>setMenuOpen(true)\n })\n ]\n });\n}\n\n\n\n\nvar $d7f5f88be915a221$export$cef8ff1a2814f0d7;\nvar $d7f5f88be915a221$export$46c1c92549715335;\nvar $d7f5f88be915a221$export$471f7ae5c4103ae1;\n$d7f5f88be915a221$export$cef8ff1a2814f0d7 = `zi213q_dots0123`;\n$d7f5f88be915a221$export$cef8ff1a2814f0d7;\n$d7f5f88be915a221$export$46c1c92549715335 = `zi213q_loading`;\n$d7f5f88be915a221$export$471f7ae5c4103ae1 = `zi213q_status`;\n\n\nconst $1068788a6b5bd866$var$fail = (details)=>/*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $d7f5f88be915a221$export$471f7ae5c4103ae1\n ].join(\" \"),\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"h1\", {\n children: \"Error\"\n }),\n details.map((x)=>/*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"p\", {\n children: x\n }, x)),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"hr\", {}),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$a6c7ac8248d6e38a), {\n href: \"/\",\n children: \"Home\"\n }),\n \"|\",\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://github.com/He4eT/elseifplayer/issues\",\n children: \"Report bug\"\n })\n ]\n });\nconst $1068788a6b5bd866$var$loading = (details)=>/*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $d7f5f88be915a221$export$471f7ae5c4103ae1,\n $d7f5f88be915a221$export$46c1c92549715335\n ].join(\" \"),\n children: details.map((x)=>/*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n children: x\n }, x))\n });\nvar $1068788a6b5bd866$export$2e2bcd8739ae039 = ({ stage: stage, details: details })=>({\n fail: $1068788a6b5bd866$var$fail,\n loading: $1068788a6b5bd866$var$loading\n })[stage](details);\n\n\n/**\r\n Base32768 is a binary-to-text encoding optimised for UTF-16-encoded text.\r\n (e.g. Windows, Java, JavaScript)\r\n*/ // Z is a number, usually a uint15 but sometimes a uint7\nconst $a3e838a981d9102e$var$BITS_PER_CHAR = 15 // Base32768 is a 15-bit encoding\n;\nconst $a3e838a981d9102e$var$BITS_PER_BYTE = 8;\nconst $a3e838a981d9102e$var$pairStrings = [\n \"ҠҿԀԟڀڿݠޟ߀ߟကဟႠႿᄀᅟᆀᆟᇠሿበቿዠዿጠጿᎠᏟᐠᙟᚠᛟកសᠠᡟᣀᣟᦀᦟ᧠᧿ᨠᨿᯀᯟᰀᰟᴀᴟ⇠⇿⋀⋟⍀⏟␀␟─❟➀➿⠀⥿⦠⦿⨠⩟⪀⪿⫠⭟ⰀⰟⲀⳟⴀⴟⵀⵟ⺠⻟㇀㇟㐀䶟䷀龿ꀀꑿ꒠꒿ꔀꗿꙀꙟꚠꛟ꜀ꝟꞀꞟꡀꡟ\",\n \"ƀƟɀʟ\"\n];\nconst $a3e838a981d9102e$var$lookupE = {};\nconst $a3e838a981d9102e$var$lookupD = {};\n$a3e838a981d9102e$var$pairStrings.forEach((pairString, r)=>{\n // Decompression\n const encodeRepertoire = [];\n pairString.match(/../gu).forEach((pair)=>{\n const first = pair.codePointAt(0);\n const last = pair.codePointAt(1);\n for(let codePoint = first; codePoint <= last; codePoint++)encodeRepertoire.push(String.fromCodePoint(codePoint));\n });\n const numZBits = $a3e838a981d9102e$var$BITS_PER_CHAR - $a3e838a981d9102e$var$BITS_PER_BYTE * r // 0 -> 15, 1 -> 7\n ;\n $a3e838a981d9102e$var$lookupE[numZBits] = encodeRepertoire;\n encodeRepertoire.forEach((chr, z)=>{\n $a3e838a981d9102e$var$lookupD[chr] = [\n numZBits,\n z\n ];\n });\n});\nconst $a3e838a981d9102e$export$c564cdbbe6da493 = (uint8Array)=>{\n const length = uint8Array.length;\n let str = \"\";\n let z = 0;\n let numZBits = 0;\n for(let i = 0; i < length; i++){\n const uint8 = uint8Array[i];\n // Take most significant bit first\n for(let j = $a3e838a981d9102e$var$BITS_PER_BYTE - 1; j >= 0; j--){\n const bit = uint8 >> j & 1;\n z = (z << 1) + bit;\n numZBits++;\n if (numZBits === $a3e838a981d9102e$var$BITS_PER_CHAR) {\n str += $a3e838a981d9102e$var$lookupE[numZBits][z];\n z = 0;\n numZBits = 0;\n }\n }\n }\n if (numZBits !== 0) {\n // Final bits require special treatment.\n // z = bbbbbbcccccccc, numZBits = 14, padBits = 1\n // z = bbbbbcccccccc, numZBits = 13, padBits = 2\n // z = bbbbcccccccc, numZBits = 12, padBits = 3\n // z = bbbcccccccc, numZBits = 11, padBits = 4\n // z = bbcccccccc, numZBits = 10, padBits = 5\n // z = bcccccccc, numZBits = 9, padBits = 6\n // z = cccccccc, numZBits = 8, padBits = 7\n // => Pad `z` out to 15 bits using 1s, then encode as normal (r = 0)\n // z = ccccccc, numZBits = 7, padBits = 0\n // z = cccccc, numZBits = 6, padBits = 1\n // z = ccccc, numZBits = 5, padBits = 2\n // z = cccc, numZBits = 4, padBits = 3\n // z = ccc, numZBits = 3, padBits = 4\n // z = cc, numZBits = 2, padBits = 5\n // z = c, numZBits = 1, padBits = 6\n // => Pad `z` out to 7 bits using 1s, then encode specially (r = 1)\n while(!(numZBits in $a3e838a981d9102e$var$lookupE)){\n z = (z << 1) + 1;\n numZBits++;\n }\n str += $a3e838a981d9102e$var$lookupE[numZBits][z];\n }\n return str;\n};\nconst $a3e838a981d9102e$export$2f872c0f2117be69 = (str)=>{\n const length = str.length;\n // This length is a guess. There's a chance we allocate one more byte here\n // than we actually need. But we can count and slice it off later\n const uint8Array = new Uint8Array(Math.floor(length * $a3e838a981d9102e$var$BITS_PER_CHAR / $a3e838a981d9102e$var$BITS_PER_BYTE));\n let numUint8s = 0;\n let uint8 = 0;\n let numUint8Bits = 0;\n for(let i = 0; i < length; i++){\n const chr = str.charAt(i);\n if (!(chr in $a3e838a981d9102e$var$lookupD)) throw new Error(`Unrecognised Base32768 character: ${chr}`);\n const [numZBits, z] = $a3e838a981d9102e$var$lookupD[chr];\n if (numZBits !== $a3e838a981d9102e$var$BITS_PER_CHAR && i !== length - 1) throw new Error(\"Secondary character found before end of input at position \" + String(i));\n // Take most significant bit first\n for(let j = numZBits - 1; j >= 0; j--){\n const bit = z >> j & 1;\n uint8 = (uint8 << 1) + bit;\n numUint8Bits++;\n if (numUint8Bits === $a3e838a981d9102e$var$BITS_PER_BYTE) {\n uint8Array[numUint8s] = uint8;\n numUint8s++;\n uint8 = 0;\n numUint8Bits = 0;\n }\n }\n }\n // Final padding bits! Requires special consideration!\n // Remember how we always pad with 1s?\n // Note: there could be 0 such bits, check still works though\n if (uint8 !== (1 << numUint8Bits) - 1) throw new Error(\"Padding mismatch\");\n return new Uint8Array(uint8Array.buffer, 0, numUint8s);\n};\n\n\nconst $55fe02cc0e361ca1$export$fe1040197752eb59 = ({ setStatus: setStatus, setWindows: setWindows, setCurrentWindowId: setCurrentWindowId, setInputType: setInputType, setInbox: setInbox })=>({\n onInit: ()=>{\n setStatus({\n stage: \"ready\"\n });\n },\n /* */ onUpdateWindows: (windows)=>{\n setWindows(windows);\n },\n onUpdateInputs: (data)=>{\n if (data.length === 0) return null;\n const { type: type, id: id } = data[0];\n setCurrentWindowId(id);\n setInputType(type);\n },\n onUpdateContent: (inbox)=>{\n setInbox(inbox);\n },\n onDisable: ()=>{\n setInputType(null);\n },\n /* */ onFileNameRequest: (_tosave, usage, _gameId, setFileName)=>{\n setFileName({\n usage: usage,\n filename: prompt(\"Enter the filename\")\n });\n },\n onFileRead: ({ filename: filename })=>{\n const content = localStorage.getItem(`fake-fs/${filename}`);\n return (0, $a3e838a981d9102e$export$2f872c0f2117be69)(content);\n },\n onFileWrite: ({ filename: filename }, content)=>{\n localStorage.setItem(`fake-fs/${filename}`, (0, $a3e838a981d9102e$export$c564cdbbe6da493)(content));\n },\n /* */ onExit: ()=>{\n setInputType(\"finished\");\n }\n });\nconst $55fe02cc0e361ca1$export$877ebb39146e6928 = (onExit)=>(event)=>{\n if (event.reason.name === \"ExitStatus\" || event.reason.message === \"Program terminated with exit(0)\") onExit();\n else console.error(\"Unhandled rejection (promise: \", event.promise, \", reason: \", event.reason, \").\");\n event.preventDefault();\n };\n\n\n\nconst $d1e73e56b58e412e$var$INITIAL_STATUS = {\n stage: \"loading\",\n details: [\n \"Preparing\"\n ]\n};\nconst $d1e73e56b58e412e$var$runMachine = ({ engine: Engine, wasmBinary: wasmBinary, storyfile: storyfile, handlers: handlers })=>{\n const { Dialog: Dialog, GlkOte: GlkOte, send: send } = (0, $db6ac6276ae4f3e4$export$2e2bcd8739ae039)(handlers);\n const instance = new Engine();\n instance.init(storyfile, {\n Dialog: Dialog,\n GlkOte: GlkOte,\n Glk: {},\n wasmBinary: wasmBinary,\n arguments: [\n \"storyfile\"\n ]\n });\n instance.start();\n return {\n send: send,\n instance: instance\n };\n};\nfunction $d1e73e56b58e412e$export$2e2bcd8739ae039({ vmParts: { storyfile: storyfile, engine: engine, wasmBinary: wasmBinary }, onFullscreenRequest: onFullscreenRequest, setMenuOpen: setMenuOpen, singleWindow: singleWindow }) {\n const [status, setStatus] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)($d1e73e56b58e412e$var$INITIAL_STATUS);\n const [windows, setWindows] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)([]);\n const [currentWindowId, setCurrentWindowId] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)(null);\n const [inputType, setInputType] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)(null);\n const [inbox, setInbox] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)([]);\n const [vm, setVm] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)(null);\n const [sendMessage, setSendMessage] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)(null);\n (0, $5c5fa90583e4b8e8$export$6d9c69b0de29b591)(()=>{\n const handlers = (0, $55fe02cc0e361ca1$export$fe1040197752eb59)({\n setStatus: setStatus,\n setWindows: setWindows,\n setCurrentWindowId: setCurrentWindowId,\n setInputType: setInputType,\n setInbox: setInbox\n });\n setVm($d1e73e56b58e412e$var$runMachine({\n engine: engine,\n wasmBinary: wasmBinary,\n storyfile: storyfile,\n handlers: handlers\n }));\n const rejectionHandler = (0, $55fe02cc0e361ca1$export$877ebb39146e6928)(handlers.onExit);\n window.addEventListener(\"unhandledrejection\", rejectionHandler);\n return ()=>{\n setVm(null);\n window.removeEventListener(\"unhandledrejection\", rejectionHandler);\n };\n }, [\n storyfile,\n engine,\n wasmBinary\n ]);\n (0, $5c5fa90583e4b8e8$export$6d9c69b0de29b591)(()=>{\n setSendMessage(()=>vm ? vm.send : null);\n return ()=>setSendMessage(null);\n }, [\n vm\n ]);\n const textWindow = (inbox)=>(currentWindow)=>{\n const props = {\n inbox: inbox,\n currentWindow: currentWindow\n };\n return ({\n buffer: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $c5dda773199830f0$export$2e2bcd8739ae039), {\n ...props\n }),\n grid: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $272a9a66be55229e$export$2e2bcd8739ae039), {\n ...props\n })\n })[currentWindow.type];\n };\n const byTop = (a, b)=>a.top - b.top;\n return status.stage !== \"ready\" ? /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $1068788a6b5bd866$export$2e2bcd8739ae039), {\n ...status\n }) : /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n className: $7264401512871bae$export$d7f0ba9e5e132b36,\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n className: $7264401512871bae$export$c789db2c85949867,\n children: windows.sort(byTop).filter(singleWindow ? ({ id: id })=>id === currentWindowId : ()=>true).map(textWindow(inbox))\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $6ceab6f7d9d9af03$export$2e2bcd8739ae039), {\n inputType: inputType,\n windows: windows,\n currentWindowId: currentWindowId,\n sendMessage: sendMessage,\n onFullscreenRequest: onFullscreenRequest,\n setMenuOpen: setMenuOpen\n })\n ]\n });\n}\n\n\n\nconst $cc5481a01a7ff6bc$var$INITIAL_STATUS = {\n stage: \"loading\",\n details: [\n \"Loading\"\n ]\n};\nconst $cc5481a01a7ff6bc$var$prepareVM = ({ url: url, setStatus: setStatus, setParts: setParts })=>{\n const st = (stage, details)=>(args)=>{\n setStatus({\n stage: stage,\n details: [\n details\n ]\n });\n return args;\n };\n const cleanUrl = (url)=>url.startsWith(\"blob:\") ? url.replace(/#(.*)$/g, \"\") : url;\n const fetchWasm = (wasmBinaryName)=>fetch(wasmBinaryName).then((response)=>response.arrayBuffer());\n const checkResponse = (response)=>{\n if (response.ok) return response;\n throw new Error(response.statusText);\n };\n return Promise.resolve(url).then(st(\"loading\", \"Downloading file\")).then(cleanUrl).then(fetch).then(checkResponse).then(st(\"loading\", \"Processing file\")).then((response)=>response.arrayBuffer()).then((arrayBuffer)=>new Uint8Array(arrayBuffer)).then(st(\"loading\", \"Downloading engine\")).then((storyfile)=>{\n let parts = (0, $11084da5888c7d7e$export$1784a1ff765207b7)(url);\n return [\n storyfile,\n parts.engine,\n parts.wasmBinaryName\n ];\n }).then(([storyfile, engine, wasmBinaryName])=>Promise.all([\n storyfile,\n engine,\n fetchWasm(wasmBinaryName)\n ])).then(([storyfile, engine, wasmBinary])=>setParts({\n storyfile: storyfile,\n engine: engine,\n wasmBinary: wasmBinary\n })).then(st(\"loading\", \"Running\")).catch((e)=>{\n console.error(e);\n setStatus({\n stage: \"fail\",\n details: [\n e.message,\n url\n ]\n });\n });\n};\nfunction $cc5481a01a7ff6bc$export$2e2bcd8739ae039({ url: url, singleWindow: singleWindow, onFullscreenRequest: onFullscreenRequest, setMenuOpen: setMenuOpen }) {\n const [status, setStatus] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)($cc5481a01a7ff6bc$var$INITIAL_STATUS);\n const [vmParts, setParts] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)(null);\n (0, $5c5fa90583e4b8e8$export$6d9c69b0de29b591)(()=>{\n setStatus($cc5481a01a7ff6bc$var$INITIAL_STATUS);\n setParts(null);\n $cc5481a01a7ff6bc$var$prepareVM({\n url: url,\n setStatus: setStatus,\n setParts: setParts\n });\n return ()=>setParts(null);\n }, [\n url\n ]);\n return vmParts ? /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $d1e73e56b58e412e$export$2e2bcd8739ae039), {\n vmParts: vmParts,\n onFullscreenRequest: onFullscreenRequest,\n setMenuOpen: setMenuOpen,\n singleWindow: singleWindow\n }) : /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $1068788a6b5bd866$export$2e2bcd8739ae039), {\n ...status\n });\n}\n\n\n\n\n\n\nvar $0c7160f142d5c9c6$export$d90360df408c8ceb;\nvar $0c7160f142d5c9c6$export$b1e5508a851be14d;\nvar $0c7160f142d5c9c6$export$428e7c787d57587d;\n$0c7160f142d5c9c6$export$d90360df408c8ceb = `J9zJZG_appearance`;\n$0c7160f142d5c9c6$export$b1e5508a851be14d = `J9zJZG_menu`;\n$0c7160f142d5c9c6$export$428e7c787d57587d = `J9zJZG_navigation`;\n\n\nfunction $dcf9cc7c30fac7fa$export$2e2bcd8739ae039({ themeEngine: themeEngine, onFullscreenRequest: onFullscreenRequest, menuOpen: menuOpen, setMenuOpen: setMenuOpen }) {\n const dialog = (0, $5c5fa90583e4b8e8$export$b8f5890fc79d6aca)(null);\n (0, $5c5fa90583e4b8e8$export$6d9c69b0de29b591)(()=>{\n const dialogOpen = dialog.current.open;\n if (menuOpen && !dialogOpen) dialog.current.showModal();\n if (!menuOpen && dialogOpen) dialog.current.close();\n }, [\n menuOpen\n ]);\n (0, $5c5fa90583e4b8e8$export$6d9c69b0de29b591)(()=>{\n const currentDialog = dialog.current;\n const closeHandler = ()=>{\n setMenuOpen(false);\n };\n currentDialog.addEventListener(\"close\", closeHandler);\n return ()=>currentDialog.removeEventListener(\"close\", closeHandler);\n }, [\n dialog,\n setMenuOpen\n ]);\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"dialog\", {\n ref: dialog,\n className: $0c7160f142d5c9c6$export$b1e5508a851be14d,\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"section\", {\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"button\", {\n tabIndex: 0,\n onClick: ()=>dialog.current.close(),\n children: \"Close this menu\"\n })\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n className: $0c7160f142d5c9c6$export$d90360df408c8ceb,\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"button\", {\n onClick: ()=>{\n dialog.current.close();\n onFullscreenRequest();\n },\n children: \"Full screen\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"button\", {\n onClick: ()=>themeEngine.setRandomTheme(),\n children: \"Set a random theme\"\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"label\", {\n children: [\n \"Current theme:\",\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $7c39639b64b564e0$export$2e2bcd8739ae039), {\n themeEngine: themeEngine\n })\n ]\n })\n ]\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n className: $0c7160f142d5c9c6$export$428e7c787d57587d,\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$a6c7ac8248d6e38a), {\n href: \"/\",\n tabIndex: 0,\n children: \"ElseIfPlayer\"\n })\n })\n ]\n })\n });\n}\n\n\nconst $b5ee9fb5e8b4f417$var$decode = (encodedUrl)=>decodeURIComponent(encodedUrl);\nfunction $b5ee9fb5e8b4f417$export$2e2bcd8739ae039({ theme: theme, themeEngine: themeEngine, encodedUrl: encodedUrl, singleWindow: singleWindow }) {\n (0, $5c5fa90583e4b8e8$export$6d9c69b0de29b591)(()=>{\n themeEngine.setTheme(theme);\n }, [\n theme,\n themeEngine\n ]);\n const [targetUrl, setTargetUrl] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)($b5ee9fb5e8b4f417$var$decode(encodedUrl));\n (0, $5c5fa90583e4b8e8$export$6d9c69b0de29b591)(()=>{\n setTargetUrl($b5ee9fb5e8b4f417$var$decode(encodedUrl));\n }, [\n encodedUrl\n ]);\n const [menuOpen, setMenuOpen] = (0, $5c5fa90583e4b8e8$export$60241385465d0a34)(false);\n const onFullscreenRequest = ()=>{\n document.documentElement.requestFullscreen();\n };\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"main\", {\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $dcf9cc7c30fac7fa$export$2e2bcd8739ae039), {\n themeEngine: themeEngine,\n onFullscreenRequest: onFullscreenRequest,\n menuOpen: menuOpen,\n setMenuOpen: setMenuOpen\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $cc5481a01a7ff6bc$export$2e2bcd8739ae039), {\n url: targetUrl,\n onFullscreenRequest: onFullscreenRequest,\n setMenuOpen: setMenuOpen,\n singleWindow: singleWindow\n })\n ]\n });\n}\n\n\n\n\nfunction $1425950ba2693d8f$export$2e2bcd8739ae039() {\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"main\", {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $1068788a6b5bd866$export$2e2bcd8739ae039), {\n stage: \"fail\",\n details: [\n \"404\",\n \"Page Not Found\"\n ]\n })\n });\n}\n\n\nvar $6003de219045a58b$exports = {};\n\n$parcel$export($6003de219045a58b$exports, \"app\", function () { return $6003de219045a58b$export$729c8b7179294ba; }, function (v) { return $6003de219045a58b$export$729c8b7179294ba = v; });\n$parcel$export($6003de219045a58b$exports, \"focus\", function () { return $6003de219045a58b$export$d7ddd398f22d79ef; }, function (v) { return $6003de219045a58b$export$d7ddd398f22d79ef = v; });\n$parcel$export($6003de219045a58b$exports, \"games\", function () { return $6003de219045a58b$export$79863f625c4e57; }, function (v) { return $6003de219045a58b$export$79863f625c4e57 = v; });\n$parcel$export($6003de219045a58b$exports, \"home\", function () { return $6003de219045a58b$export$d12a05a2da93ee73; }, function (v) { return $6003de219045a58b$export$d12a05a2da93ee73 = v; });\n$parcel$export($6003de219045a58b$exports, \"play\", function () { return $6003de219045a58b$export$899fbdb5fa08b653; }, function (v) { return $6003de219045a58b$export$899fbdb5fa08b653 = v; });\n$parcel$export($6003de219045a58b$exports, \"themes\", function () { return $6003de219045a58b$export$d9a33280f07116d9; }, function (v) { return $6003de219045a58b$export$d9a33280f07116d9 = v; });\nvar $6003de219045a58b$export$729c8b7179294ba;\nvar $6003de219045a58b$export$d7ddd398f22d79ef;\nvar $6003de219045a58b$export$79863f625c4e57;\nvar $6003de219045a58b$export$d12a05a2da93ee73;\nvar $6003de219045a58b$export$899fbdb5fa08b653;\nvar $6003de219045a58b$export$d9a33280f07116d9;\n$6003de219045a58b$export$729c8b7179294ba = `X8uEDW_app`;\n$6003de219045a58b$export$d7ddd398f22d79ef = `X8uEDW_focus`;\n$6003de219045a58b$export$79863f625c4e57 = `X8uEDW_games`;\n$6003de219045a58b$export$d12a05a2da93ee73 = `X8uEDW_home`;\n$6003de219045a58b$export$899fbdb5fa08b653 = `X8uEDW_play`;\n$6003de219045a58b$export$d9a33280f07116d9 = `X8uEDW_themes`;\n\n\nfunction $0cf2ca330b15cac0$export$2e2bcd8739ae039() {\n const themeEngine = (0, $1e789317f11755fe$export$818080cba8053148)();\n const [currentLocation] = (0, $66f2da609d6d9bfe$export$b37f3f4c9f6562f7)();\n const playerView = (themeEngine, singleWindow)=>function view(params) {\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $b5ee9fb5e8b4f417$export$2e2bcd8739ae039), {\n themeEngine: themeEngine,\n singleWindow: singleWindow,\n ...params\n });\n };\n return /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$55185c17a0fcbe46), {\n hook: (0, $66f2da609d6d9bfe$export$b37f3f4c9f6562f7),\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)(\"div\", {\n className: [\n $6003de219045a58b$exports.app,\n $6003de219045a58b$exports[(0, $66f2da609d6d9bfe$export$4fac2eeccfa4a8ca)(currentLocation)],\n themeEngine.currentTheme\n ].join(\" \"),\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$b5d5cf8927ab7262), {\n children: [\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$e7b0ac011bb776c6), {\n path: \"/\",\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $85078130a8d7a0de$export$2e2bcd8739ae039), {\n themeEngine: themeEngine\n })\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$e7b0ac011bb776c6), {\n path: \"/games/\",\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $a9795ef4044b2e22$export$2e2bcd8739ae039), {})\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$e7b0ac011bb776c6), {\n path: \"/themes/\",\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $d21b3c63351f5932$export$2e2bcd8739ae039), {\n themeEngine: themeEngine\n })\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$e7b0ac011bb776c6), {\n path: \"/play/:encodedUrl\",\n children: playerView(themeEngine, false)\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$e7b0ac011bb776c6), {\n path: \"/play/:encodedUrl/:theme\",\n children: playerView(themeEngine, false)\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$e7b0ac011bb776c6), {\n path: \"/focus/:encodedUrl\",\n children: playerView(themeEngine, true)\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$e7b0ac011bb776c6), {\n path: \"/focus/:encodedUrl/:theme\",\n children: playerView(themeEngine, true)\n }),\n /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $bf49b3b08868bbb1$export$e7b0ac011bb776c6), {\n children: /*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $1425950ba2693d8f$export$2e2bcd8739ae039), {})\n })\n ]\n })\n })\n });\n}\n\n\n(0, $551174e99d8c5924$export$b3890eb0ae9dca99)(/*#__PURE__*/ (0, $8161a3c5d316e860$export$34b9dba7ce09269b)((0, $0cf2ca330b15cac0$export$2e2bcd8739ae039), {}), document.getElementById(\"root\"));\n\n})();\n//# sourceMappingURL=index.7852e909.js.map\n","\"use strict\";\n\nvar bundleURL = {};\nfunction getBundleURLCached(id) {\n var value = bundleURL[id];\n if (!value) {\n value = getBundleURL();\n bundleURL[id] = value;\n }\n return value;\n}\nfunction getBundleURL() {\n try {\n throw new Error();\n } catch (err) {\n var matches = ('' + err.stack).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^)\\n]+/g);\n if (matches) {\n // The first two stack frames will be this function and getBundleURLCached.\n // Use the 3rd one, which will be a runtime in the original bundle.\n return getBaseURL(matches[2]);\n }\n }\n return '/';\n}\nfunction getBaseURL(url) {\n return ('' + url).replace(/^((?:https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/.+)\\/[^/]+$/, '$1') + '/';\n}\n\n// TODO: Replace uses with `new URL(url).origin` when ie11 is no longer supported.\nfunction getOrigin(url) {\n var matches = ('' + url).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^/]+/);\n if (!matches) {\n throw new Error('Origin not found');\n }\n return matches[0];\n}\nexports.getBundleURL = getBundleURLCached;\nexports.getBaseURL = getBaseURL;\nexports.getOrigin = getOrigin;","import { render } from 'preact'\n\nimport '@fontsource/open-sans'\n\nimport './style/base.scss'\nimport './style/controls.scss'\n\nimport App from './App'\n\nrender(, document.getElementById('root'))\n","import{options as r}from\"preact\";export{Fragment}from\"preact\";var _=0;function o(o,e,n,t,f,l){var s,u,a={};for(u in e)\"ref\"==u?s=e[u]:a[u]=e[u];var i={type:o,props:a,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--_,__source:f,__self:l};if(\"function\"==typeof o&&(s=o.defaultProps))for(u in s)void 0===a[u]&&(a[u]=s[u]);return r.vnode&&r.vnode(i),i}export{o as jsx,o as jsxDEV,o as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import { options, Fragment } from 'preact';\n\n/** @typedef {import('preact').VNode} VNode */\n\nlet vnodeId = 0;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = {},\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'ref') {\n\t\t\tref = props[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (typeof normalizedProps[i] === 'undefined') {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment\n};\n","var n,l,u,i,t,o,r,f,e,c={},s=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,v=Array.isArray;function h(n,l){for(var u in l)n[u]=l[u];return n}function p(n){var l=n.parentNode;l&&l.removeChild(n)}function y(l,u,i){var t,o,r,f={};for(r in u)\"key\"==r?t=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return d(l,f,t,o,null)}function d(n,i,t,o,r){var f={type:n,props:i,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u:r};return null==r&&null!=l.vnode&&l.vnode(f),f}function _(){return{current:null}}function k(n){return n.children}function b(n,l){this.props=n,this.context=l}function g(n,l){if(null==l)return n.__?g(n.__,n.__.__k.indexOf(n)+1):null;for(var u;ll&&t.sort(f));x.__r=0}function P(n,l,u,i,t,o,r,f,e,a){var h,p,y,_,b,m,w,x=i&&i.__k||s,P=x.length;for(u.__k=[],h=0;h0?d(_.type,_.props,_.key,_.ref?_.ref:null,_.__v):_)){if(_.__=u,_.__b=u.__b+1,null===(y=x[h])||y&&_.key==y.key&&_.type===y.type)x[h]=void 0;else for(p=0;p=0;l--)if((u=n.__k[l])&&(i=A(u)))return i;return null}function H(n,l,u,i,t){var o;for(o in u)\"children\"===o||\"key\"===o||o in l||T(n,o,null,u[o],i);for(o in l)t&&\"function\"!=typeof l[o]||\"children\"===o||\"key\"===o||\"value\"===o||\"checked\"===o||u[o]===l[o]||T(n,o,l[o],u[o],i)}function I(n,l,u){\"-\"===l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||a.test(l)?u:u+\"px\"}function T(n,l,u,i,t){var o;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof i&&(n.style.cssText=i=\"\"),i)for(l in i)u&&l in u||I(n.style,l,\"\");if(u)for(l in u)i&&u[l]===i[l]||I(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])o=l!==(l=l.replace(/Capture$/,\"\")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?i||n.addEventListener(l,o?z:j,o):n.removeEventListener(l,o?z:j,o);else if(\"dangerouslySetInnerHTML\"!==l){if(t)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!==l&&\"height\"!==l&&\"href\"!==l&&\"list\"!==l&&\"form\"!==l&&\"tabIndex\"!==l&&\"download\"!==l&&\"rowSpan\"!==l&&\"colSpan\"!==l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!==l[4]?n.removeAttribute(l):n.setAttribute(l,u))}}function j(n){return this.l[n.type+!1](l.event?l.event(n):n)}function z(n){return this.l[n.type+!0](l.event?l.event(n):n)}function L(n,u,i,t,o,r,f,e,c){var s,a,p,y,d,_,g,m,w,x,C,S,$,A,H,I=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,r=[e]),(s=l.__b)&&s(u);try{n:if(\"function\"==typeof I){if(m=u.props,w=(s=I.contextType)&&t[s.__c],x=s?w?w.props.value:s.__:t,i.__c?g=(a=u.__c=i.__c).__=a.__E:(\"prototype\"in I&&I.prototype.render?u.__c=a=new I(m,x):(u.__c=a=new b(m,x),a.constructor=I,a.render=B),w&&w.sub(a),a.props=m,a.state||(a.state={}),a.context=x,a.__n=t,p=a.__d=!0,a.__h=[],a._sb=[]),null==a.__s&&(a.__s=a.state),null!=I.getDerivedStateFromProps&&(a.__s==a.state&&(a.__s=h({},a.__s)),h(a.__s,I.getDerivedStateFromProps(m,a.__s))),y=a.props,d=a.state,a.__v=u,p)null==I.getDerivedStateFromProps&&null!=a.componentWillMount&&a.componentWillMount(),null!=a.componentDidMount&&a.__h.push(a.componentDidMount);else{if(null==I.getDerivedStateFromProps&&m!==y&&null!=a.componentWillReceiveProps&&a.componentWillReceiveProps(m,x),!a.__e&&null!=a.shouldComponentUpdate&&!1===a.shouldComponentUpdate(m,a.__s,x)||u.__v===i.__v){for(u.__v!==i.__v&&(a.props=m,a.state=a.__s,a.__d=!1),a.__e=!1,u.__e=i.__e,u.__k=i.__k,u.__k.forEach(function(n){n&&(n.__=u)}),C=0;C2&&(e.children=arguments.length>3?n.call(arguments,2):i),d(l.type,e,t||l.key,o||l.ref,null)}function G(n,l){var u={__c:l=\"__cC\"+e++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,w(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s.slice,l={__e:function(n,l,u,i){for(var t,o,r;l=l.__;)if((t=l.__c)&&!t.__)try{if((o=t.constructor)&&null!=o.getDerivedStateFromError&&(t.setState(o.getDerivedStateFromError(n)),r=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),r=t.__d),r)return t.__E=t}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},b.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=h({},this.state),\"function\"==typeof n&&(n=n(h({},u),this.props)),n&&h(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),w(this))},b.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),w(this))},b.prototype.render=k,t=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},x.__r=0,e=0;export{b as Component,k as Fragment,F as cloneElement,G as createContext,y as createElement,_ as createRef,y as h,E as hydrate,i as isValidElement,l as options,D as render,S as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { getDomSibling } from '../component';\nimport { isArray } from '../util';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g.
{reuse}{reuse}
) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse =
\n\t\t\t//
{reuse}{reuse}
\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\tchildVNode._children === oldVNode._children\n\t\t\t) {\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldDom,\n\t\t\t\t\tparentDom\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\toldChildren,\n\t\t\t\t\tnewDom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\t\t\t\tnewParentVNode._nextDom = getLastDom(oldParentVNode).nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode, vnode, c, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\toldVNode == null ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j= 0; i--) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child) {\n\t\t\t\tlet lastDom = getLastDom(child);\n\t\t\t\tif (lastDom) {\n\t\t\t\t\treturn lastDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname !== 'rowSpan' &&\n\t\t\tname !== 'colSpan' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\treturn this._listeners[e.type + false](options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// In cases of bailing due to strict-equality we have to reset force as well\n\t\t\t\t\tc._force = false;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the -element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix \n )\n}\n","import { Link } from 'wouter-preact'\n\nimport GameEntry from\n '~/src/components/GameEntry/GameEntry'\n\nimport top2019 from './top2019'\n\nimport * as s from './GamesView.module.scss'\n\nconst tutorialGame = {\n name: 'The Dreamhold',\n ifdb: 'https://ifdb.org/viewgame?id=3myqnrs64nbtwdaz',\n url: 'https://mirror.ifarchive.org/if-archive/games/zcode/dreamhold.z8',\n}\n\nexport default function GamesView () {\n return (\n
\n

\n \n IFDB\n Games\n

\n\n

\n Choose one or \n go back.\n

\n\n
\n

\n Tutorial\n

\n\n

\n If you are not familiar with Interactive Fiction,\n you should start with this tutorial game\n by Andrew Plotkin:\n

\n\n
    \n
  • \n \n
  • \n
\n
\n\n

\n Interactive Fiction Top 50 of All Time\n

\n\n

\n \n Every four years , Victor Gijsbers puts\n together a list of the top 50 IF games of all time.\n\n Here is an almost complete and slightly rearranged version of the \n list from 2019:\n

\n\n
    \n {top2019.map((game) => (\n
  1. \n \n
  2. \n ))}\n
\n\n
\n )\n}\n","import { Link } from 'wouter-preact'\n\nimport {\n buildPlayLinkHref,\n} from '~/src/routing'\n\nexport default function GameEntry ({ name, ifdb, url }) {\n return (\n
\n

{name}

\n \n IFDB page\n \n | \n \n Play\n \n
\n )\n}\n","export default [\n [\n 'Lost Pig',\n 'https://ifdb.org/viewgame?id=mohwfk47yjzii14w',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/LostPig.z8',\n ],\n [\n /* Check with cheap-glk */\n 'Counterfeit Monkey',\n 'https://ifdb.org/viewgame?id=aearuuxv83plclpl',\n 'https://mirror.ifarchive.org/if-archive/games/glulx/CounterfeitMonkey.gblorb',\n ],\n [\n /* Works. Check inputs */\n 'Anchorhead',\n 'https://ifdb.org/viewgame?id=op0uw1gn1tjqmjt7',\n 'https://ifarchive.org/if-archive/games/zcode/anchor.z8',\n ],\n /* [\n '80 DAYS',\n 'https://ifdb.org/viewgame?id=du51t0qrhjqlnbij',\n 'INKLEWRITER'\n ], */\n [\n 'Galatea',\n 'https://ifdb.org/viewgame?id=urxrv27t7qtu52lb',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/Galatea.zblorb',\n ],\n [\n /* Works. Check inputs */\n 'Photopia',\n 'https://ifdb.org/viewgame?id=ju778uv5xaswnlpl',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/photopia.z5',\n ],\n [\n 'Spider and Web',\n 'https://ifdb.org/viewgame?id=2xyccw3pe0uovfad',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/Tangle.z5',\n ],\n /* [\n 'Trinity',\n 'https://ifdb.org/viewgame?id=j18kjz80hxjtyayw',\n 'ZIP'\n ], */\n /* [\n 'Hadean Lands',\n 'https://ifdb.org/viewgame?id=u58d0mlbfwcorfi',\n 'COMMERCIAL'\n ], */\n /* [\n 'Superluminal Vagrant Twin',\n 'https://ifdb.org/viewgame?id=5xzoz5wimz4xxha',\n 'CORS https://v6p9d9t4.ssl.hwcdn.net/html/177384/Superluminal%20Vagrant%20Twin%20Webpage/files/Superluminal%20Vagrant%20Twin.gblorb'\n ], */\n /* [\n 'Birdland',\n 'https://ifdb.org/viewgame?id=ap1651hvjldbuugj',\n 'TWINE'\n ], */\n [\n 'Slouching Towards Bedlam',\n 'https://ifdb.org/viewgame?id=032krqe6bjn5au78',\n 'https://mirror.ifarchive.org/if-archive/games/competition2003/zcode/slouch/slouch.z5',\n ],\n [\n 'Curses!',\n 'https://ifdb.org/viewgame?id=plvzam05bmz3enh8',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/curses.z5',\n ],\n /* [\n 'howling dogs',\n 'https://ifdb.org/viewgame?id=mxj7xp4nffia9rbj',\n 'TWINE'\n ], */\n [\n 'Violet',\n 'https://ifdb.org/viewgame?id=4glrrfh7wrp9zz7b',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/Violet.zblorb',\n ],\n [\n 'The Wizard Sniffer',\n 'https://ifdb.org/viewgame?id=uq18rw9gt8j58da',\n 'https://ifarchive.org/if-archive/games/competition2017/The%20Wizard%20Sniffer/The_Wizard_Sniffer.gblorb',\n ],\n /* [\n 'Eat Me',\n 'https://ifdb.org/viewgame?id=yutkd9u0oeog4br1',\n 'ZIP https://ifarchive.org/if-archive/games/competition2017/Eat%20Me/Eat%20Me/Gblorb.zip'\n ], */\n /* [\n 'Horse Master',\n 'https://ifdb.org/viewgame?id=ogkcvv9l1q0aatpd',\n 'TWINE'\n ], */\n /* [\n 'Mentula Macanus: Apocolocyntosis',\n 'https://ifdb.org/viewgame?id=etul31tqgl3n22nl'\n 'ZIP'\n ], */\n [\n 'Shade',\n 'https://ifdb.org/viewgame?id=hsfc7fnl40k4a30q',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/shade.z5',\n ],\n [\n 'Vespers',\n 'https://ifdb.org/viewgame?id=6dj2vguyiagrhvc2',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/vespers.z8',\n ],\n /* [\n 'Will Not Let Me Go',\n 'https://ifdb.org/viewgame?id=67r2qc21m5nzexv1',\n 'TWINE'\n ], */\n /* [\n 'Bee',\n 'https://ifdb.org/viewgame?id=8pe83e92v4nvabic',\n 'VARYTALE'\n ], */\n /* [\n 'Creatures Such As We',\n 'https://ifdb.org/viewgame?id=8l9cdcd1tbt77hfl',\n 'TWINE'\n ], */\n /* [\n 'Kerkerkruip',\n 'https://ifdb.org/viewgame?id=f7zdhxmiraht53d1',\n 'CORS https://downloads.kerkerkruip.org/Kerkerkruip-latest.gblorb'\n ], */\n /* [\n 'Midnight. Swordfight.',\n 'https://ifdb.org/viewgame?id=2cuwjlvpybg8oaf0',\n 'CORS https://www.castleprincessdragon.com/InteractiveFiction/MS/MidnightSwordfight.gblorb'\n ], */\n [\n 'Savoir-Faire',\n 'https://ifdb.org/viewgame?id=p0cizeb3kiwzlm2p',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/Savoir-Faire.zblorb',\n ],\n /* [\n 'With Those We Love Alive',\n 'https://ifdb.org/viewgame?id=445d989vuwlh4cvz',\n 'TWINE'\n ], */\n [\n 'Aisle',\n 'https://ifdb.org/viewgame?id=j49crlvd62mhwuzu',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/Aisle.z5',\n ],\n /* [\n 'Blue Lacuna',\n 'https://ifdb.org/viewgame?id=ez2mcyx4zi98qlkh',\n 'ZIP'\n ], */\n [\n 'Gun Mute',\n 'https://ifdb.org/viewgame?id=xwedbibfksczn7eq',\n 'https://mirror.ifarchive.org/if-archive/games/tads/GunMute.t3',\n ],\n /* [\n 'The King of Shreds and Patches',\n 'https://ifdb.org/viewgame?id=9ntef9expou18abv',\n 'ZIP'\n ], */\n /* [\n 'A Mind Forever Voyaging',\n 'https://ifdb.org/viewgame?id=4h62dvooeg9ajtfa',\n 'CORS'\n ], */\n /* [\n 'SPY INTRIGUE',\n 'https://ifdb.org/viewgame?id=zz6i7irfr70nvp7a',\n 'TWINE'\n ], */\n /* [\n 'Wishbringer',\n 'https://ifdb.org/viewgame?id=z02joykzh66wfhcl',\n 'CORS'\n ], */\n [\n 'A Beauty Cold and Austere',\n 'https://ifdb.org/viewgame?id=y9y7jozi0l76bb82',\n 'https://ifarchive.org/if-archive/games/competition2017/A%20Beauty%20Cold%20and%20Austere/A_Beauty_Cold_and_Austere.gblorb',\n ],\n /* [\n 'Cactus Blue Motel',\n 'https://ifdb.org/viewgame?id=7e699ifb6u3767yr',\n 'TWINE'\n ], */\n [\n 'Coloratura',\n 'https://ifdb.org/viewgame?id=g0fl99ovcrq2sqzk',\n 'https://mirror.ifarchive.org/if-archive/games/competition2013/glulx/coloratura/Coloratura.gblorb',\n ],\n /* [\n 'Harmonia',\n 'https://ifdb.org/viewgame?id=bkyia4k48od1ila',\n 'TWINE'\n ], */\n [\n 'Lime Ergot',\n 'https://ifdb.org/viewgame?id=b8mb4fcwmf1hrxl',\n 'https://mirror.ifarchive.org/if-archive/games/glulx/Lime_Ergot.gblorb',\n ],\n [\n 'Rameses',\n 'https://ifdb.org/viewgame?id=0stz0hr7a98bp9mp',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/rameses.zblorb',\n ],\n /* [\n 'Spellbreaker',\n 'https://ifdb.org/viewgame?id=wqsmrahzozosu3r',\n 'CORS'\n ], */\n /* [\n 'Suspended',\n 'https://ifdb.org/viewgame?id=t47hei9uq10xoar8',\n 'CORS'\n ], */\n [\n 'The Wand',\n 'https://ifdb.org/viewgame?id=2jil5vbxmbv8riv1',\n 'https://ifarchive.org/if-archive/games/glulx/Wand.ulx',\n ],\n /* [\n 'Zork I',\n 'https://ifdb.org/viewgame?id=0dbnusxunq7fw5ro',\n 'ZIP'\n ], */\n [\n '1893: A World\\'s Fair Mystery',\n 'https://ifdb.org/viewgame?id=00e0t7swrris5pg6',\n 'https://mirror.ifarchive.org/if-archive/games/tads/1893.gam',\n ],\n [\n 'Adventure',\n 'https://ifdb.org/viewgame?id=fft6pu91j85y4acv',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/Advent.z5',\n ],\n [\n 'Alias \\'The Magpie\\'',\n 'https://ifdb.org/viewgame?id=yspn49v69hzc8rtb',\n 'https://ifarchive.org/if-archive/games/competition2018/Alias%20The%20Magpie/Alias%20%27The%20Magpie%27.gblorb',\n ],\n /* [\n 'De Baron',\n 'https://ifdb.org/viewgame?id=weac28l51hiqfzxz',\n 'ZIP'\n ], */\n /* [\n 'Bogeyman',\n 'https://ifdb.org/viewgame?id=ltwvgb2lubkx82yi',\n 'TWINE'\n ], */\n [\n 'Cragne Manor',\n 'https://ifdb.org/viewgame?id=4x7nltu8p851tn4x',\n 'https://mirror.ifarchive.org/if-archive/games/glulx/cragne.gblorb',\n ],\n [\n 'The Edifice',\n 'https://ifdb.org/viewgame?id=4tb9soabrb4apqzd',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/edifice.z5',\n ],\n [\n 'Endless, Nameless',\n 'https://ifdb.org/viewgame?id=7vtm1rq16hh3xch',\n 'https://ifarchive.org/if-archive/games/zcode/nameless.z8',\n ],\n [\n 'Everybody Dies',\n 'https://ifdb.org/viewgame?id=lyblvftb8xtlo0a1',\n 'https://mirror.ifarchive.org/if-archive/games/competition2008/glulx/everybodydies/EverybodyDies.gblorb',\n ],\n /* [\n 'Fallen London',\n 'https://ifdb.org/viewgame?id=y9m60ythcj2xn9r',\n 'STORYNEXUS'\n ], */\n [\n 'Foo Foo',\n 'https://ifdb.org/viewgame?id=ec6x9y8qcmsrxob9',\n 'https://ifarchive.org/if-archive/games/springthing/2016/FooFoo.gblorb',\n ],\n [\n 'The Gostak',\n 'https://ifdb.org/viewgame?id=w5s3sv43s3p98v45',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/gostak.z5',\n ],\n /* [\n 'The Hitchhiker\\'s Guide to the Galaxy',\n 'https://ifdb.org/viewgame?id=ouv80gvsl32xlion',\n 'CORS https://www.douglasadams.com/creations/hhgg.z3'\n ], */\n /* [\n 'Hoist Sail for the Heliopause and Home',\n 'https://ifdb.org/viewgame?id=ykccumi5xc5rltev',\n 'CORS https://eblong.com/zarf/ftp/Heliopause.zblorb'\n ], */\n /* [\n 'Human Errors',\n 'https://ifdb.org/viewgame?id=14oexa2wyym73glu',\n 'TWINE'\n ], */\n [\n 'Inside the Facility',\n 'https://ifdb.org/viewgame?id=stsdri5zh7a4i5my',\n 'https://ifarchive.org/if-archive/games/competition2016/Inside%20the%20Facility/Facility.z8',\n ],\n /* [\n 'Junior Arithmancer',\n 'https://ifdb.org/viewgame?id=pw1rbjt1t4n4n87s',\n 'https://ifarchive.org/if-archive/games/competition2018/Junior%20Arithmancer/Junior_Arithmancer.gblorb',\n ], */\n [\n 'Make It Good',\n 'https://ifdb.org/viewgame?id=jdrbw1htq4ah8q57',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/MakeItGood.z8',\n ],\n [\n 'Sub Rosa',\n 'https://ifdb.org/viewgame?id=73nvz9yui87ub3sd',\n 'https://mirror.ifarchive.org/if-archive/games/glulx/Sub_Rosa.gblorb',\n ],\n [\n 'Suveh Nux',\n 'https://ifdb.org/viewgame?id=xkai23ry99qdxce3',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/suvehnux.z5',\n ],\n /* [\n 'their angelical understanding',\n 'https://ifdb.org/viewgame?id=zpmfvbgolvfwbid',\n 'TWINE'\n ], */\n /* [\n 'Toby\\'s Nose',\n 'https://ifdb.org/viewgame?id=xf5y04yekcrqtnc',\n 'CORS https://www.castleprincessdragon.com/InteractiveFiction/TobysNose/Toby\\'s%20Nose.gblorb'\n ], */\n [\n 'Varicella',\n 'https://ifdb.org/viewgame?id=ywwlr3tpxnktjasd',\n 'https://mirror.ifarchive.org/if-archive/games/zcode/vgame.z8',\n ],\n].map(([name, ifdb, url]) => ({ name, ifdb, url }))\n",".games {\n .tutorial {\n margin-block: 64px;\n }\n\n h4 {\n margin: 0;\n }\n\n li {\n margin-bottom: 1em;\n }\n}\n","import { Link } from 'wouter-preact'\n\nimport * as s from './ThemesView.module.scss'\n\nconst Preview = (themeEngine, theme) =>\n
\n
\n
\n > look\n
\n

\n
\n {theme}\n
\n
\n Observe a vibrant demonstration of colors at work,\n showcasing their versatile usage right before your eyes.\n
\n

\n
\n \n
\n\nexport default function ThemesView ({ themeEngine }) {\n const themes = themeEngine\n .themes\n .map((theme) => Preview(themeEngine, theme))\n\n return (\n
\n

\n Themes Page\n

\n\n

\n Choose one or \n go back.\n

\n\n
\n

\n Current Theme\n

\n
\n
\n > look\n
\n

\n
\n Selected: {themeEngine.currentTheme}\n
\n
\n You can set random one with the button below\n or choose any theme from the list.\n
\n

\n
\n \n
\n\n

\n Theme List\n

\n
\n {themes}\n
\n
\n )\n}\n",".themes {\n --current-border: var(--main-color);\n\n .themePreview {\n border: 2px solid var(--current-border);\n padding: calc(2 * var(--inner-padding));\n margin-bottom: 32px;\n\n background-color: var(--bg-color);\n color: var(--main-color);\n\n &.current {\n padding: 0;\n border: none;\n margin-block: 64px;\n }\n\n .output {\n border: 2px solid var(--main-color);\n padding: var(--inner-padding);\n margin-bottom: 8px;\n\n .message.subheader {\n font-weight: bold;\n color: var(--accent-color);\n text-transform: capitalize;\n }\n\n .message.input {\n color: var(--input-color);\n }\n }\n\n button {\n width: 100%;\n }\n }\n}\n","import { useState, useEffect } from 'preact/hooks'\n\nimport UrlPlayer from '~/src/components/Player/UrlPlayer'\nimport MenuOverlay from '~/src/components/Player/MenuOverlay/MenuOverlay'\n\nconst decode = (encodedUrl) => decodeURIComponent(encodedUrl)\n\nexport default function PlayerView ({\n theme, themeEngine, encodedUrl, singleWindow,\n}) {\n useEffect(() => {\n themeEngine.setTheme(theme)\n }, [theme, themeEngine])\n\n const [targetUrl, setTargetUrl] = useState(decode(encodedUrl))\n\n useEffect(() => {\n setTargetUrl(decode(encodedUrl))\n }, [encodedUrl])\n\n const [menuOpen, setMenuOpen] = useState(false)\n\n const onFullscreenRequest = () => {\n document.documentElement.requestFullscreen()\n }\n\n return (\n
\n \n \n
\n )\n}\n","import { useState, useEffect } from 'preact/hooks'\n\nimport { engineByFilename } from './common/engines'\n\nimport Player from './Player'\nimport Status from './Status/Status'\n\nconst INITIAL_STATUS = {\n stage: 'loading',\n details: ['Loading'],\n}\n\nconst prepareVM = ({ url, setStatus, setParts }) => {\n const st = (stage, details) => (args) => {\n setStatus({ stage, details: [details] })\n return args\n }\n\n const cleanUrl = (url) =>\n url.startsWith('blob:')\n ? url.replace(/#(.*)$/g, '')\n : url\n\n const fetchWasm = (wasmBinaryName) =>\n fetch(wasmBinaryName)\n .then((response) => response.arrayBuffer())\n\n const checkResponse = (response) => {\n if (response.ok) return response\n throw new Error(response.statusText)\n }\n\n return Promise.resolve(url)\n .then(st('loading', 'Downloading file'))\n .then(cleanUrl)\n .then(fetch)\n .then(checkResponse)\n .then(st('loading', 'Processing file'))\n .then((response) => response.arrayBuffer())\n .then((arrayBuffer) => new Uint8Array(arrayBuffer))\n .then(st('loading', 'Downloading engine'))\n .then((storyfile) => {\n let parts = engineByFilename(url)\n return [storyfile, parts.engine, parts.wasmBinaryName]\n })\n .then(([storyfile, engine, wasmBinaryName]) => Promise.all([\n storyfile, engine, fetchWasm(wasmBinaryName),\n ]))\n .then(([storyfile, engine, wasmBinary]) => setParts({\n storyfile, engine, wasmBinary,\n }))\n .then(st('loading', 'Running'))\n .catch((e) => {\n console.error(e)\n setStatus({ stage: 'fail', details: [e.message, url] })\n })\n}\n\nexport default function UrlPlayer ({\n url, singleWindow, onFullscreenRequest, setMenuOpen,\n}) {\n const [status, setStatus] = useState(INITIAL_STATUS)\n const [vmParts, setParts] = useState(null)\n\n useEffect(() => {\n setStatus(INITIAL_STATUS)\n setParts(null)\n\n prepareVM({ url, setStatus, setParts })\n\n return () => setParts(null)\n }, [url])\n\n return vmParts\n ? ()\n : ()\n}\n","import bocfel from 'emglken/src/bocfel.js'\nimport git from 'emglken/src/git.js'\nimport hugo from 'emglken/src/hugo.js'\nimport tads from 'emglken/src/tads.js'\nimport scare from 'emglken/src/scare.js'\n\nconst formats = [\n {\n id: 'bocfel',\n extensions: /z([3458]|blorb)$/,\n engine: bocfel,\n },\n {\n id: 'git',\n extensions: /(gblorb|ulx)$/,\n engine: git,\n },\n {\n id: 'hugo',\n extensions: /hex$/,\n engine: hugo,\n },\n {\n id: 'scare',\n extensions: /taf$/,\n engine: scare,\n },\n {\n id: 'tads',\n extensions: /(gam|t3)$/,\n engine: tads,\n },\n]\n\nexport const engineByFilename = (filename) => {\n const format = formats.find((x) =>\n x.extensions.test(filename))\n\n if (format) {\n return {\n ...format,\n /* @see staticFiles in package.json */\n wasmBinaryName: `emglken/${format.id}-core.wasm`,\n }\n }\n throw new Error('Unsupported file type')\n}\n","/*\n\nEmglken port of Bocfel\n======================\n\nCopyright (c) 2021 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nimport EmglkenVM from './vm.js'\nimport BocfelCore from '../build/bocfel-core.js'\n\nexport default class Bocfel extends EmglkenVM\n{\n default_options()\n {\n return {\n vmcore: BocfelCore,\n }\n }\n}","/*\n\nEmglken VM\n==========\n\nCopyright (c) 2022 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nimport EmglkenFS from './emglkenfs.js'\n\nconst base_options = {\n arguments: ['storyfile'],\n}\n\nexport default class EmglkenVM\n{\n // Store the data and options\n init(data, options)\n {\n this.data = data\n this.options = Object.assign({}, base_options, this.default_options(), options)\n }\n\n // Start GlkOte and the vmcore\n async start()\n {\n const encoder = new TextEncoder()\n let buffer = ''\n\n const Module = {\n arguments: this.options.show_help ? ['-help'] : this.options.arguments,\n emglken_stdin_buffers: [],\n emglken_stdin_ready() {},\n // Fake locateFile so that Lectrote doesn't get tripped up on import.meta.url not being handled in CJS properly\n locateFile() {},\n print: data =>\n {\n if (buffer === '' && data !== '' && !data.startsWith('{'))\n {\n console.log(data)\n }\n else\n {\n buffer += data\n if (data.endsWith('}'))\n {\n let obj\n try { obj = JSON.parse(buffer) } catch (e) {}\n if (obj) {\n buffer = ''\n // Store the usage of a fileref prompt request\n if (obj.specialinput && obj.specialinput.type === 'fileref_prompt')\n {\n this.last_fr_usage = obj.specialinput.filetype\n }\n this.options.GlkOte.update(obj)\n }\n }\n }\n },\n preRun: () =>\n {\n const FS = Module.FS\n this.EFS = new EmglkenFS(this)\n FS.mkdir('/emglken')\n FS.mount(this.EFS, {}, '/emglken')\n FS.chdir('/emglken')\n },\n wasmBinary: this.options.wasmBinary,\n }\n this.Module = Module\n\n this.options.accept = data => {\n if (data.type === 'specialresponse' && data.response === 'fileref_prompt' && data.value)\n {\n // electrofs.js returns a full path, so register it with EmglkenFS, and return a fake filename\n if (this.EFS.streaming)\n {\n data.value = this.EFS.register_filename(data.value.filename, this.last_fr_usage)\n }\n // Convert a dialog.js provided fileref into something Remglk can understand\n else\n {\n data.value = data.value.filename\n }\n }\n\n const json_data = JSON.stringify(data)\n const buffer = encoder.encode(json_data)\n Module.emglken_stdin_buffers.push(buffer)\n Module.emglken_stdin_ready()\n }\n\n await this.options.vmcore(Module)\n this.options.GlkOte.init(this.options)\n }\n}","/*\n\nEmglken File System\n===================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nconst DIR_MODE = 16895 // 040777\nconst FILE_MODE = 33206 // 100666\nconst SEEK_SET = 0\nconst SEEK_CUR = 1\nconst SEEK_END = 2\n\n// WASI error codes\n// See https://github.com/WebAssembly/wasi-libc/blob/master/libc-bottom-half/headers/public/wasi/api.h\nconst EINVAL = 28\nconst ENOENT = 44\n\n// Convert Linux flags to Glk flags\nconst filemode_Write = 1\nconst filemode_Read = 2\nconst filemode_ReadWrite = 3\nconst filemode_WriteAppend = 5\nfunction convert_flags(flags)\n{\n // O_APPEND => filemode_WriteAppend\n if (flags & 0x400)\n {\n return filemode_WriteAppend\n }\n // O_WRONLY => filemode_Write\n if (flags & 1)\n {\n return filemode_Write\n }\n // O_RDWR => filemode_ReadWrite\n if (flags & 2)\n {\n return filemode_ReadWrite\n }\n // O_RDONLY => filemode_Read\n return filemode_Read\n}\n\nexport default class EmglkenFS\n{\n constructor(VM)\n {\n this.dialog = VM.options.Dialog\n this.streaming = this.dialog.streaming\n this.FS = VM.Module.FS\n this.VM = VM\n\n this.filename_map = {}\n this.filename_counter = 0\n }\n\n close(stream)\n {\n if (stream.name === 'storyfile')\n {}\n else\n {\n if (this.streaming)\n {\n stream.fstream.fclose()\n }\n else\n {\n if (stream.fmode !== filemode_Read)\n {\n this.dialog.file_write(stream.fref, stream.data)\n }\n }\n }\n }\n\n createNode(parent, name, mode/*, dev*/)\n {\n const FS = this.FS\n if (!FS.isDir(mode) && !FS.isFile(mode))\n {\n throw new FS.ErrnoError(EINVAL)\n }\n const node = FS.createNode(parent, name, mode)\n node.node_ops = this\n node.stream_ops = this\n node.timestamp = Date.now()\n return node\n }\n\n getattr(node)\n {\n // At present only the size of the storyfile will be returned, as needed by Bocfel\n const size = node.name === 'storyfile' ? this.VM.data.length : 0\n\n // Not sure what to return here, so only return stuff some of it\n return {\n atime: new Date(node.timestamp),\n ctime: new Date(node.timestamp),\n dev: 1,\n gid: 0,\n ino: node.id,\n mode: node.mode,\n mtime: new Date(node.timestamp),\n nlink: 1,\n rdev: node.rdev,\n size,\n uid: 0,\n }\n }\n\n // Get a Dialog ref for non-streaming Dialogs\n get_dialog_ref(filename)\n {\n let [name, usage] = filename.split('.')\n\n // RemGlk sends usages starting with 'glk', but Dialog wants them without\n usage = usage.replace('glk', '')\n\n // Retrieve the game ID if opening a savefile\n let gameid = ''\n if (usage === 'save')\n {\n gameid = this.VM.Module.AsciiToString(this.VM.Module._gidispatch_get_game_id())\n }\n\n return this.dialog.file_construct_ref(name, usage, gameid)\n }\n\n llseek(stream, offset, whence)\n {\n let position = offset\n if (whence === SEEK_CUR)\n {\n position += stream.position\n }\n else if (whence === SEEK_END)\n {\n if (stream.name === 'storyfile')\n {\n position += stream.data.length\n }\n else\n {\n if (this.streaming)\n {\n const curpos = stream.fstream.ftell()\n stream.fstream.fseek(0, SEEK_END)\n position += stream.fstream.ftell()\n stream.fstream.fseek(curpos, SEEK_SET)\n }\n else\n {\n position += stream.data.length\n }\n }\n }\n if (position < 0)\n {\n throw new this.FS.ErrnoError(EINVAL)\n }\n return position\n }\n\n lookup(parent, name)\n {\n if (name !== 'storyfile')\n {\n const realname = this.filename_map[name] || name\n if (!this.dialog.file_ref_exists(this.streaming ? {filename: realname} : this.get_dialog_ref(realname)))\n {\n throw new this.FS.ErrnoError(ENOENT)\n }\n }\n return this.createNode(parent, name, FILE_MODE)\n }\n\n mknod(parent, name, mode/*, dev*/)\n {\n return this.createNode(parent, name, mode)\n }\n\n mmap()\n {\n throw new Error('EmglkenFS.mmap')\n }\n\n mount()\n {\n return this.createNode(null, '/', DIR_MODE, 0)\n }\n\n msync()\n {\n throw new Error('EmglkenFS.msync')\n }\n\n open(stream)\n {\n stream.name = stream.node.name\n if (stream.name === 'storyfile')\n {\n stream.data = this.VM.data\n }\n else\n {\n const fmode = convert_flags(stream.flags)\n const realname = this.filename_map[stream.name] || stream.name\n if (this.streaming)\n {\n stream.fstream = this.dialog.file_fopen(fmode, {filename: realname})\n }\n else\n {\n stream.fref = this.get_dialog_ref(realname)\n stream.fmode = fmode\n\n // Read the content if not overwriting\n stream.data = null\n if (fmode !== filemode_Write)\n {\n stream.data = this.dialog.file_read(stream.fref)\n }\n\n // If no file and not reading, create a blank file\n if (stream.data == null) {\n stream.data = new Uint8Array(0)\n if (fmode !== filemode_Read)\n {\n this.dialog.file_write(stream.fref, '', true)\n }\n }\n //stream.position = fmode === filemode_WriteAppend ? data.length : 0\n }\n }\n }\n\n read(stream, buffer, offset, length, position)\n {\n if (length === 0)\n {\n return 0\n }\n if (stream.name === 'storyfile')\n {\n const size = Math.min(stream.data.length - position, length)\n buffer.set(stream.data.subarray(position, position + size), offset)\n return size\n }\n else\n {\n if (this.streaming)\n {\n stream.fstream.fseek(position, SEEK_SET)\n const buf = stream.fstream.BufferClass.from(buffer.buffer, offset, length)\n return stream.fstream.fread(buf, length)\n }\n else\n {\n const size = Math.min(stream.data.length - position, length)\n buffer.set(stream.data.subarray(position, position + size), offset)\n return size\n }\n }\n }\n\n readdir()\n {\n throw new Error('EmglkenFS.readdir')\n }\n\n readlink()\n {\n throw new this.FS.ErrnoError(EINVAL)\n }\n\n // electrofs.js will give a full system path, which we can't handle. So store the full path and return a fake file name\n register_filename(filename, usage)\n {\n const suffix = usage === 'save' ? '.glksave' : (usage === 'data' ? '.glkdata' : '.txt')\n if (!/\\.(glkdata|glksave|txt)$/.test(filename))\n {\n filename = filename + suffix\n }\n\n if (this.filename_map[filename])\n {\n return this.filename_map[filename]\n }\n\n const fakename = 'emglken_fake_file_' + this.filename_counter++\n this.filename_map[filename] = fakename\n this.filename_map[fakename + suffix] = filename\n return fakename\n }\n\n rename()\n {\n throw new Error('EmglkenFS.rename')\n }\n\n rmdir()\n {\n throw new Error('EmglkenFS.rmdir')\n }\n\n setattr(/*node, attr*/)\n {\n // I don't think we need to do anything here?\n // Maybe truncate a file?\n }\n\n symlink()\n {\n throw new Error('EmglkenFS.symlink')\n }\n\n unlink(parent, name)\n {\n const realname = this.filename_map[name] || name\n this.dialog.file_remove_ref(this.get_dialog_ref(realname))\n }\n\n write(stream, buffer, offset, length, position)\n {\n if (stream.name === 'storyfile')\n {\n throw new Error('EmglkenFS.write: cannot write to storyfile')\n }\n if (this.streaming)\n {\n stream.fstream.fseek(position, SEEK_SET)\n const buf = stream.fstream.BufferClass.from(buffer).subarray(offset, offset + length)\n return stream.fstream.fwrite(buf, length)\n }\n else\n {\n position = position || stream.position\n const end_of_write = length + position\n if (end_of_write > stream.data.length)\n {\n const old_data = stream.data\n stream.data = new Uint8Array(end_of_write)\n stream.data.set(old_data)\n }\n stream.data.set(buffer.subarray(offset, offset + length), position)\n return length\n }\n }\n}","\nvar Module = (() => {\n var _scriptDir = import.meta.url;\n \n return (\nfunction(Module = {}) {\n\nvar Module = typeof Module != \"undefined\" ? Module : {};\n\nvar readyPromiseResolve, readyPromiseReject;\n\nModule[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n});\n\nvar moduleOverrides = Object.assign({}, Module);\n\nvar arguments_ = [];\n\nvar thisProgram = \"./this.program\";\n\nvar quit_ = (status, toThrow) => {\n throw toThrow;\n};\n\nvar ENVIRONMENT_IS_WEB = true;\n\nvar ENVIRONMENT_IS_WORKER = false;\n\nvar scriptDirectory = \"\";\n\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n}\n\nvar read_, readAsync, readBinary, setWindowTitle;\n\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = title => document.title = title;\n} else {}\n\nvar out = Module[\"print\"] || console.log.bind(console);\n\nvar err = Module[\"printErr\"] || console.warn.bind(console);\n\nObject.assign(Module, moduleOverrides);\n\nmoduleOverrides = null;\n\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\n\nvar wasmBinary;\n\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\nvar noExitRuntime = Module[\"noExitRuntime\"] || false;\n\nif (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n}\n\nvar wasmMemory;\n\nvar ABORT = false;\n\nvar EXITSTATUS;\n\nfunction assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n}\n\nvar UTF8Decoder = new TextDecoder(\"utf8\");\n\nfunction UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n}\n\nfunction UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n}\n\nfunction stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n}\n\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\n\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n}\n\nvar HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n}\n\nvar wasmTable;\n\nvar __ATPRERUN__ = [];\n\nvar __ATINIT__ = [];\n\nvar __ATMAIN__ = [];\n\nvar __ATEXIT__ = [];\n\nvar __ATPOSTRUN__ = [];\n\nvar runtimeInitialized = false;\n\nvar runtimeExited = false;\n\nvar runtimeKeepaliveCounter = 0;\n\nfunction keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n}\n\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [ Module[\"preRun\"] ];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\n\nfunction initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n}\n\nfunction preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n}\n\nfunction exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n}\n\nfunction postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [ Module[\"postRun\"] ];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\n\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\n\nfunction addOnInit(cb) {\n __ATINIT__.unshift(cb);\n}\n\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\n\nvar runDependencies = 0;\n\nvar runDependencyWatcher = null;\n\nvar dependenciesFulfilled = null;\n\nfunction getUniqueRunDependency(id) {\n return id;\n}\n\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n}\n\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\n\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n}\n\nvar dataURIPrefix = \"data:application/octet-stream;base64,\";\n\nfunction isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n}\n\nvar wasmBinaryFile;\n\nif (Module[\"locateFile\"]) {\n wasmBinaryFile = \"bocfel-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n} else {\n wasmBinaryFile = new URL(\"bocfel-core.wasm\", import.meta.url).href;\n}\n\nfunction getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n}\n\nfunction getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n}\n\nfunction instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n}\n\nfunction instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n } else {\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n}\n\nfunction createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"da\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"na\"];\n addOnInit(Module[\"asm\"][\"ea\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n}\n\nvar tempDouble;\n\nvar tempI64;\n\nfunction __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async () => {\n if (!Module.emglken_stdin_buffers.length) {\n await new Promise(resolve => {\n Module.emglken_stdin_ready = resolve;\n });\n }\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) {\n HEAPU8.set(input, buffer);\n } else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n}\n\nfunction ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n}\n\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n}\n\nvar exceptionCaught = [];\n\nfunction exception_addRef(info) {\n info.add_ref();\n}\n\nvar uncaughtExceptionCount = 0;\n\nfunction ___cxa_begin_catch(ptr) {\n var info = new ExceptionInfo(ptr);\n if (!info.get_caught()) {\n info.set_caught(true);\n uncaughtExceptionCount--;\n }\n info.set_rethrown(false);\n exceptionCaught.push(info);\n exception_addRef(info);\n return info.get_exception_ptr();\n}\n\nvar exceptionLast = 0;\n\nfunction exception_decRef(info) {\n if (info.release_ref() && !info.get_rethrown()) {\n var destructor = info.get_destructor();\n if (destructor) {\n (a1 => dynCall_ii.apply(null, [ destructor, a1 ]))(info.excPtr);\n }\n ___cxa_free_exception(info.excPtr);\n }\n}\n\nfunction ___cxa_end_catch() {\n _setThrew(0);\n var info = exceptionCaught.pop();\n exception_decRef(info);\n exceptionLast = 0;\n}\n\nfunction ExceptionInfo(excPtr) {\n this.excPtr = excPtr;\n this.ptr = excPtr - 24;\n this.set_type = function(type) {\n HEAPU32[this.ptr + 4 >> 2] = type;\n };\n this.get_type = function() {\n return HEAPU32[this.ptr + 4 >> 2];\n };\n this.set_destructor = function(destructor) {\n HEAPU32[this.ptr + 8 >> 2] = destructor;\n };\n this.get_destructor = function() {\n return HEAPU32[this.ptr + 8 >> 2];\n };\n this.set_refcount = function(refcount) {\n HEAP32[this.ptr >> 2] = refcount;\n };\n this.set_caught = function(caught) {\n caught = caught ? 1 : 0;\n HEAP8[this.ptr + 12 >> 0] = caught;\n };\n this.get_caught = function() {\n return HEAP8[this.ptr + 12 >> 0] != 0;\n };\n this.set_rethrown = function(rethrown) {\n rethrown = rethrown ? 1 : 0;\n HEAP8[this.ptr + 13 >> 0] = rethrown;\n };\n this.get_rethrown = function() {\n return HEAP8[this.ptr + 13 >> 0] != 0;\n };\n this.init = function(type, destructor) {\n this.set_adjusted_ptr(0);\n this.set_type(type);\n this.set_destructor(destructor);\n this.set_refcount(0);\n this.set_caught(false);\n this.set_rethrown(false);\n };\n this.add_ref = function() {\n var value = HEAP32[this.ptr >> 2];\n HEAP32[this.ptr >> 2] = value + 1;\n };\n this.release_ref = function() {\n var prev = HEAP32[this.ptr >> 2];\n HEAP32[this.ptr >> 2] = prev - 1;\n return prev === 1;\n };\n this.set_adjusted_ptr = function(adjustedPtr) {\n HEAPU32[this.ptr + 16 >> 2] = adjustedPtr;\n };\n this.get_adjusted_ptr = function() {\n return HEAPU32[this.ptr + 16 >> 2];\n };\n this.get_exception_ptr = function() {\n var isPointer = ___cxa_is_pointer_type(this.get_type());\n if (isPointer) {\n return HEAPU32[this.excPtr >> 2];\n }\n var adjusted = this.get_adjusted_ptr();\n if (adjusted !== 0) return adjusted;\n return this.excPtr;\n };\n}\n\nfunction ___resumeException(ptr) {\n if (!exceptionLast) {\n exceptionLast = ptr;\n }\n throw ptr;\n}\n\nfunction ___cxa_find_matching_catch() {\n var thrown = exceptionLast;\n if (!thrown) {\n setTempRet0(0);\n return 0;\n }\n var info = new ExceptionInfo(thrown);\n info.set_adjusted_ptr(thrown);\n var thrownType = info.get_type();\n if (!thrownType) {\n setTempRet0(0);\n return thrown;\n }\n for (var i = 0; i < arguments.length; i++) {\n var caughtType = arguments[i];\n if (caughtType === 0 || caughtType === thrownType) {\n break;\n }\n var adjusted_ptr_addr = info.ptr + 16;\n if (___cxa_can_catch(caughtType, thrownType, adjusted_ptr_addr)) {\n setTempRet0(caughtType);\n return thrown;\n }\n }\n setTempRet0(thrownType);\n return thrown;\n}\n\nvar ___cxa_find_matching_catch_2 = ___cxa_find_matching_catch;\n\nvar ___cxa_find_matching_catch_3 = ___cxa_find_matching_catch;\n\nvar ___cxa_find_matching_catch_4 = ___cxa_find_matching_catch;\n\nvar ___cxa_find_matching_catch_5 = ___cxa_find_matching_catch;\n\nvar ___cxa_find_matching_catch_6 = ___cxa_find_matching_catch;\n\nvar ___cxa_find_matching_catch_7 = ___cxa_find_matching_catch;\n\nfunction ___cxa_rethrow() {\n var info = exceptionCaught.pop();\n if (!info) {\n abort(\"no exception to throw\");\n }\n var ptr = info.excPtr;\n if (!info.get_rethrown()) {\n exceptionCaught.push(info);\n info.set_rethrown(true);\n info.set_caught(false);\n uncaughtExceptionCount++;\n }\n exceptionLast = ptr;\n throw ptr;\n}\n\nfunction ___cxa_throw(ptr, type, destructor) {\n var info = new ExceptionInfo(ptr);\n info.init(type, destructor);\n exceptionLast = ptr;\n uncaughtExceptionCount++;\n throw ptr;\n}\n\nfunction ___cxa_uncaught_exceptions() {\n return uncaughtExceptionCount;\n}\n\nvar PATH = {\n isAbs: path => path.charAt(0) === \"/\",\n splitPath: filename => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (;up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n },\n normalize: path => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter(p => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: path => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: path => {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r) => {\n return PATH.normalize(l + \"/\" + r);\n }\n};\n\nfunction getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return () => {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return () => abort(\"randomDevice\");\n}\n\nvar PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(p => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to) => {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (;start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (;end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n};\n\nfunction intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n}\n\nvar TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n};\n\nfunction mmapAlloc(size) {\n abort();\n}\n\nvar MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [ \".\", \"..\" ];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n } else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n};\n\nfunction asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, arrayBuffer => {\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, event => {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n });\n if (dep) addRunDependency(dep);\n}\n\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {}) => {\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = path.split(\"/\").filter(p => !!p);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: node => {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name) => {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name) => {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev) => {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: node => {\n FS.hashRemoveNode(node);\n },\n isRoot: node => {\n return node === node.parent;\n },\n isMountpoint: node => {\n return !!node.mounted;\n },\n isFile: mode => {\n return (mode & 61440) === 32768;\n },\n isDir: mode => {\n return (mode & 61440) === 16384;\n },\n isLink: mode => {\n return (mode & 61440) === 40960;\n },\n isChrdev: mode => {\n return (mode & 61440) === 8192;\n },\n isBlkdev: mode => {\n return (mode & 61440) === 24576;\n },\n isFIFO: mode => {\n return (mode & 61440) === 4096;\n },\n isSocket: mode => {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: str => {\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n },\n flagsToPermissionString: flag => {\n var perms = [ \"r\", \"w\", \"rw\" ][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n },\n nodePermissions: (node, perms) => {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes(\"r\") && !(node.mode & 292)) {\n return 2;\n } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n return 2;\n } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n },\n mayLookup: dir => {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name) => {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir) => {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n },\n mayOpen: (node, flags) => {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => {\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n },\n getStream: fd => FS.streams[fd],\n createStream: (stream, fd_start, fd_end) => {\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: fd => {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: stream => {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: () => {\n throw new FS.ErrnoError(70);\n }\n },\n major: dev => dev >> 8,\n minor: dev => dev & 255,\n makedev: (ma, mi) => ma << 8 | mi,\n registerDevice: (dev, ops) => {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: dev => FS.devices[dev],\n getMounts: mount => {\n var mounts = [];\n var check = [ mount ];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback) => {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(mount => {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint) => {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n },\n unmount: mountpoint => {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(hash => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name) => {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev) => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode) => {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode) => {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode) => {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev) => {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath) => {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path) => {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n },\n rmdir: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n },\n unlink: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: path => {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow) => {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n },\n lstat: path => {\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode) => {\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid) => {\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len) => {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime) => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode) => {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path == \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512 && !created) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n }\n }\n return stream;\n },\n close: stream => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: stream => {\n return stream.fd === null;\n },\n llseek: (stream, offset, whence) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags) => {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags) => {\n if (!stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: stream => 0,\n ioctl: (stream, cmd, arg) => {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {}) => {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {}) => {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n },\n cwd: () => FS.currentPath,\n chdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: () => {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: () => {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: () => 0,\n write: (stream, buffer, offset, length, pos) => length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: () => {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: () => {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: (parent, name) => {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: () => stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: () => {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: () => {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [ 44 ].forEach(code => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: () => {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error) => {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: () => {\n FS.init.initialized = false;\n _fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink) => {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink) => {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite) => {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn) => {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: stream => {\n stream.seekable = false;\n },\n close: stream => {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: (stream, buffer, offset, length, pos) => {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos) => {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: obj => {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n },\n createLazyFile: (parent, name, url, canRead, canWrite) => {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to) => {\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n }\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter(chunkNum => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(key => {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => {\n if (onerror) onerror();\n removeRunDependency(dep);\n })) {\n return;\n }\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n asyncLoad(url, byteArray => processData(byteArray), onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: () => {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: () => {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = () => {\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = () => {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var getRequest = files.get(path);\n getRequest.onsuccess = () => {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n};\n\nvar SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (flags & 2) {\n return 0;\n }\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n};\n\nfunction ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & ~7) {\n return -28;\n }\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) {\n return -44;\n }\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n}\n\nfunction ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n }\n\n case 1:\n case 2:\n return 0;\n\n case 3:\n return stream.flags;\n\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n\n case 5:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n\n case 6:\n case 7:\n return 0;\n\n case 16:\n case 8:\n return -28;\n\n case 9:\n setErrNo(28);\n return -1;\n\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n case 21505:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21519:\n {\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n\n case 21520:\n {\n if (!stream.tty) return -59;\n return -28;\n }\n\n case 21531:\n {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n\n case 21523:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21524:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nvar nowIsMonotonic = true;\n\nfunction __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n}\n\nfunction readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n}\n\nfunction __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nvar __MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ];\n\nvar __MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ];\n\nfunction __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n}\n\nfunction __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n}\n\nfunction allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n}\n\nfunction _abort() {\n abort(\"\");\n}\n\nfunction _emscripten_date_now() {\n return Date.now();\n}\n\nvar _emscripten_get_now;\n\n_emscripten_get_now = () => performance.now();\n\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n}\n\nfunction getHeapMax() {\n return 2147483648;\n}\n\nfunction emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n}\n\nfunction _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n}\n\nvar ENV = {};\n\nfunction getExecutableName() {\n return thisProgram || \"./this.program\";\n}\n\nfunction getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": lang,\n \"_\": getExecutableName()\n };\n for (var x in ENV) {\n if (ENV[x] === undefined) delete env[x]; else env[x] = ENV[x];\n }\n var strings = [];\n for (var x in env) {\n strings.push(x + \"=\" + env[x]);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n}\n\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n}\n\nfunction _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function(string, i) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n}\n\nfunction _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function(string) {\n bufSize += string.length + 1;\n });\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n}\n\nfunction _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n}\n\nfunction exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) {\n exitRuntime();\n }\n _proc_exit(status);\n}\n\nvar _exit = exitJS;\n\nfunction _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n}\n\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction _llvm_eh_typeid_for(type) {\n return type;\n}\n\nfunction __arraySum(array, index) {\n var sum = 0;\n for (var i = 0; i <= index; sum += array[i++]) {}\n return sum;\n}\n\nvar __MONTH_DAYS_LEAP = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nvar __MONTH_DAYS_REGULAR = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nfunction __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while (days > 0) {\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) {\n newDate.setMonth(currentMonth + 1);\n } else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n}\n\nfunction writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n}\n\nfunction _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\"\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for (var rule in EXPANSION_RULES_1) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n }\n var WEEKDAYS = [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ];\n var MONTHS = [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ];\n function leadingSomething(value, digits, character) {\n var str = typeof value == \"number\" ? value.toString() : value || \"\";\n while (str.length < digits) {\n str = character[0] + str;\n }\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {\n compare = sgn(date1.getDate() - date2.getDate());\n }\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch (janFourth.getDay()) {\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n\n case 1:\n return janFourth;\n\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {\n return thisDate.getFullYear() + 1;\n }\n return thisDate.getFullYear();\n }\n return thisDate.getFullYear() - 1;\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function(date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function(date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function(date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function(date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function(date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n \"%d\": function(date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function(date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function(date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function(date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function(date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function(date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function(date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n \"%m\": function(date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function(date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function() {\n return \"\\n\";\n },\n \"%p\": function(date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) {\n return \"AM\";\n }\n return \"PM\";\n },\n \"%S\": function(date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function() {\n return \"\\t\";\n },\n \"%u\": function(date) {\n return date.tm_wday || 7;\n },\n \"%U\": function(date) {\n var days = date.tm_yday + 7 - date.tm_wday;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%V\": function(date) {\n var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7);\n if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) {\n val++;\n }\n if (!val) {\n val = 52;\n var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;\n if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) {\n val++;\n }\n } else if (val == 53) {\n var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;\n if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1;\n }\n return leadingNulls(val, 2);\n },\n \"%w\": function(date) {\n return date.tm_wday;\n },\n \"%W\": function(date) {\n var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%y\": function(date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function(date) {\n return date.tm_year + 1900;\n },\n \"%z\": function(date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function(date) {\n return date.tm_zone;\n },\n \"%%\": function() {\n return \"%\";\n }\n };\n pattern = pattern.replace(/%%/g, \"\\0\\0\");\n for (var rule in EXPANSION_RULES_2) {\n if (pattern.includes(rule)) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_2[rule](date));\n }\n }\n pattern = pattern.replace(/\\0\\0/g, \"%\");\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) {\n return 0;\n }\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n}\n\nfunction _strftime_l(s, maxsize, format, tm, loc) {\n return _strftime(s, maxsize, format, tm);\n}\n\nfunction handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n}\n\nfunction allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n}\n\nfunction maybeExit() {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n}\n\nfunction callUserCallback(func) {\n if (runtimeExited || ABORT) {\n return;\n }\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n}\n\nfunction runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n}\n\nfunction runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n}\n\nvar Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [ \"invoke_*\", \"emscripten_sleep\", \"emscripten_wget\", \"emscripten_wget_data\", \"emscripten_idb_load\", \"emscripten_idb_store\", \"emscripten_idb_delete\", \"emscripten_idb_exists\", \"emscripten_idb_load_blob\", \"emscripten_idb_store_blob\", \"SDL_Delay\", \"emscripten_scan_registers\", \"emscripten_lazy_load_code\", \"emscripten_fiber_swap\", \"__load_secondary_module\", \"fd_sync\", \"__wasi_fd_sync\", \"_emval_await\", \"_dlopen_js\", \"__asyncjs__*\" ];\n for (var x in imports) {\n (function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") {\n var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n }\n })(x);\n }\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for (var x in exports) {\n (function(x) {\n var original = exports[x];\n if (typeof original == \"function\") {\n ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally {\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n } else {\n ret[x] = original;\n }\n })(x);\n }\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") {\n Fibers.trampoline();\n }\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject) => {\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0) => {\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) {\n return;\n }\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.resume();\n }\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) {\n throw asyncWasmReturnValue;\n }\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.pause();\n }\n runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach(func => callUserCallback(func));\n } else {\n abort(\"invalid state: \" + Asyncify.state);\n }\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep(wakeUp => {\n startAsync().then(wakeUp);\n });\n }\n};\n\nfunction AsciiToString(ptr) {\n var str = \"\";\n while (1) {\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n}\n\nvar FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n};\n\nvar readMode = 292 | 73;\n\nvar writeMode = 146;\n\nObject.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n});\n\nFS.FSNode = FSNode;\n\nFS.staticInit();\n\nvar wasmImports = {\n \"S\": __asyncjs__emglken_fill_stdin_buffer,\n \"k\": ___cxa_begin_catch,\n \"n\": ___cxa_end_catch,\n \"a\": ___cxa_find_matching_catch_2,\n \"d\": ___cxa_find_matching_catch_3,\n \"m\": ___cxa_find_matching_catch_4,\n \"s\": ___cxa_find_matching_catch_5,\n \"x\": ___cxa_find_matching_catch_6,\n \"ca\": ___cxa_find_matching_catch_7,\n \"K\": ___cxa_rethrow,\n \"o\": ___cxa_throw,\n \"ba\": ___cxa_uncaught_exceptions,\n \"g\": ___resumeException,\n \"aa\": ___syscall_faccessat,\n \"J\": ___syscall_fcntl64,\n \"$\": ___syscall_getcwd,\n \"_\": ___syscall_ioctl,\n \"Z\": ___syscall_openat,\n \"V\": __emscripten_get_now_is_monotonic,\n \"U\": __localtime_js,\n \"T\": __tzset_js,\n \"D\": _abort,\n \"B\": _emscripten_date_now,\n \"R\": _emscripten_memcpy_big,\n \"Q\": _emscripten_resize_heap,\n \"Y\": _environ_get,\n \"X\": _environ_sizes_get,\n \"C\": _exit,\n \"I\": _fd_close,\n \"W\": _fd_read,\n \"P\": _fd_seek,\n \"H\": _fd_write,\n \"G\": invoke_diii,\n \"F\": invoke_fiii,\n \"q\": invoke_i,\n \"b\": invoke_ii,\n \"c\": invoke_iii,\n \"e\": invoke_iiii,\n \"p\": invoke_iiiii,\n \"u\": invoke_iiiiii,\n \"w\": invoke_iiiiiii,\n \"E\": invoke_iiiiiiii,\n \"A\": invoke_iiiiiiiiiiii,\n \"O\": invoke_ji,\n \"N\": invoke_jiiii,\n \"h\": invoke_v,\n \"i\": invoke_vi,\n \"f\": invoke_vii,\n \"j\": invoke_viii,\n \"r\": invoke_viiii,\n \"t\": invoke_viiiii,\n \"v\": invoke_viiiiiii,\n \"y\": invoke_viiiiiiiiii,\n \"z\": invoke_viiiiiiiiiiiiiii,\n \"l\": _llvm_eh_typeid_for,\n \"M\": _strftime,\n \"L\": _strftime_l\n};\n\nvar asm = createWasm();\n\nvar ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"ea\"]).apply(null, arguments);\n};\n\nvar ___cxa_free_exception = function() {\n return (___cxa_free_exception = Module[\"asm\"][\"fa\"]).apply(null, arguments);\n};\n\nvar _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"ga\"]).apply(null, arguments);\n};\n\nvar ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"ha\"]).apply(null, arguments);\n};\n\nvar _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"ia\"]).apply(null, arguments);\n};\n\nvar _malloc = function() {\n return (_malloc = Module[\"asm\"][\"ja\"]).apply(null, arguments);\n};\n\nvar _free = function() {\n return (_free = Module[\"asm\"][\"ka\"]).apply(null, arguments);\n};\n\nvar _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"la\"]).apply(null, arguments);\n};\n\nvar ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"ma\"]).apply(null, arguments);\n};\n\nvar _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"oa\"]).apply(null, arguments);\n};\n\nvar setTempRet0 = function() {\n return (setTempRet0 = Module[\"asm\"][\"pa\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n};\n\nvar stackSave = function() {\n return (stackSave = Module[\"asm\"][\"qa\"]).apply(null, arguments);\n};\n\nvar stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"ra\"]).apply(null, arguments);\n};\n\nvar stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"sa\"]).apply(null, arguments);\n};\n\nvar ___cxa_can_catch = function() {\n return (___cxa_can_catch = Module[\"asm\"][\"ta\"]).apply(null, arguments);\n};\n\nvar ___cxa_is_pointer_type = function() {\n return (___cxa_is_pointer_type = Module[\"asm\"][\"ua\"]).apply(null, arguments);\n};\n\nvar dynCall_ii = Module[\"dynCall_ii\"] = function() {\n return (dynCall_ii = Module[\"dynCall_ii\"] = Module[\"asm\"][\"va\"]).apply(null, arguments);\n};\n\nvar dynCall_iiii = Module[\"dynCall_iiii\"] = function() {\n return (dynCall_iiii = Module[\"dynCall_iiii\"] = Module[\"asm\"][\"wa\"]).apply(null, arguments);\n};\n\nvar dynCall_viii = Module[\"dynCall_viii\"] = function() {\n return (dynCall_viii = Module[\"dynCall_viii\"] = Module[\"asm\"][\"xa\"]).apply(null, arguments);\n};\n\nvar dynCall_v = Module[\"dynCall_v\"] = function() {\n return (dynCall_v = Module[\"dynCall_v\"] = Module[\"asm\"][\"ya\"]).apply(null, arguments);\n};\n\nvar dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"za\"]).apply(null, arguments);\n};\n\nvar dynCall_iii = Module[\"dynCall_iii\"] = function() {\n return (dynCall_iii = Module[\"dynCall_iii\"] = Module[\"asm\"][\"Aa\"]).apply(null, arguments);\n};\n\nvar dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"Ba\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = function() {\n return (dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = Module[\"asm\"][\"Ca\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() {\n return (dynCall_iiiii = Module[\"dynCall_iiiii\"] = Module[\"asm\"][\"Da\"]).apply(null, arguments);\n};\n\nvar dynCall_i = Module[\"dynCall_i\"] = function() {\n return (dynCall_i = Module[\"dynCall_i\"] = Module[\"asm\"][\"Ea\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = function() {\n return (dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = Module[\"asm\"][\"Fa\"]).apply(null, arguments);\n};\n\nvar dynCall_viiii = Module[\"dynCall_viiii\"] = function() {\n return (dynCall_viiii = Module[\"dynCall_viiii\"] = Module[\"asm\"][\"Ga\"]).apply(null, arguments);\n};\n\nvar dynCall_ji = Module[\"dynCall_ji\"] = function() {\n return (dynCall_ji = Module[\"dynCall_ji\"] = Module[\"asm\"][\"Ha\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiii = Module[\"dynCall_viiiii\"] = function() {\n return (dynCall_viiiii = Module[\"dynCall_viiiii\"] = Module[\"asm\"][\"Ia\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = function() {\n return (dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = Module[\"asm\"][\"Ja\"]).apply(null, arguments);\n};\n\nvar dynCall_jiiii = Module[\"dynCall_jiiii\"] = function() {\n return (dynCall_jiiii = Module[\"dynCall_jiiii\"] = Module[\"asm\"][\"Ka\"]).apply(null, arguments);\n};\n\nvar dynCall_fiii = Module[\"dynCall_fiii\"] = function() {\n return (dynCall_fiii = Module[\"dynCall_fiii\"] = Module[\"asm\"][\"La\"]).apply(null, arguments);\n};\n\nvar dynCall_diii = Module[\"dynCall_diii\"] = function() {\n return (dynCall_diii = Module[\"dynCall_diii\"] = Module[\"asm\"][\"Ma\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = function() {\n return (dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = Module[\"asm\"][\"Na\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = Module[\"asm\"][\"Oa\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiiiiii = Module[\"dynCall_viiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiii = Module[\"dynCall_viiiiiiiiii\"] = Module[\"asm\"][\"Pa\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Qa\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"Ra\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"Sa\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"Ta\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"Ua\"]).apply(null, arguments);\n};\n\nvar ___start_em_js = Module[\"___start_em_js\"] = 52440;\n\nvar ___stop_em_js = Module[\"___stop_em_js\"] = 55125;\n\nfunction invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iii(index, a1, a2) {\n var sp = stackSave();\n try {\n return dynCall_iii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n return dynCall_iiiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiii(index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n dynCall_viiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_fiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_fiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_diii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_diii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n dynCall_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_ji(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ji(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_jiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_jiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nModule[\"AsciiToString\"] = AsciiToString;\n\nModule[\"FS\"] = FS;\n\nvar calledRun;\n\ndependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n};\n\nfunction callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach(arg => {\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n}\n\nfunction run(args = arguments_) {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n}\n\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [ Module[\"preInit\"] ];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\n\nvar shouldRunNow = true;\n\nif (Module[\"noInitialRun\"]) shouldRunNow = false;\n\nrun();\n\n\n return Module.ready\n}\n\n);\n})();\nexport default Module;","module.exports = require('./helpers/bundle-url').getBundleURL('ejVIo') + require('./helpers/bundle-manifest').resolve(\"5EF4K\");","/*\n\nEmglken port of Git\n===================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nimport EmglkenVM from './vm.js'\nimport GitCore from '../build/git-core.js'\n\nexport default class Git extends EmglkenVM\n{\n default_options()\n {\n return {\n vmcore: GitCore,\n }\n }\n}","\nvar Module = (() => {\n var _scriptDir = import.meta.url;\n \n return (\nfunction(Module = {}) {\n\nvar Module = typeof Module != \"undefined\" ? Module : {};\n\nvar readyPromiseResolve, readyPromiseReject;\n\nModule[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n});\n\nvar moduleOverrides = Object.assign({}, Module);\n\nvar arguments_ = [];\n\nvar thisProgram = \"./this.program\";\n\nvar quit_ = (status, toThrow) => {\n throw toThrow;\n};\n\nvar ENVIRONMENT_IS_WEB = true;\n\nvar ENVIRONMENT_IS_WORKER = false;\n\nvar scriptDirectory = \"\";\n\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n}\n\nvar read_, readAsync, readBinary, setWindowTitle;\n\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = title => document.title = title;\n} else {}\n\nvar out = Module[\"print\"] || console.log.bind(console);\n\nvar err = Module[\"printErr\"] || console.warn.bind(console);\n\nObject.assign(Module, moduleOverrides);\n\nmoduleOverrides = null;\n\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\n\nvar wasmBinary;\n\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\nvar noExitRuntime = Module[\"noExitRuntime\"] || false;\n\nif (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n}\n\nvar wasmMemory;\n\nvar ABORT = false;\n\nvar EXITSTATUS;\n\nfunction assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n}\n\nvar UTF8Decoder = new TextDecoder(\"utf8\");\n\nfunction UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n}\n\nfunction UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n}\n\nfunction stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n}\n\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\n\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n}\n\nvar HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n}\n\nvar wasmTable;\n\nvar __ATPRERUN__ = [];\n\nvar __ATINIT__ = [];\n\nvar __ATMAIN__ = [];\n\nvar __ATEXIT__ = [];\n\nvar __ATPOSTRUN__ = [];\n\nvar runtimeInitialized = false;\n\nvar runtimeExited = false;\n\nvar runtimeKeepaliveCounter = 0;\n\nfunction keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n}\n\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [ Module[\"preRun\"] ];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\n\nfunction initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n}\n\nfunction preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n}\n\nfunction exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n}\n\nfunction postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [ Module[\"postRun\"] ];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\n\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\n\nfunction addOnInit(cb) {\n __ATINIT__.unshift(cb);\n}\n\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\n\nvar runDependencies = 0;\n\nvar runDependencyWatcher = null;\n\nvar dependenciesFulfilled = null;\n\nfunction getUniqueRunDependency(id) {\n return id;\n}\n\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n}\n\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\n\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n}\n\nvar dataURIPrefix = \"data:application/octet-stream;base64,\";\n\nfunction isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n}\n\nvar wasmBinaryFile;\n\nif (Module[\"locateFile\"]) {\n wasmBinaryFile = \"git-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n} else {\n wasmBinaryFile = new URL(\"git-core.wasm\", import.meta.url).href;\n}\n\nfunction getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n}\n\nfunction getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n}\n\nfunction instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n}\n\nfunction instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n } else {\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n}\n\nfunction createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"E\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"N\"];\n addOnInit(Module[\"asm\"][\"F\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n}\n\nvar tempDouble;\n\nvar tempI64;\n\nfunction emglken_common_buffer_transformer(buf, len, numchars, func, dont_reduce) {\n const index = buf >> 2;\n const utf32 = HEAPU32.subarray(index, index + numchars);\n const data = dont_reduce ? utf32 : utf32.reduce((prev, ch) => prev + String.fromCodePoint(ch), \"\");\n const new_str = func(data);\n const newbuf = Uint32Array.from(new_str, ch => ch.codePointAt(0));\n const newlen = newbuf.length;\n HEAPU32.set(newbuf.subarray(0, Math.min(len, newlen)), index);\n return newlen;\n}\n\nfunction glk_buffer_to_lower_case_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, str => str.toLowerCase());\n}\n\nfunction glk_buffer_to_upper_case_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, str => str.toUpperCase());\n}\n\nfunction glk_buffer_to_title_case_uni(buf, len, numchars, lowerrest) {\n return emglken_common_buffer_transformer(buf, len, numchars, utf32 => utf32.reduce((prev, ch, index) => {\n const special_cases = {\n \"ß\": \"Ss\",\n \"DŽ\": \"Dž\",\n \"Dž\": \"Dž\",\n \"dž\": \"Dž\",\n \"LJ\": \"Lj\",\n \"Lj\": \"Lj\",\n \"lj\": \"Lj\",\n \"NJ\": \"Nj\",\n \"Nj\": \"Nj\",\n \"nj\": \"Nj\",\n \"DZ\": \"Dz\",\n \"Dz\": \"Dz\",\n \"dz\": \"Dz\",\n \"և\": \"Եւ\",\n \"ᾲ\": \"Ὰͅ\",\n \"ᾳ\": \"ᾼ\",\n \"ᾴ\": \"Άͅ\",\n \"ᾷ\": \"ᾼ͂\",\n \"ᾼ\": \"ᾼ\",\n \"ῂ\": \"Ὴͅ\",\n \"ῃ\": \"ῌ\",\n \"ῄ\": \"Ήͅ\",\n \"ῇ\": \"ῌ͂\",\n \"ῌ\": \"ῌ\",\n \"ῲ\": \"Ὼͅ\",\n \"ῳ\": \"ῼ\",\n \"ῴ\": \"Ώͅ\",\n \"ῷ\": \"ῼ͂\",\n \"ῼ\": \"ῼ\",\n \"ff\": \"Ff\",\n \"fi\": \"Fi\",\n \"fl\": \"Fl\",\n \"ffi\": \"Ffi\",\n \"ffl\": \"Ffl\",\n \"ſt\": \"St\",\n \"st\": \"St\",\n \"ﬓ\": \"Մն\",\n \"ﬔ\": \"Մե\",\n \"ﬕ\": \"Մի\",\n \"ﬖ\": \"Վն\",\n \"ﬗ\": \"Մխ\"\n };\n const slightly_less_special_cases = [ \"ᾈᾉᾊᾋᾌᾍᾎᾏ\", \"ᾘᾙᾚᾛᾜᾝᾞᾟ\", \"ᾨᾩᾪᾫᾬᾭᾮᾯ\" ];\n let thischar = String.fromCodePoint(ch);\n if (index === 0) {\n if (special_cases[thischar]) {\n thischar = special_cases[thischar];\n } else if (ch >= 8064 && ch < 8112) {\n thischar = slightly_less_special_cases[(ch - 8064) / 16 | 0][ch % 8];\n } else {\n thischar = thischar.toUpperCase();\n }\n } else if (lowerrest) {\n thischar = thischar.toLowerCase();\n }\n return prev + thischar;\n }, \"\"), 1);\n}\n\nfunction glk_buffer_canon_decompose_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, str => str.normalize(\"NFD\"));\n}\n\nfunction glk_buffer_canon_normalize_uni(buf, len, numchars) {\n return emglken_common_buffer_transformer(buf, len, numchars, str => str.normalize(\"NFC\"));\n}\n\nfunction __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async () => {\n if (!Module.emglken_stdin_buffers.length) {\n await new Promise(resolve => {\n Module.emglken_stdin_ready = resolve;\n });\n }\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) {\n HEAPU8.set(input, buffer);\n } else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n}\n\nfunction ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n}\n\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n}\n\nvar PATH = {\n isAbs: path => path.charAt(0) === \"/\",\n splitPath: filename => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (;up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n },\n normalize: path => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter(p => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: path => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: path => {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r) => {\n return PATH.normalize(l + \"/\" + r);\n }\n};\n\nfunction getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return () => {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return () => abort(\"randomDevice\");\n}\n\nvar PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(p => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to) => {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (;start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (;end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n};\n\nfunction intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n}\n\nvar TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n};\n\nfunction mmapAlloc(size) {\n abort();\n}\n\nvar MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [ \".\", \"..\" ];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n } else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n};\n\nfunction asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, arrayBuffer => {\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, event => {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n });\n if (dep) addRunDependency(dep);\n}\n\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {}) => {\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = path.split(\"/\").filter(p => !!p);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: node => {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name) => {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name) => {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev) => {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: node => {\n FS.hashRemoveNode(node);\n },\n isRoot: node => {\n return node === node.parent;\n },\n isMountpoint: node => {\n return !!node.mounted;\n },\n isFile: mode => {\n return (mode & 61440) === 32768;\n },\n isDir: mode => {\n return (mode & 61440) === 16384;\n },\n isLink: mode => {\n return (mode & 61440) === 40960;\n },\n isChrdev: mode => {\n return (mode & 61440) === 8192;\n },\n isBlkdev: mode => {\n return (mode & 61440) === 24576;\n },\n isFIFO: mode => {\n return (mode & 61440) === 4096;\n },\n isSocket: mode => {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: str => {\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n },\n flagsToPermissionString: flag => {\n var perms = [ \"r\", \"w\", \"rw\" ][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n },\n nodePermissions: (node, perms) => {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes(\"r\") && !(node.mode & 292)) {\n return 2;\n } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n return 2;\n } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n },\n mayLookup: dir => {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name) => {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir) => {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n },\n mayOpen: (node, flags) => {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => {\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n },\n getStream: fd => FS.streams[fd],\n createStream: (stream, fd_start, fd_end) => {\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: fd => {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: stream => {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: () => {\n throw new FS.ErrnoError(70);\n }\n },\n major: dev => dev >> 8,\n minor: dev => dev & 255,\n makedev: (ma, mi) => ma << 8 | mi,\n registerDevice: (dev, ops) => {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: dev => FS.devices[dev],\n getMounts: mount => {\n var mounts = [];\n var check = [ mount ];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback) => {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(mount => {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint) => {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n },\n unmount: mountpoint => {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(hash => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name) => {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev) => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode) => {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode) => {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode) => {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev) => {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath) => {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path) => {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n },\n rmdir: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n },\n unlink: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: path => {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow) => {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n },\n lstat: path => {\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode) => {\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid) => {\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len) => {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime) => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode) => {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path == \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512 && !created) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n }\n }\n return stream;\n },\n close: stream => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: stream => {\n return stream.fd === null;\n },\n llseek: (stream, offset, whence) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags) => {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags) => {\n if (!stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: stream => 0,\n ioctl: (stream, cmd, arg) => {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {}) => {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {}) => {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n },\n cwd: () => FS.currentPath,\n chdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: () => {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: () => {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: () => 0,\n write: (stream, buffer, offset, length, pos) => length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: () => {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: () => {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: (parent, name) => {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: () => stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: () => {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: () => {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [ 44 ].forEach(code => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: () => {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error) => {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: () => {\n FS.init.initialized = false;\n _fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink) => {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink) => {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite) => {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn) => {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: stream => {\n stream.seekable = false;\n },\n close: stream => {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: (stream, buffer, offset, length, pos) => {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos) => {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: obj => {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n },\n createLazyFile: (parent, name, url, canRead, canWrite) => {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to) => {\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n }\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter(chunkNum => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(key => {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => {\n if (onerror) onerror();\n removeRunDependency(dep);\n })) {\n return;\n }\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n asyncLoad(url, byteArray => processData(byteArray), onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: () => {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: () => {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = () => {\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = () => {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var getRequest = files.get(path);\n getRequest.onsuccess = () => {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n};\n\nvar SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (flags & 2) {\n return 0;\n }\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n};\n\nfunction ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & ~7) {\n return -28;\n }\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) {\n return -44;\n }\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n}\n\nfunction ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n }\n\n case 1:\n case 2:\n return 0;\n\n case 3:\n return stream.flags;\n\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n\n case 5:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n\n case 6:\n case 7:\n return 0;\n\n case 16:\n case 8:\n return -28;\n\n case 9:\n setErrNo(28);\n return -1;\n\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n case 21505:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21519:\n {\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n\n case 21520:\n {\n if (!stream.tty) return -59;\n return -28;\n }\n\n case 21531:\n {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n\n case 21523:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21524:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_unlinkat(dirfd, path, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (flags === 0) {\n FS.unlink(path);\n } else if (flags === 512) {\n FS.rmdir(path);\n } else {\n abort(\"Invalid flags passed to unlinkat\");\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nvar nowIsMonotonic = true;\n\nfunction __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n}\n\nfunction __emscripten_throw_longjmp() {\n throw Infinity;\n}\n\nfunction readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n}\n\nfunction __gmtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getUTCSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getUTCHours();\n HEAP32[tmPtr + 12 >> 2] = date.getUTCDate();\n HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n}\n\nfunction __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nvar __MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ];\n\nvar __MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ];\n\nfunction __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n}\n\nfunction __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n}\n\nfunction __mktime_js(tmPtr) {\n var date = new Date(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0);\n var dst = HEAP32[tmPtr + 32 >> 2];\n var guessedOffset = date.getTimezoneOffset();\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dstOffset = Math.min(winterOffset, summerOffset);\n if (dst < 0) {\n HEAP32[tmPtr + 32 >> 2] = Number(summerOffset != winterOffset && dstOffset == guessedOffset);\n } else if (dst > 0 != (dstOffset == guessedOffset)) {\n var nonDstOffset = Math.max(winterOffset, summerOffset);\n var trueOffset = dst > 0 ? dstOffset : nonDstOffset;\n date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4);\n }\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getYear();\n return date.getTime() / 1e3 | 0;\n}\n\nfunction __timegm_js(tmPtr) {\n var time = Date.UTC(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0);\n var date = new Date(time);\n HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n return date.getTime() / 1e3 | 0;\n}\n\nfunction allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n}\n\nfunction _emscripten_date_now() {\n return Date.now();\n}\n\nvar _emscripten_get_now;\n\n_emscripten_get_now = () => performance.now();\n\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n}\n\nfunction getHeapMax() {\n return 2147483648;\n}\n\nfunction emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n}\n\nfunction _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n}\n\nfunction _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n}\n\nfunction exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) {\n exitRuntime();\n }\n _proc_exit(status);\n}\n\nvar _exit = exitJS;\n\nfunction _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n}\n\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n}\n\nfunction allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n}\n\nfunction maybeExit() {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n}\n\nfunction callUserCallback(func) {\n if (runtimeExited || ABORT) {\n return;\n }\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n}\n\nfunction runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n}\n\nfunction runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n}\n\nvar Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [ \"emscripten_sleep\", \"emscripten_wget\", \"emscripten_wget_data\", \"emscripten_idb_load\", \"emscripten_idb_store\", \"emscripten_idb_delete\", \"emscripten_idb_exists\", \"emscripten_idb_load_blob\", \"emscripten_idb_store_blob\", \"SDL_Delay\", \"emscripten_scan_registers\", \"emscripten_lazy_load_code\", \"emscripten_fiber_swap\", \"__load_secondary_module\", \"fd_sync\", \"__wasi_fd_sync\", \"_emval_await\", \"_dlopen_js\", \"__asyncjs__*\" ];\n for (var x in imports) {\n (function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") {\n var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n }\n })(x);\n }\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for (var x in exports) {\n (function(x) {\n var original = exports[x];\n if (typeof original == \"function\") {\n ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally {\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n } else {\n ret[x] = original;\n }\n })(x);\n }\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") {\n Fibers.trampoline();\n }\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject) => {\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0) => {\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) {\n return;\n }\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.resume();\n }\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) {\n throw asyncWasmReturnValue;\n }\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.pause();\n }\n runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach(func => callUserCallback(func));\n } else {\n abort(\"invalid state: \" + Asyncify.state);\n }\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep(wakeUp => {\n startAsync().then(wakeUp);\n });\n }\n};\n\nfunction AsciiToString(ptr) {\n var str = \"\";\n while (1) {\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n}\n\nvar FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n};\n\nvar readMode = 292 | 73;\n\nvar writeMode = 146;\n\nObject.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n});\n\nFS.FSNode = FSNode;\n\nFS.staticInit();\n\nvar wasmImports = {\n \"q\": __asyncjs__emglken_fill_stdin_buffer,\n \"D\": ___syscall_faccessat,\n \"l\": ___syscall_fcntl64,\n \"C\": ___syscall_getcwd,\n \"B\": ___syscall_ioctl,\n \"k\": ___syscall_openat,\n \"A\": ___syscall_stat64,\n \"z\": ___syscall_unlinkat,\n \"x\": __emscripten_get_now_is_monotonic,\n \"w\": __emscripten_throw_longjmp,\n \"v\": __gmtime_js,\n \"u\": __localtime_js,\n \"t\": __mktime_js,\n \"s\": __timegm_js,\n \"r\": __tzset_js,\n \"i\": _emscripten_date_now,\n \"p\": _emscripten_memcpy_big,\n \"o\": _emscripten_resize_heap,\n \"a\": _exit,\n \"c\": _fd_close,\n \"y\": _fd_read,\n \"m\": _fd_seek,\n \"j\": _fd_write,\n \"h\": glk_buffer_canon_decompose_uni,\n \"g\": glk_buffer_canon_normalize_uni,\n \"f\": glk_buffer_to_lower_case_uni,\n \"e\": glk_buffer_to_title_case_uni,\n \"d\": glk_buffer_to_upper_case_uni,\n \"n\": invoke_vi,\n \"b\": invoke_vii\n};\n\nvar asm = createWasm();\n\nvar ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"F\"]).apply(null, arguments);\n};\n\nvar _malloc = function() {\n return (_malloc = Module[\"asm\"][\"G\"]).apply(null, arguments);\n};\n\nvar _free = function() {\n return (_free = Module[\"asm\"][\"H\"]).apply(null, arguments);\n};\n\nvar _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"I\"]).apply(null, arguments);\n};\n\nvar _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"J\"]).apply(null, arguments);\n};\n\nvar _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"K\"]).apply(null, arguments);\n};\n\nvar ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"L\"]).apply(null, arguments);\n};\n\nvar ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"M\"]).apply(null, arguments);\n};\n\nvar _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"O\"]).apply(null, arguments);\n};\n\nvar _saveSetjmp = function() {\n return (_saveSetjmp = Module[\"asm\"][\"saveSetjmp\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n};\n\nvar stackSave = function() {\n return (stackSave = Module[\"asm\"][\"P\"]).apply(null, arguments);\n};\n\nvar stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"Q\"]).apply(null, arguments);\n};\n\nvar stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"R\"]).apply(null, arguments);\n};\n\nvar dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"S\"]).apply(null, arguments);\n};\n\nvar dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"T\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"U\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"V\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"W\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"X\"]).apply(null, arguments);\n};\n\nvar ___start_em_js = Module[\"___start_em_js\"] = 33568;\n\nvar ___stop_em_js = Module[\"___stop_em_js\"] = 36253;\n\nfunction invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nModule[\"AsciiToString\"] = AsciiToString;\n\nModule[\"FS\"] = FS;\n\nvar calledRun;\n\ndependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n};\n\nfunction callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach(arg => {\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n}\n\nfunction run(args = arguments_) {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n}\n\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [ Module[\"preInit\"] ];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\n\nvar shouldRunNow = true;\n\nif (Module[\"noInitialRun\"]) shouldRunNow = false;\n\nrun();\n\n\n return Module.ready\n}\n\n);\n})();\nexport default Module;","module.exports = require('./helpers/bundle-url').getBundleURL('ejVIo') + require('./helpers/bundle-manifest').resolve(\"9Qh6d\");","/*\n\nEmglken port of Hugo\n====================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nimport EmglkenVM from './vm.js'\nimport HugoCore from '../build/hugo-core.js'\n\nexport default class Hugo extends EmglkenVM\n{\n default_options()\n {\n return {\n vmcore: HugoCore,\n }\n }\n}","\nvar Module = (() => {\n var _scriptDir = import.meta.url;\n \n return (\nfunction(Module = {}) {\n\nvar Module = typeof Module != \"undefined\" ? Module : {};\n\nvar readyPromiseResolve, readyPromiseReject;\n\nModule[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n});\n\nvar moduleOverrides = Object.assign({}, Module);\n\nvar arguments_ = [];\n\nvar thisProgram = \"./this.program\";\n\nvar quit_ = (status, toThrow) => {\n throw toThrow;\n};\n\nvar ENVIRONMENT_IS_WEB = true;\n\nvar ENVIRONMENT_IS_WORKER = false;\n\nvar scriptDirectory = \"\";\n\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n}\n\nvar read_, readAsync, readBinary, setWindowTitle;\n\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = title => document.title = title;\n} else {}\n\nvar out = Module[\"print\"] || console.log.bind(console);\n\nvar err = Module[\"printErr\"] || console.warn.bind(console);\n\nObject.assign(Module, moduleOverrides);\n\nmoduleOverrides = null;\n\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\n\nvar wasmBinary;\n\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\nvar noExitRuntime = Module[\"noExitRuntime\"] || false;\n\nif (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n}\n\nvar wasmMemory;\n\nvar ABORT = false;\n\nvar EXITSTATUS;\n\nfunction assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n}\n\nvar UTF8Decoder = new TextDecoder(\"utf8\");\n\nfunction UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n}\n\nfunction UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n}\n\nfunction stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n}\n\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\n\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n}\n\nvar HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n}\n\nvar wasmTable;\n\nvar __ATPRERUN__ = [];\n\nvar __ATINIT__ = [];\n\nvar __ATMAIN__ = [];\n\nvar __ATEXIT__ = [];\n\nvar __ATPOSTRUN__ = [];\n\nvar runtimeInitialized = false;\n\nvar runtimeExited = false;\n\nvar runtimeKeepaliveCounter = 0;\n\nfunction keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n}\n\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [ Module[\"preRun\"] ];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\n\nfunction initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n}\n\nfunction preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n}\n\nfunction exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n}\n\nfunction postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [ Module[\"postRun\"] ];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\n\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\n\nfunction addOnInit(cb) {\n __ATINIT__.unshift(cb);\n}\n\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\n\nvar runDependencies = 0;\n\nvar runDependencyWatcher = null;\n\nvar dependenciesFulfilled = null;\n\nfunction getUniqueRunDependency(id) {\n return id;\n}\n\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n}\n\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\n\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n}\n\nvar dataURIPrefix = \"data:application/octet-stream;base64,\";\n\nfunction isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n}\n\nvar wasmBinaryFile;\n\nif (Module[\"locateFile\"]) {\n wasmBinaryFile = \"hugo-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n} else {\n wasmBinaryFile = new URL(\"hugo-core.wasm\", import.meta.url).href;\n}\n\nfunction getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n}\n\nfunction getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n}\n\nfunction instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n}\n\nfunction instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n } else {\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n}\n\nfunction createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"t\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"C\"];\n addOnInit(Module[\"asm\"][\"u\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n}\n\nvar tempDouble;\n\nvar tempI64;\n\nfunction __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async () => {\n if (!Module.emglken_stdin_buffers.length) {\n await new Promise(resolve => {\n Module.emglken_stdin_ready = resolve;\n });\n }\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) {\n HEAPU8.set(input, buffer);\n } else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n}\n\nfunction ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n}\n\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n}\n\nvar PATH = {\n isAbs: path => path.charAt(0) === \"/\",\n splitPath: filename => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (;up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n },\n normalize: path => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter(p => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: path => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: path => {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r) => {\n return PATH.normalize(l + \"/\" + r);\n }\n};\n\nfunction getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return () => {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return () => abort(\"randomDevice\");\n}\n\nvar PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(p => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to) => {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (;start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (;end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n};\n\nfunction intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n}\n\nvar TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n};\n\nfunction mmapAlloc(size) {\n abort();\n}\n\nvar MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [ \".\", \"..\" ];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n } else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n};\n\nfunction asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, arrayBuffer => {\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, event => {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n });\n if (dep) addRunDependency(dep);\n}\n\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {}) => {\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = path.split(\"/\").filter(p => !!p);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: node => {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name) => {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name) => {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev) => {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: node => {\n FS.hashRemoveNode(node);\n },\n isRoot: node => {\n return node === node.parent;\n },\n isMountpoint: node => {\n return !!node.mounted;\n },\n isFile: mode => {\n return (mode & 61440) === 32768;\n },\n isDir: mode => {\n return (mode & 61440) === 16384;\n },\n isLink: mode => {\n return (mode & 61440) === 40960;\n },\n isChrdev: mode => {\n return (mode & 61440) === 8192;\n },\n isBlkdev: mode => {\n return (mode & 61440) === 24576;\n },\n isFIFO: mode => {\n return (mode & 61440) === 4096;\n },\n isSocket: mode => {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: str => {\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n },\n flagsToPermissionString: flag => {\n var perms = [ \"r\", \"w\", \"rw\" ][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n },\n nodePermissions: (node, perms) => {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes(\"r\") && !(node.mode & 292)) {\n return 2;\n } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n return 2;\n } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n },\n mayLookup: dir => {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name) => {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir) => {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n },\n mayOpen: (node, flags) => {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => {\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n },\n getStream: fd => FS.streams[fd],\n createStream: (stream, fd_start, fd_end) => {\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: fd => {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: stream => {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: () => {\n throw new FS.ErrnoError(70);\n }\n },\n major: dev => dev >> 8,\n minor: dev => dev & 255,\n makedev: (ma, mi) => ma << 8 | mi,\n registerDevice: (dev, ops) => {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: dev => FS.devices[dev],\n getMounts: mount => {\n var mounts = [];\n var check = [ mount ];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback) => {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(mount => {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint) => {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n },\n unmount: mountpoint => {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(hash => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name) => {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev) => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode) => {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode) => {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode) => {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev) => {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath) => {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path) => {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n },\n rmdir: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n },\n unlink: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: path => {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow) => {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n },\n lstat: path => {\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode) => {\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid) => {\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len) => {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime) => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode) => {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path == \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512 && !created) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n }\n }\n return stream;\n },\n close: stream => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: stream => {\n return stream.fd === null;\n },\n llseek: (stream, offset, whence) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags) => {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags) => {\n if (!stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: stream => 0,\n ioctl: (stream, cmd, arg) => {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {}) => {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {}) => {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n },\n cwd: () => FS.currentPath,\n chdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: () => {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: () => {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: () => 0,\n write: (stream, buffer, offset, length, pos) => length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: () => {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: () => {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: (parent, name) => {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: () => stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: () => {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: () => {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [ 44 ].forEach(code => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: () => {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error) => {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: () => {\n FS.init.initialized = false;\n _fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink) => {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink) => {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite) => {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn) => {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: stream => {\n stream.seekable = false;\n },\n close: stream => {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: (stream, buffer, offset, length, pos) => {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos) => {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: obj => {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n },\n createLazyFile: (parent, name, url, canRead, canWrite) => {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to) => {\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n }\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter(chunkNum => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(key => {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => {\n if (onerror) onerror();\n removeRunDependency(dep);\n })) {\n return;\n }\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n asyncLoad(url, byteArray => processData(byteArray), onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: () => {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: () => {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = () => {\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = () => {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var getRequest = files.get(path);\n getRequest.onsuccess = () => {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n};\n\nvar SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (flags & 2) {\n return 0;\n }\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n};\n\nfunction ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & ~7) {\n return -28;\n }\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) {\n return -44;\n }\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n}\n\nfunction ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n }\n\n case 1:\n case 2:\n return 0;\n\n case 3:\n return stream.flags;\n\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n\n case 5:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n\n case 6:\n case 7:\n return 0;\n\n case 16:\n case 8:\n return -28;\n\n case 9:\n setErrNo(28);\n return -1;\n\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n case 21505:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21519:\n {\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n\n case 21520:\n {\n if (!stream.tty) return -59;\n return -28;\n }\n\n case 21531:\n {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n\n case 21523:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21524:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nvar nowIsMonotonic = true;\n\nfunction __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n}\n\nfunction readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n}\n\nfunction __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nvar __MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ];\n\nvar __MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ];\n\nfunction __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n}\n\nfunction __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n}\n\nfunction allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n}\n\nfunction _emscripten_date_now() {\n return Date.now();\n}\n\nvar _emscripten_get_now;\n\n_emscripten_get_now = () => performance.now();\n\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n}\n\nfunction getHeapMax() {\n return 2147483648;\n}\n\nfunction emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n}\n\nfunction _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n}\n\nfunction _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n}\n\nfunction exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) {\n exitRuntime();\n }\n _proc_exit(status);\n}\n\nvar _exit = exitJS;\n\nfunction _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n}\n\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction __arraySum(array, index) {\n var sum = 0;\n for (var i = 0; i <= index; sum += array[i++]) {}\n return sum;\n}\n\nvar __MONTH_DAYS_LEAP = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nvar __MONTH_DAYS_REGULAR = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nfunction __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while (days > 0) {\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) {\n newDate.setMonth(currentMonth + 1);\n } else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n}\n\nfunction writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n}\n\nfunction _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\"\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for (var rule in EXPANSION_RULES_1) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n }\n var WEEKDAYS = [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ];\n var MONTHS = [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ];\n function leadingSomething(value, digits, character) {\n var str = typeof value == \"number\" ? value.toString() : value || \"\";\n while (str.length < digits) {\n str = character[0] + str;\n }\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {\n compare = sgn(date1.getDate() - date2.getDate());\n }\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch (janFourth.getDay()) {\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n\n case 1:\n return janFourth;\n\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {\n return thisDate.getFullYear() + 1;\n }\n return thisDate.getFullYear();\n }\n return thisDate.getFullYear() - 1;\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function(date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function(date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function(date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function(date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function(date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n \"%d\": function(date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function(date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function(date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function(date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function(date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function(date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function(date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n \"%m\": function(date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function(date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function() {\n return \"\\n\";\n },\n \"%p\": function(date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) {\n return \"AM\";\n }\n return \"PM\";\n },\n \"%S\": function(date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function() {\n return \"\\t\";\n },\n \"%u\": function(date) {\n return date.tm_wday || 7;\n },\n \"%U\": function(date) {\n var days = date.tm_yday + 7 - date.tm_wday;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%V\": function(date) {\n var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7);\n if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) {\n val++;\n }\n if (!val) {\n val = 52;\n var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;\n if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) {\n val++;\n }\n } else if (val == 53) {\n var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;\n if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1;\n }\n return leadingNulls(val, 2);\n },\n \"%w\": function(date) {\n return date.tm_wday;\n },\n \"%W\": function(date) {\n var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%y\": function(date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function(date) {\n return date.tm_year + 1900;\n },\n \"%z\": function(date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function(date) {\n return date.tm_zone;\n },\n \"%%\": function() {\n return \"%\";\n }\n };\n pattern = pattern.replace(/%%/g, \"\\0\\0\");\n for (var rule in EXPANSION_RULES_2) {\n if (pattern.includes(rule)) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_2[rule](date));\n }\n }\n pattern = pattern.replace(/\\0\\0/g, \"%\");\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) {\n return 0;\n }\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n}\n\nfunction handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n}\n\nfunction allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n}\n\nfunction maybeExit() {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n}\n\nfunction callUserCallback(func) {\n if (runtimeExited || ABORT) {\n return;\n }\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n}\n\nfunction runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n}\n\nfunction runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n}\n\nvar Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [ \"emscripten_sleep\", \"emscripten_wget\", \"emscripten_wget_data\", \"emscripten_idb_load\", \"emscripten_idb_store\", \"emscripten_idb_delete\", \"emscripten_idb_exists\", \"emscripten_idb_load_blob\", \"emscripten_idb_store_blob\", \"SDL_Delay\", \"emscripten_scan_registers\", \"emscripten_lazy_load_code\", \"emscripten_fiber_swap\", \"__load_secondary_module\", \"fd_sync\", \"__wasi_fd_sync\", \"_emval_await\", \"_dlopen_js\", \"__asyncjs__*\" ];\n for (var x in imports) {\n (function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") {\n var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n }\n })(x);\n }\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for (var x in exports) {\n (function(x) {\n var original = exports[x];\n if (typeof original == \"function\") {\n ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally {\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n } else {\n ret[x] = original;\n }\n })(x);\n }\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") {\n Fibers.trampoline();\n }\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject) => {\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0) => {\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) {\n return;\n }\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.resume();\n }\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) {\n throw asyncWasmReturnValue;\n }\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.pause();\n }\n runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach(func => callUserCallback(func));\n } else {\n abort(\"invalid state: \" + Asyncify.state);\n }\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep(wakeUp => {\n startAsync().then(wakeUp);\n });\n }\n};\n\nfunction AsciiToString(ptr) {\n var str = \"\";\n while (1) {\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n}\n\nvar FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n};\n\nvar readMode = 292 | 73;\n\nvar writeMode = 146;\n\nObject.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n});\n\nFS.FSNode = FSNode;\n\nFS.staticInit();\n\nvar wasmImports = {\n \"j\": __asyncjs__emglken_fill_stdin_buffer,\n \"s\": ___syscall_faccessat,\n \"e\": ___syscall_fcntl64,\n \"r\": ___syscall_getcwd,\n \"q\": ___syscall_ioctl,\n \"p\": ___syscall_openat,\n \"o\": ___syscall_stat64,\n \"m\": __emscripten_get_now_is_monotonic,\n \"l\": __localtime_js,\n \"k\": __tzset_js,\n \"b\": _emscripten_date_now,\n \"i\": _emscripten_memcpy_big,\n \"h\": _emscripten_resize_heap,\n \"a\": _exit,\n \"d\": _fd_close,\n \"n\": _fd_read,\n \"g\": _fd_seek,\n \"c\": _fd_write,\n \"f\": _strftime\n};\n\nvar asm = createWasm();\n\nvar ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"u\"]).apply(null, arguments);\n};\n\nvar _malloc = function() {\n return (_malloc = Module[\"asm\"][\"v\"]).apply(null, arguments);\n};\n\nvar _free = function() {\n return (_free = Module[\"asm\"][\"w\"]).apply(null, arguments);\n};\n\nvar _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"x\"]).apply(null, arguments);\n};\n\nvar _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"y\"]).apply(null, arguments);\n};\n\nvar _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"z\"]).apply(null, arguments);\n};\n\nvar ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"A\"]).apply(null, arguments);\n};\n\nvar ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"B\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n};\n\nvar stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"D\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"E\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"F\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"G\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"H\"]).apply(null, arguments);\n};\n\nvar ___start_em_js = Module[\"___start_em_js\"] = 18128;\n\nvar ___stop_em_js = Module[\"___stop_em_js\"] = 20813;\n\nModule[\"AsciiToString\"] = AsciiToString;\n\nModule[\"FS\"] = FS;\n\nvar calledRun;\n\ndependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n};\n\nfunction callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach(arg => {\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n}\n\nfunction run(args = arguments_) {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n}\n\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [ Module[\"preInit\"] ];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\n\nvar shouldRunNow = true;\n\nif (Module[\"noInitialRun\"]) shouldRunNow = false;\n\nrun();\n\n\n return Module.ready\n}\n\n);\n})();\nexport default Module;","module.exports = require('./helpers/bundle-url').getBundleURL('ejVIo') + require('./helpers/bundle-manifest').resolve(\"huVfu\");","/*\n\nEmglken port of TADS\n====================\n\nCopyright (c) 2020 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nimport EmglkenVM from './vm.js'\nimport TADSCore from '../build/tads-core.js'\n\nexport default class TADS extends EmglkenVM\n{\n default_options()\n {\n return {\n vmcore: TADSCore,\n }\n }\n}","\nvar Module = (() => {\n var _scriptDir = import.meta.url;\n \n return (\nfunction(Module = {}) {\n\nvar Module = typeof Module != \"undefined\" ? Module : {};\n\nvar readyPromiseResolve, readyPromiseReject;\n\nModule[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n});\n\nvar moduleOverrides = Object.assign({}, Module);\n\nvar arguments_ = [];\n\nvar thisProgram = \"./this.program\";\n\nvar quit_ = (status, toThrow) => {\n throw toThrow;\n};\n\nvar ENVIRONMENT_IS_WEB = true;\n\nvar ENVIRONMENT_IS_WORKER = false;\n\nvar scriptDirectory = \"\";\n\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n}\n\nvar read_, readAsync, readBinary, setWindowTitle;\n\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = title => document.title = title;\n} else {}\n\nvar out = Module[\"print\"] || console.log.bind(console);\n\nvar err = Module[\"printErr\"] || console.warn.bind(console);\n\nObject.assign(Module, moduleOverrides);\n\nmoduleOverrides = null;\n\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\n\nvar wasmBinary;\n\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\nvar noExitRuntime = Module[\"noExitRuntime\"] || false;\n\nif (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n}\n\nvar wasmMemory;\n\nvar ABORT = false;\n\nvar EXITSTATUS;\n\nfunction assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n}\n\nvar UTF8Decoder = new TextDecoder(\"utf8\");\n\nfunction UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n}\n\nfunction UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n}\n\nfunction stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n}\n\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\n\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n}\n\nvar HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n}\n\nvar wasmTable;\n\nvar __ATPRERUN__ = [];\n\nvar __ATINIT__ = [];\n\nvar __ATMAIN__ = [];\n\nvar __ATEXIT__ = [];\n\nvar __ATPOSTRUN__ = [];\n\nvar runtimeInitialized = false;\n\nvar runtimeExited = false;\n\nvar runtimeKeepaliveCounter = 0;\n\nfunction keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n}\n\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [ Module[\"preRun\"] ];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\n\nfunction initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n}\n\nfunction preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n}\n\nfunction exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n}\n\nfunction postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [ Module[\"postRun\"] ];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\n\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\n\nfunction addOnInit(cb) {\n __ATINIT__.unshift(cb);\n}\n\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\n\nvar runDependencies = 0;\n\nvar runDependencyWatcher = null;\n\nvar dependenciesFulfilled = null;\n\nfunction getUniqueRunDependency(id) {\n return id;\n}\n\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n}\n\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\n\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n}\n\nvar dataURIPrefix = \"data:application/octet-stream;base64,\";\n\nfunction isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n}\n\nvar wasmBinaryFile;\n\nif (Module[\"locateFile\"]) {\n wasmBinaryFile = \"tads-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n} else {\n wasmBinaryFile = new URL(\"tads-core.wasm\", import.meta.url).href;\n}\n\nfunction getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n}\n\nfunction getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n}\n\nfunction instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n}\n\nfunction instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n } else {\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n}\n\nfunction createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"ha\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"qa\"];\n addOnInit(Module[\"asm\"][\"ia\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n}\n\nvar tempDouble;\n\nvar tempI64;\n\nfunction __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async () => {\n if (!Module.emglken_stdin_buffers.length) {\n await new Promise(resolve => {\n Module.emglken_stdin_ready = resolve;\n });\n }\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) {\n HEAPU8.set(input, buffer);\n } else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n}\n\nfunction ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n}\n\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n}\n\nvar PATH = {\n isAbs: path => path.charAt(0) === \"/\",\n splitPath: filename => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (;up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n },\n normalize: path => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter(p => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: path => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: path => {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r) => {\n return PATH.normalize(l + \"/\" + r);\n }\n};\n\nfunction getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return () => {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return () => abort(\"randomDevice\");\n}\n\nvar PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(p => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to) => {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (;start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (;end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n};\n\nfunction intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n}\n\nvar TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n};\n\nfunction mmapAlloc(size) {\n abort();\n}\n\nvar MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [ \".\", \"..\" ];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n } else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n};\n\nfunction asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, arrayBuffer => {\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, event => {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n });\n if (dep) addRunDependency(dep);\n}\n\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {}) => {\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = path.split(\"/\").filter(p => !!p);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: node => {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name) => {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name) => {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev) => {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: node => {\n FS.hashRemoveNode(node);\n },\n isRoot: node => {\n return node === node.parent;\n },\n isMountpoint: node => {\n return !!node.mounted;\n },\n isFile: mode => {\n return (mode & 61440) === 32768;\n },\n isDir: mode => {\n return (mode & 61440) === 16384;\n },\n isLink: mode => {\n return (mode & 61440) === 40960;\n },\n isChrdev: mode => {\n return (mode & 61440) === 8192;\n },\n isBlkdev: mode => {\n return (mode & 61440) === 24576;\n },\n isFIFO: mode => {\n return (mode & 61440) === 4096;\n },\n isSocket: mode => {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: str => {\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n },\n flagsToPermissionString: flag => {\n var perms = [ \"r\", \"w\", \"rw\" ][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n },\n nodePermissions: (node, perms) => {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes(\"r\") && !(node.mode & 292)) {\n return 2;\n } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n return 2;\n } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n },\n mayLookup: dir => {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name) => {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir) => {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n },\n mayOpen: (node, flags) => {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => {\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n },\n getStream: fd => FS.streams[fd],\n createStream: (stream, fd_start, fd_end) => {\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: fd => {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: stream => {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: () => {\n throw new FS.ErrnoError(70);\n }\n },\n major: dev => dev >> 8,\n minor: dev => dev & 255,\n makedev: (ma, mi) => ma << 8 | mi,\n registerDevice: (dev, ops) => {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: dev => FS.devices[dev],\n getMounts: mount => {\n var mounts = [];\n var check = [ mount ];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback) => {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(mount => {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint) => {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n },\n unmount: mountpoint => {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(hash => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name) => {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev) => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode) => {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode) => {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode) => {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev) => {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath) => {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path) => {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n },\n rmdir: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n },\n unlink: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: path => {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow) => {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n },\n lstat: path => {\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode) => {\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid) => {\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len) => {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime) => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode) => {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path == \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512 && !created) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n }\n }\n return stream;\n },\n close: stream => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: stream => {\n return stream.fd === null;\n },\n llseek: (stream, offset, whence) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags) => {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags) => {\n if (!stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: stream => 0,\n ioctl: (stream, cmd, arg) => {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {}) => {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {}) => {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n },\n cwd: () => FS.currentPath,\n chdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: () => {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: () => {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: () => 0,\n write: (stream, buffer, offset, length, pos) => length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: () => {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: () => {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: (parent, name) => {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: () => stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: () => {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: () => {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [ 44 ].forEach(code => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: () => {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error) => {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: () => {\n FS.init.initialized = false;\n _fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink) => {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink) => {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite) => {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn) => {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: stream => {\n stream.seekable = false;\n },\n close: stream => {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: (stream, buffer, offset, length, pos) => {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos) => {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: obj => {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n },\n createLazyFile: (parent, name, url, canRead, canWrite) => {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to) => {\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n }\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter(chunkNum => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(key => {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => {\n if (onerror) onerror();\n removeRunDependency(dep);\n })) {\n return;\n }\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n asyncLoad(url, byteArray => processData(byteArray), onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: () => {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: () => {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = () => {\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = () => {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var getRequest = files.get(path);\n getRequest.onsuccess = () => {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n};\n\nvar SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (flags & 2) {\n return 0;\n }\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n};\n\nfunction ___syscall_dup(fd) {\n try {\n var old = SYSCALLS.getStreamFromFD(fd);\n return FS.createStream(old, 0).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & ~7) {\n return -28;\n }\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) {\n return -44;\n }\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n}\n\nfunction ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n }\n\n case 1:\n case 2:\n return 0;\n\n case 3:\n return stream.flags;\n\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n\n case 5:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n\n case 6:\n case 7:\n return 0;\n\n case 16:\n case 8:\n return -28;\n\n case 9:\n setErrNo(28);\n return -1;\n\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_getdents64(fd, dirp, count) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n if (!stream.getdents) {\n stream.getdents = FS.readdir(stream.path);\n }\n var struct_size = 280;\n var pos = 0;\n var off = FS.llseek(stream, 0, 1);\n var idx = Math.floor(off / struct_size);\n while (idx < stream.getdents.length && pos + struct_size <= count) {\n var id;\n var type;\n var name = stream.getdents[idx];\n if (name === \".\") {\n id = stream.node.id;\n type = 4;\n } else if (name === \"..\") {\n var lookup = FS.lookupPath(stream.path, {\n parent: true\n });\n id = lookup.node.id;\n type = 4;\n } else {\n var child = FS.lookupNode(stream.node, name);\n id = child.id;\n type = FS.isChrdev(child.mode) ? 2 : FS.isDir(child.mode) ? 4 : FS.isLink(child.mode) ? 10 : 8;\n }\n tempI64 = [ id >>> 0, (tempDouble = id, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[dirp + pos >> 2] = tempI64[0], HEAP32[dirp + pos + 4 >> 2] = tempI64[1];\n tempI64 = [ (idx + 1) * struct_size >>> 0, (tempDouble = (idx + 1) * struct_size, \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[dirp + pos + 8 >> 2] = tempI64[0], HEAP32[dirp + pos + 12 >> 2] = tempI64[1];\n HEAP16[dirp + pos + 16 >> 1] = 280;\n HEAP8[dirp + pos + 18 >> 0] = type;\n stringToUTF8(name, dirp + pos + 19, 256);\n pos += struct_size;\n idx += 1;\n }\n FS.llseek(stream, idx * struct_size, 0);\n return pos;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n case 21505:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21519:\n {\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n\n case 21520:\n {\n if (!stream.tty) return -59;\n return -28;\n }\n\n case 21531:\n {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n\n case 21523:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21524:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_lstat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.lstat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_mkdirat(dirfd, path, mode) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n path = PATH.normalize(path);\n if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\n FS.mkdir(path, mode, 0);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_newfstatat(dirfd, path, buf, flags) {\n try {\n path = SYSCALLS.getStr(path);\n var nofollow = flags & 256;\n var allowEmpty = flags & 4096;\n flags = flags & ~6400;\n path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);\n return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_readlinkat(dirfd, path, buf, bufsize) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (bufsize <= 0) return -28;\n var ret = FS.readlink(path);\n var len = Math.min(bufsize, lengthBytesUTF8(ret));\n var endChar = HEAP8[buf + len];\n stringToUTF8(ret, buf, bufsize + 1);\n HEAP8[buf + len] = endChar;\n return len;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_renameat(olddirfd, oldpath, newdirfd, newpath) {\n try {\n oldpath = SYSCALLS.getStr(oldpath);\n newpath = SYSCALLS.getStr(newpath);\n oldpath = SYSCALLS.calculateAt(olddirfd, oldpath);\n newpath = SYSCALLS.calculateAt(newdirfd, newpath);\n FS.rename(oldpath, newpath);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_rmdir(path) {\n try {\n path = SYSCALLS.getStr(path);\n FS.rmdir(path);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_unlinkat(dirfd, path, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (flags === 0) {\n FS.unlink(path);\n } else if (flags === 512) {\n FS.rmdir(path);\n } else {\n abort(\"Invalid flags passed to unlinkat\");\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nvar nowIsMonotonic = true;\n\nfunction __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n}\n\nfunction __emscripten_throw_longjmp() {\n throw Infinity;\n}\n\nfunction readI53FromI64(ptr) {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n}\n\nfunction __gmtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getUTCSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getUTCHours();\n HEAP32[tmPtr + 12 >> 2] = date.getUTCDate();\n HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n}\n\nfunction __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nvar __MONTH_DAYS_LEAP_CUMULATIVE = [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ];\n\nvar __MONTH_DAYS_REGULAR_CUMULATIVE = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ];\n\nfunction __yday_from_date(date) {\n var isLeapYear = __isLeapYear(date.getFullYear());\n var monthDaysCumulative = isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n}\n\nfunction __localtime_js(time, tmPtr) {\n var date = new Date(readI53FromI64(time) * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = __yday_from_date(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n}\n\nfunction allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction __tzset_js(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAPU32[tzname >> 2] = winterNamePtr;\n HEAPU32[tzname + 4 >> 2] = summerNamePtr;\n } else {\n HEAPU32[tzname >> 2] = summerNamePtr;\n HEAPU32[tzname + 4 >> 2] = winterNamePtr;\n }\n}\n\nfunction _abort() {\n abort(\"\");\n}\n\nfunction _emscripten_date_now() {\n return Date.now();\n}\n\nvar _emscripten_get_now;\n\n_emscripten_get_now = () => performance.now();\n\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n}\n\nfunction getHeapMax() {\n return 2147483648;\n}\n\nfunction emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n}\n\nfunction _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n}\n\nvar ENV = {};\n\nfunction getExecutableName() {\n return thisProgram || \"./this.program\";\n}\n\nfunction getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": lang,\n \"_\": getExecutableName()\n };\n for (var x in ENV) {\n if (ENV[x] === undefined) delete env[x]; else env[x] = ENV[x];\n }\n var strings = [];\n for (var x in env) {\n strings.push(x + \"=\" + env[x]);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n}\n\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n}\n\nfunction _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function(string, i) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n}\n\nfunction _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function(string) {\n bufSize += string.length + 1;\n });\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n}\n\nfunction _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n}\n\nfunction exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) {\n exitRuntime();\n }\n _proc_exit(status);\n}\n\nvar _exit = exitJS;\n\nfunction _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n}\n\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction __arraySum(array, index) {\n var sum = 0;\n for (var i = 0; i <= index; sum += array[i++]) {}\n return sum;\n}\n\nvar __MONTH_DAYS_LEAP = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nvar __MONTH_DAYS_REGULAR = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nfunction __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while (days > 0) {\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) {\n newDate.setMonth(currentMonth + 1);\n } else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n}\n\nfunction writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n}\n\nfunction _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\"\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for (var rule in EXPANSION_RULES_1) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n }\n var WEEKDAYS = [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ];\n var MONTHS = [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ];\n function leadingSomething(value, digits, character) {\n var str = typeof value == \"number\" ? value.toString() : value || \"\";\n while (str.length < digits) {\n str = character[0] + str;\n }\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {\n compare = sgn(date1.getDate() - date2.getDate());\n }\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch (janFourth.getDay()) {\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n\n case 1:\n return janFourth;\n\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {\n return thisDate.getFullYear() + 1;\n }\n return thisDate.getFullYear();\n }\n return thisDate.getFullYear() - 1;\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function(date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function(date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function(date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function(date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function(date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n \"%d\": function(date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function(date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function(date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function(date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function(date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function(date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function(date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n \"%m\": function(date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function(date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function() {\n return \"\\n\";\n },\n \"%p\": function(date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) {\n return \"AM\";\n }\n return \"PM\";\n },\n \"%S\": function(date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function() {\n return \"\\t\";\n },\n \"%u\": function(date) {\n return date.tm_wday || 7;\n },\n \"%U\": function(date) {\n var days = date.tm_yday + 7 - date.tm_wday;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%V\": function(date) {\n var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7);\n if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) {\n val++;\n }\n if (!val) {\n val = 52;\n var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;\n if (dec31 == 4 || dec31 == 5 && __isLeapYear(date.tm_year % 400 - 1)) {\n val++;\n }\n } else if (val == 53) {\n var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;\n if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1;\n }\n return leadingNulls(val, 2);\n },\n \"%w\": function(date) {\n return date.tm_wday;\n },\n \"%W\": function(date) {\n var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%y\": function(date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function(date) {\n return date.tm_year + 1900;\n },\n \"%z\": function(date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function(date) {\n return date.tm_zone;\n },\n \"%%\": function() {\n return \"%\";\n }\n };\n pattern = pattern.replace(/%%/g, \"\\0\\0\");\n for (var rule in EXPANSION_RULES_2) {\n if (pattern.includes(rule)) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_2[rule](date));\n }\n }\n pattern = pattern.replace(/\\0\\0/g, \"%\");\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) {\n return 0;\n }\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n}\n\nfunction handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n}\n\nfunction allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n}\n\nfunction maybeExit() {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n}\n\nfunction callUserCallback(func) {\n if (runtimeExited || ABORT) {\n return;\n }\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n}\n\nfunction runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n}\n\nfunction runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n}\n\nvar Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [ \"invoke_*\", \"emscripten_sleep\", \"emscripten_wget\", \"emscripten_wget_data\", \"emscripten_idb_load\", \"emscripten_idb_store\", \"emscripten_idb_delete\", \"emscripten_idb_exists\", \"emscripten_idb_load_blob\", \"emscripten_idb_store_blob\", \"SDL_Delay\", \"emscripten_scan_registers\", \"emscripten_lazy_load_code\", \"emscripten_fiber_swap\", \"__load_secondary_module\", \"fd_sync\", \"__wasi_fd_sync\", \"_emval_await\", \"_dlopen_js\", \"__asyncjs__*\" ];\n for (var x in imports) {\n (function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") {\n var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n }\n })(x);\n }\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for (var x in exports) {\n (function(x) {\n var original = exports[x];\n if (typeof original == \"function\") {\n ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally {\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n } else {\n ret[x] = original;\n }\n })(x);\n }\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") {\n Fibers.trampoline();\n }\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject) => {\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0) => {\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) {\n return;\n }\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.resume();\n }\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) {\n throw asyncWasmReturnValue;\n }\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.pause();\n }\n runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach(func => callUserCallback(func));\n } else {\n abort(\"invalid state: \" + Asyncify.state);\n }\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep(wakeUp => {\n startAsync().then(wakeUp);\n });\n }\n};\n\nfunction AsciiToString(ptr) {\n var str = \"\";\n while (1) {\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n}\n\nvar FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n};\n\nvar readMode = 292 | 73;\n\nvar writeMode = 146;\n\nObject.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n});\n\nFS.FSNode = FSNode;\n\nFS.staticInit();\n\nvar wasmImports = {\n \"O\": __asyncjs__emglken_fill_stdin_buffer,\n \"ga\": ___syscall_dup,\n \"fa\": ___syscall_faccessat,\n \"G\": ___syscall_fcntl64,\n \"ea\": ___syscall_getcwd,\n \"da\": ___syscall_getdents64,\n \"ca\": ___syscall_ioctl,\n \"ba\": ___syscall_lstat64,\n \"aa\": ___syscall_mkdirat,\n \"$\": ___syscall_newfstatat,\n \"F\": ___syscall_openat,\n \"_\": ___syscall_readlinkat,\n \"Z\": ___syscall_renameat,\n \"E\": ___syscall_rmdir,\n \"Y\": ___syscall_stat64,\n \"X\": ___syscall_unlinkat,\n \"T\": __emscripten_get_now_is_monotonic,\n \"S\": __emscripten_throw_longjmp,\n \"R\": __gmtime_js,\n \"Q\": __localtime_js,\n \"P\": __tzset_js,\n \"C\": _abort,\n \"B\": _emscripten_date_now,\n \"A\": _emscripten_get_now,\n \"N\": _emscripten_memcpy_big,\n \"M\": _emscripten_resize_heap,\n \"W\": _environ_get,\n \"V\": _environ_sizes_get,\n \"y\": _exit,\n \"w\": _fd_close,\n \"U\": _fd_read,\n \"I\": _fd_seek,\n \"D\": _fd_write,\n \"L\": invoke_i,\n \"b\": invoke_ii,\n \"f\": invoke_iii,\n \"e\": invoke_iiii,\n \"c\": invoke_iiiii,\n \"j\": invoke_iiiiii,\n \"l\": invoke_iiiiiii,\n \"m\": invoke_iiiiiiii,\n \"s\": invoke_iiiiiiiii,\n \"t\": invoke_iiiiiiiiii,\n \"p\": invoke_iiiiiiiiiii,\n \"x\": invoke_iiiiiiiiiiii,\n \"q\": invoke_iiiiiiiiiiiiii,\n \"z\": invoke_iiiiiiiiiiiiiiii,\n \"v\": invoke_iiiiiiiiiiiiiiiiii,\n \"i\": invoke_v,\n \"h\": invoke_vi,\n \"d\": invoke_vii,\n \"a\": invoke_viii,\n \"g\": invoke_viiii,\n \"o\": invoke_viiiii,\n \"n\": invoke_viiiiii,\n \"K\": invoke_viiiiiii,\n \"r\": invoke_viiiiiiii,\n \"k\": invoke_viiiiiiiii,\n \"u\": invoke_viiiiiiiiiii,\n \"J\": invoke_viiiiiiiiiiiiiii,\n \"H\": _strftime\n};\n\nvar asm = createWasm();\n\nvar ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"ia\"]).apply(null, arguments);\n};\n\nvar _malloc = function() {\n return (_malloc = Module[\"asm\"][\"ja\"]).apply(null, arguments);\n};\n\nvar _free = function() {\n return (_free = Module[\"asm\"][\"ka\"]).apply(null, arguments);\n};\n\nvar _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"la\"]).apply(null, arguments);\n};\n\nvar _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"ma\"]).apply(null, arguments);\n};\n\nvar _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"na\"]).apply(null, arguments);\n};\n\nvar ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"oa\"]).apply(null, arguments);\n};\n\nvar ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"pa\"]).apply(null, arguments);\n};\n\nvar _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"ra\"]).apply(null, arguments);\n};\n\nvar _saveSetjmp = function() {\n return (_saveSetjmp = Module[\"asm\"][\"saveSetjmp\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n};\n\nvar stackSave = function() {\n return (stackSave = Module[\"asm\"][\"sa\"]).apply(null, arguments);\n};\n\nvar stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"ta\"]).apply(null, arguments);\n};\n\nvar stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"ua\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() {\n return (dynCall_iiiii = Module[\"dynCall_iiiii\"] = Module[\"asm\"][\"va\"]).apply(null, arguments);\n};\n\nvar dynCall_ii = Module[\"dynCall_ii\"] = function() {\n return (dynCall_ii = Module[\"dynCall_ii\"] = Module[\"asm\"][\"wa\"]).apply(null, arguments);\n};\n\nvar dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"xa\"]).apply(null, arguments);\n};\n\nvar dynCall_iii = Module[\"dynCall_iii\"] = function() {\n return (dynCall_iii = Module[\"dynCall_iii\"] = Module[\"asm\"][\"ya\"]).apply(null, arguments);\n};\n\nvar dynCall_viii = Module[\"dynCall_viii\"] = function() {\n return (dynCall_viii = Module[\"dynCall_viii\"] = Module[\"asm\"][\"za\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiiii = Module[\"dynCall_viiiiiiii\"] = function() {\n return (dynCall_viiiiiiii = Module[\"dynCall_viiiiiiii\"] = Module[\"asm\"][\"Aa\"]).apply(null, arguments);\n};\n\nvar dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"Ba\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiii = Module[\"dynCall_viiiii\"] = function() {\n return (dynCall_viiiii = Module[\"dynCall_viiiii\"] = Module[\"asm\"][\"Ca\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = function() {\n return (dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = Module[\"asm\"][\"Da\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = function() {\n return (dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = Module[\"asm\"][\"Ea\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiii = Module[\"dynCall_iiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiii = Module[\"dynCall_iiiiiiiii\"] = Module[\"asm\"][\"Fa\"]).apply(null, arguments);\n};\n\nvar dynCall_iiii = Module[\"dynCall_iiii\"] = function() {\n return (dynCall_iiii = Module[\"dynCall_iiii\"] = Module[\"asm\"][\"Ga\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiiiii = Module[\"dynCall_viiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiii = Module[\"dynCall_viiiiiiiii\"] = Module[\"asm\"][\"Ha\"]).apply(null, arguments);\n};\n\nvar dynCall_viiii = Module[\"dynCall_viiii\"] = function() {\n return (dynCall_viiii = Module[\"dynCall_viiii\"] = Module[\"asm\"][\"Ia\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = function() {\n return (dynCall_iiiiiii = Module[\"dynCall_iiiiiii\"] = Module[\"asm\"][\"Ja\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiiiiiii = Module[\"dynCall_viiiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiiii = Module[\"dynCall_viiiiiiiiiii\"] = Module[\"asm\"][\"Ka\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiii = Module[\"dynCall_iiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiii = Module[\"dynCall_iiiiiiiiii\"] = Module[\"asm\"][\"La\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = function() {\n return (dynCall_iiiiiiii = Module[\"dynCall_iiiiiiii\"] = Module[\"asm\"][\"Ma\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiiii = Module[\"dynCall_iiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiii = Module[\"dynCall_iiiiiiiiiii\"] = Module[\"asm\"][\"Na\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiii\"] = Module[\"asm\"][\"Oa\"]).apply(null, arguments);\n};\n\nvar dynCall_v = Module[\"dynCall_v\"] = function() {\n return (dynCall_v = Module[\"dynCall_v\"] = Module[\"asm\"][\"Pa\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Qa\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = function() {\n return (dynCall_viiiiiii = Module[\"dynCall_viiiiiii\"] = Module[\"asm\"][\"Ra\"]).apply(null, arguments);\n};\n\nvar dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = function() {\n return (dynCall_viiiiiiiiiiiiiii = Module[\"dynCall_viiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Sa\"]).apply(null, arguments);\n};\n\nvar dynCall_i = Module[\"dynCall_i\"] = function() {\n return (dynCall_i = Module[\"dynCall_i\"] = Module[\"asm\"][\"Ta\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiii\"] = Module[\"asm\"][\"Ua\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiii\"] = function() {\n return (dynCall_iiiiiiiiiiiiiiii = Module[\"dynCall_iiiiiiiiiiiiiiii\"] = Module[\"asm\"][\"Va\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"Wa\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"Xa\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"Ya\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"Za\"]).apply(null, arguments);\n};\n\nvar ___start_em_js = Module[\"___start_em_js\"] = 356528;\n\nvar ___stop_em_js = Module[\"___stop_em_js\"] = 359213;\n\nfunction invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n return dynCall_iiiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iii(index, a1, a2) {\n var sp = stackSave();\n try {\n return dynCall_iii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) {\n var sp = stackSave();\n try {\n dynCall_viiiiii(index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiii(index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiii(index, a1, a2, a3, a4, a5) {\n var sp = stackSave();\n try {\n dynCall_viiiii(index, a1, a2, a3, a4, a5);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n var sp = stackSave();\n try {\n dynCall_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n var sp = stackSave();\n try {\n dynCall_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n var sp = stackSave();\n try {\n return dynCall_iiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nModule[\"AsciiToString\"] = AsciiToString;\n\nModule[\"FS\"] = FS;\n\nvar calledRun;\n\ndependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n};\n\nfunction callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach(arg => {\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n}\n\nfunction run(args = arguments_) {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n}\n\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [ Module[\"preInit\"] ];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\n\nvar shouldRunNow = true;\n\nif (Module[\"noInitialRun\"]) shouldRunNow = false;\n\nrun();\n\n\n return Module.ready\n}\n\n);\n})();\nexport default Module;","module.exports = require('./helpers/bundle-url').getBundleURL('ejVIo') + require('./helpers/bundle-manifest').resolve(\"b8QSH\");","/*\n\nEmglken port of Scare\n=====================\n\nCopyright (c) 2023 Dannii Willis\nMIT licenced\nhttps://github.com/curiousdannii/emglken\n\n*/\n\nimport EmglkenVM from './vm.js'\nimport ScareCore from '../build/scare-core.js'\n\nexport default class Scare extends EmglkenVM\n{\n default_options()\n {\n return {\n vmcore: ScareCore,\n }\n }\n}","\nvar Module = (() => {\n var _scriptDir = import.meta.url;\n \n return (\nfunction(Module = {}) {\n\nvar Module = typeof Module != \"undefined\" ? Module : {};\n\nvar readyPromiseResolve, readyPromiseReject;\n\nModule[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n});\n\nvar moduleOverrides = Object.assign({}, Module);\n\nvar arguments_ = [];\n\nvar thisProgram = \"./this.program\";\n\nvar quit_ = (status, toThrow) => {\n throw toThrow;\n};\n\nvar ENVIRONMENT_IS_WEB = true;\n\nvar ENVIRONMENT_IS_WORKER = false;\n\nvar scriptDirectory = \"\";\n\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n}\n\nvar read_, readAsync, readBinary, setWindowTitle;\n\nif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = title => document.title = title;\n} else {}\n\nvar out = Module[\"print\"] || console.log.bind(console);\n\nvar err = Module[\"printErr\"] || console.warn.bind(console);\n\nObject.assign(Module, moduleOverrides);\n\nmoduleOverrides = null;\n\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\n\nvar wasmBinary;\n\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\nvar noExitRuntime = Module[\"noExitRuntime\"] || false;\n\nif (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n}\n\nvar wasmMemory;\n\nvar ABORT = false;\n\nvar EXITSTATUS;\n\nfunction assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n}\n\nvar UTF8Decoder = new TextDecoder(\"utf8\");\n\nfunction UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n}\n\nfunction UTF8ToString(ptr, maxBytesToRead) {\n if (!ptr) return \"\";\n var maxPtr = ptr + maxBytesToRead;\n for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end;\n return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n}\n\nfunction stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n}\n\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\n\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n}\n\nvar HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\nfunction updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n}\n\nvar wasmTable;\n\nvar __ATPRERUN__ = [];\n\nvar __ATINIT__ = [];\n\nvar __ATMAIN__ = [];\n\nvar __ATEXIT__ = [];\n\nvar __ATPOSTRUN__ = [];\n\nvar runtimeInitialized = false;\n\nvar runtimeExited = false;\n\nvar runtimeKeepaliveCounter = 0;\n\nfunction keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n}\n\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [ Module[\"preRun\"] ];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\n\nfunction initRuntime() {\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n}\n\nfunction preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n}\n\nfunction exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n}\n\nfunction postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [ Module[\"postRun\"] ];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\n\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\n\nfunction addOnInit(cb) {\n __ATINIT__.unshift(cb);\n}\n\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\n\nvar runDependencies = 0;\n\nvar runDependencyWatcher = null;\n\nvar dependenciesFulfilled = null;\n\nfunction getUniqueRunDependency(id) {\n return id;\n}\n\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n}\n\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\n\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n}\n\nvar dataURIPrefix = \"data:application/octet-stream;base64,\";\n\nfunction isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n}\n\nvar wasmBinaryFile;\n\nif (Module[\"locateFile\"]) {\n wasmBinaryFile = \"scare-core.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n} else {\n wasmBinaryFile = new URL(\"scare-core.wasm\", import.meta.url).href;\n}\n\nfunction getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n}\n\nfunction getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(binaryFile);\n });\n }\n }\n return Promise.resolve().then(function() {\n return getBinary(binaryFile);\n });\n}\n\nfunction instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then(function(binary) {\n return WebAssembly.instantiate(binary, imports);\n }).then(function(instance) {\n return instance;\n }).then(receiver, function(reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n}\n\nfunction instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") {\n return fetch(binaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function(reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n } else {\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n}\n\nfunction createWasm() {\n var info = {\n \"a\": wasmImports\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n exports = Asyncify.instrumentWasmExports(exports);\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"E\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"N\"];\n addOnInit(Module[\"asm\"][\"F\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n}\n\nvar tempDouble;\n\nvar tempI64;\n\nfunction __asyncjs__emglken_fill_stdin_buffer(buffer, maxlen) {\n return Asyncify.handleAsync(async () => {\n if (!Module.emglken_stdin_buffers.length) {\n await new Promise(resolve => {\n Module.emglken_stdin_ready = resolve;\n });\n }\n const input = Module.emglken_stdin_buffers.shift();\n const len = Math.min(input.length, maxlen);\n if (len == input.length) {\n HEAPU8.set(input, buffer);\n } else {\n HEAPU8.set(input.subarray(0, len), buffer);\n Module.emglken_stdin_buffers.unshift(input.subarray(len));\n }\n return len;\n });\n}\n\nfunction ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n}\n\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n}\n\nvar PATH = {\n isAbs: path => path.charAt(0) === \"/\",\n splitPath: filename => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (;up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n },\n normalize: path => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter(p => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: path => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: path => {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: (l, r) => {\n return PATH.normalize(l + \"/\" + r);\n }\n};\n\nfunction getRandomDevice() {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n var randomBuffer = new Uint8Array(1);\n return () => {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else return () => abort(\"randomDevice\");\n}\n\nvar PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(p => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to) => {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (;start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (;end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n};\n\nfunction intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n}\n\nvar TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync: function(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n fsync: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n};\n\nfunction mmapAlloc(size) {\n abort();\n}\n\nvar MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [ \".\", \"..\" ];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n } else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n};\n\nfunction asyncLoad(url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";\n readAsync(url, arrayBuffer => {\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, event => {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n });\n if (dep) addRunDependency(dep);\n}\n\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: (path, opts = {}) => {\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = path.split(\"/\").filter(p => !!p);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count + 1\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: node => {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: (parentid, name) => {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: node => {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: (parent, name) => {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: (parent, name, mode, rdev) => {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: node => {\n FS.hashRemoveNode(node);\n },\n isRoot: node => {\n return node === node.parent;\n },\n isMountpoint: node => {\n return !!node.mounted;\n },\n isFile: mode => {\n return (mode & 61440) === 32768;\n },\n isDir: mode => {\n return (mode & 61440) === 16384;\n },\n isLink: mode => {\n return (mode & 61440) === 40960;\n },\n isChrdev: mode => {\n return (mode & 61440) === 8192;\n },\n isBlkdev: mode => {\n return (mode & 61440) === 24576;\n },\n isFIFO: mode => {\n return (mode & 61440) === 4096;\n },\n isSocket: mode => {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: str => {\n var flags = FS.flagModes[str];\n if (typeof flags == \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n },\n flagsToPermissionString: flag => {\n var perms = [ \"r\", \"w\", \"rw\" ][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n },\n nodePermissions: (node, perms) => {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes(\"r\") && !(node.mode & 292)) {\n return 2;\n } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n return 2;\n } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n },\n mayLookup: dir => {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: (dir, name) => {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: (dir, name, isdir) => {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n },\n mayOpen: (node, flags) => {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => {\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n },\n getStream: fd => FS.streams[fd],\n createStream: (stream, fd_start, fd_end) => {\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n },\n flags: {\n get: function() {\n return this.shared.flags;\n },\n set: function(val) {\n this.shared.flags = val;\n }\n },\n position: {\n get: function() {\n return this.shared.position;\n },\n set: function(val) {\n this.shared.position = val;\n }\n }\n });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: fd => {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: stream => {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: () => {\n throw new FS.ErrnoError(70);\n }\n },\n major: dev => dev >> 8,\n minor: dev => dev & 255,\n makedev: (ma, mi) => ma << 8 | mi,\n registerDevice: (dev, ops) => {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: dev => FS.devices[dev],\n getMounts: mount => {\n var mounts = [];\n var check = [ mount ];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: (populate, callback) => {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(mount => {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: (type, opts, mountpoint) => {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n },\n unmount: mountpoint => {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(hash => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: (parent, name) => {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: (path, mode, dev) => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: (path, mode) => {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: (path, mode) => {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: (path, mode) => {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: (path, mode, dev) => {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: (oldpath, newpath) => {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: (old_path, new_path) => {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n },\n rmdir: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n },\n unlink: path => {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink: path => {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: (path, dontFollow) => {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n },\n lstat: path => {\n return FS.stat(path, true);\n },\n chmod: (path, mode, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: (path, mode) => {\n FS.chmod(path, mode, true);\n },\n fchmod: (fd, mode) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chmod(stream.node, mode);\n },\n chown: (path, uid, gid, dontFollow) => {\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: (path, uid, gid) => {\n FS.chown(path, uid, gid, true);\n },\n fchown: (fd, uid, gid) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: (path, len) => {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: (fd, len) => {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n },\n utime: (path, atime, mtime) => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: (path, flags, mode) => {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags == \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path == \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512 && !created) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n }\n }\n return stream;\n },\n close: stream => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: stream => {\n return stream.fd === null;\n },\n llseek: (stream, offset, whence) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: (stream, buffer, offset, length, position) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: (stream, buffer, offset, length, position, canOwn) => {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate: (stream, offset, length) => {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: (stream, length, position, prot, flags) => {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync: (stream, buffer, offset, length, mmapFlags) => {\n if (!stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: stream => 0,\n ioctl: (stream, cmd, arg) => {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: (path, opts = {}) => {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: (path, data, opts = {}) => {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n },\n cwd: () => FS.currentPath,\n chdir: path => {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: () => {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: () => {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: () => 0,\n write: (stream, buffer, offset, length, pos) => length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: () => {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: () => {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: (parent, name) => {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: () => stream.path\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: () => {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n },\n ensureErrnoError: () => {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [ 44 ].forEach(code => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: () => {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS\n };\n },\n init: (input, output, error) => {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: () => {\n FS.init.initialized = false;\n _fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: (path, dontResolveLastLink) => {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n },\n analyzePath: (path, dontResolveLastLink) => {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: (parent, path, canRead, canWrite) => {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: (parent, name, properties, canRead, canWrite) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: (parent, name, data, canRead, canWrite, canOwn) => {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: (parent, name, input, output) => {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: stream => {\n stream.seekable = false;\n },\n close: stream => {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: (stream, buffer, offset, length, pos) => {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: (stream, buffer, offset, length, pos) => {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: obj => {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n },\n createLazyFile: (parent, name, url, canRead, canWrite) => {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to) => {\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n }\n return intArrayFromString(xhr.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter(chunkNum => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(key => {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr: ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => {\n if (onerror) onerror();\n removeRunDependency(dep);\n })) {\n return;\n }\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n asyncLoad(url, byteArray => processData(byteArray), onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: () => {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: () => {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = () => {\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = () => {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: (paths, onload = (() => {}), onerror = (() => {})) => {\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = () => {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(path => {\n var getRequest = files.get(path);\n getRequest.onsuccess = () => {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = () => {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n};\n\nvar SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt: function(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAPU32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [ Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];\n HEAPU32[buf + 64 >> 2] = atime % 1e3 * 1e3;\n tempI64 = [ Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];\n HEAPU32[buf + 80 >> 2] = mtime % 1e3 * 1e3;\n tempI64 = [ Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), \n +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];\n HEAPU32[buf + 96 >> 2] = ctime % 1e3 * 1e3;\n tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 104 >> 2] = tempI64[0], HEAP32[buf + 108 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (flags & 2) {\n return 0;\n }\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n varargs: undefined,\n get: function() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n }\n};\n\nfunction ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & ~7) {\n return -28;\n }\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node) {\n return -44;\n }\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n}\n\nfunction ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n }\n\n case 1:\n case 2:\n return 0;\n\n case 3:\n return stream.flags;\n\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n\n case 5:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n\n case 6:\n case 7:\n return 0;\n\n case 16:\n case 8:\n return -28;\n\n case 9:\n setErrNo(28);\n return -1;\n\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n case 21505:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21519:\n {\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n\n case 21520:\n {\n if (!stream.tty) return -59;\n return -28;\n }\n\n case 21531:\n {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n\n case 21523:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21524:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n default:\n return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nfunction ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n}\n\nvar nowIsMonotonic = true;\n\nfunction __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n}\n\nfunction __emscripten_throw_longjmp() {\n throw Infinity;\n}\n\nfunction _abort() {\n abort(\"\");\n}\n\nfunction _emscripten_date_now() {\n return Date.now();\n}\n\nvar _emscripten_get_now;\n\n_emscripten_get_now = () => performance.now();\n\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n}\n\nfunction getHeapMax() {\n return 2147483648;\n}\n\nfunction emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow(size - b.byteLength + 65535 >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n}\n\nfunction _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n}\n\nvar ENV = {};\n\nfunction getExecutableName() {\n return thisProgram || \"./this.program\";\n}\n\nfunction getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": lang,\n \"_\": getExecutableName()\n };\n for (var x in ENV) {\n if (ENV[x] === undefined) delete env[x]; else env[x] = ENV[x];\n }\n var strings = [];\n for (var x in env) {\n strings.push(x + \"=\" + env[x]);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n}\n\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n}\n\nfunction _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function(string, i) {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n}\n\nfunction _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function(string) {\n bufSize += string.length + 1;\n });\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n}\n\nfunction _proc_exit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module[\"onExit\"]) Module[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n}\n\nfunction exitJS(status, implicit) {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) {\n exitRuntime();\n }\n _proc_exit(status);\n}\n\nvar _exit = exitJS;\n\nfunction _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doReadv(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction convertI32PairToI53Checked(lo, hi) {\n return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n}\n\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction doWritev(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n}\n\nfunction _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n}\n\nfunction handleException(e) {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n}\n\nfunction allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction runAndAbortIfError(func) {\n try {\n return func();\n } catch (e) {\n abort(e);\n }\n}\n\nfunction maybeExit() {\n if (!keepRuntimeAlive()) {\n try {\n _exit(EXITSTATUS);\n } catch (e) {\n handleException(e);\n }\n }\n}\n\nfunction callUserCallback(func) {\n if (runtimeExited || ABORT) {\n return;\n }\n try {\n func();\n maybeExit();\n } catch (e) {\n handleException(e);\n }\n}\n\nfunction runtimeKeepalivePush() {\n runtimeKeepaliveCounter += 1;\n}\n\nfunction runtimeKeepalivePop() {\n runtimeKeepaliveCounter -= 1;\n}\n\nvar Asyncify = {\n instrumentWasmImports: function(imports) {\n var ASYNCIFY_IMPORTS = [ \"invoke_*\", \"emscripten_sleep\", \"emscripten_wget\", \"emscripten_wget_data\", \"emscripten_idb_load\", \"emscripten_idb_store\", \"emscripten_idb_delete\", \"emscripten_idb_exists\", \"emscripten_idb_load_blob\", \"emscripten_idb_store_blob\", \"SDL_Delay\", \"emscripten_scan_registers\", \"emscripten_lazy_load_code\", \"emscripten_fiber_swap\", \"__load_secondary_module\", \"fd_sync\", \"__wasi_fd_sync\", \"_emval_await\", \"_dlopen_js\", \"__asyncjs__*\" ];\n for (var x in imports) {\n (function(x) {\n var original = imports[x];\n var sig = original.sig;\n if (typeof original == \"function\") {\n var isAsyncifyImport = ASYNCIFY_IMPORTS.indexOf(x) >= 0 || x.startsWith(\"__asyncjs__\");\n }\n })(x);\n }\n },\n instrumentWasmExports: function(exports) {\n var ret = {};\n for (var x in exports) {\n (function(x) {\n var original = exports[x];\n if (typeof original == \"function\") {\n ret[x] = function() {\n Asyncify.exportCallStack.push(x);\n try {\n return original.apply(null, arguments);\n } finally {\n if (!ABORT) {\n var y = Asyncify.exportCallStack.pop();\n assert(y === x);\n Asyncify.maybeStopUnwind();\n }\n }\n };\n } else {\n ret[x] = original;\n }\n })(x);\n }\n return ret;\n },\n State: {\n Normal: 0,\n Unwinding: 1,\n Rewinding: 2,\n Disabled: 3\n },\n state: 0,\n StackSize: 8192,\n currData: null,\n handleSleepReturnValue: 0,\n exportCallStack: [],\n callStackNameToId: {},\n callStackIdToName: {},\n callStackId: 0,\n asyncPromiseHandlers: null,\n sleepCallbacks: [],\n getCallStackId: function(funcName) {\n var id = Asyncify.callStackNameToId[funcName];\n if (id === undefined) {\n id = Asyncify.callStackId++;\n Asyncify.callStackNameToId[funcName] = id;\n Asyncify.callStackIdToName[id] = funcName;\n }\n return id;\n },\n maybeStopUnwind: function() {\n if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {\n Asyncify.state = Asyncify.State.Normal;\n runtimeKeepalivePush();\n runAndAbortIfError(_asyncify_stop_unwind);\n if (typeof Fibers != \"undefined\") {\n Fibers.trampoline();\n }\n }\n },\n whenDone: function() {\n return new Promise((resolve, reject) => {\n Asyncify.asyncPromiseHandlers = {\n resolve: resolve,\n reject: reject\n };\n });\n },\n allocateData: function() {\n var ptr = _malloc(12 + Asyncify.StackSize);\n Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);\n Asyncify.setDataRewindFunc(ptr);\n return ptr;\n },\n setDataHeader: function(ptr, stack, stackSize) {\n HEAP32[ptr >> 2] = stack;\n HEAP32[ptr + 4 >> 2] = stack + stackSize;\n },\n setDataRewindFunc: function(ptr) {\n var bottomOfCallStack = Asyncify.exportCallStack[0];\n var rewindId = Asyncify.getCallStackId(bottomOfCallStack);\n HEAP32[ptr + 8 >> 2] = rewindId;\n },\n getDataRewindFunc: function(ptr) {\n var id = HEAP32[ptr + 8 >> 2];\n var name = Asyncify.callStackIdToName[id];\n var func = Module[\"asm\"][name];\n return func;\n },\n doRewind: function(ptr) {\n var start = Asyncify.getDataRewindFunc(ptr);\n runtimeKeepalivePop();\n return start();\n },\n handleSleep: function(startAsync) {\n if (ABORT) return;\n if (Asyncify.state === Asyncify.State.Normal) {\n var reachedCallback = false;\n var reachedAfterCallback = false;\n startAsync((handleSleepReturnValue = 0) => {\n if (ABORT) return;\n Asyncify.handleSleepReturnValue = handleSleepReturnValue;\n reachedCallback = true;\n if (!reachedAfterCallback) {\n return;\n }\n Asyncify.state = Asyncify.State.Rewinding;\n runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.resume();\n }\n var asyncWasmReturnValue, isError = false;\n try {\n asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);\n } catch (err) {\n asyncWasmReturnValue = err;\n isError = true;\n }\n var handled = false;\n if (!Asyncify.currData) {\n var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;\n if (asyncPromiseHandlers) {\n Asyncify.asyncPromiseHandlers = null;\n (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);\n handled = true;\n }\n }\n if (isError && !handled) {\n throw asyncWasmReturnValue;\n }\n });\n reachedAfterCallback = true;\n if (!reachedCallback) {\n Asyncify.state = Asyncify.State.Unwinding;\n Asyncify.currData = Asyncify.allocateData();\n if (typeof Browser != \"undefined\" && Browser.mainLoop.func) {\n Browser.mainLoop.pause();\n }\n runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData));\n }\n } else if (Asyncify.state === Asyncify.State.Rewinding) {\n Asyncify.state = Asyncify.State.Normal;\n runAndAbortIfError(_asyncify_stop_rewind);\n _free(Asyncify.currData);\n Asyncify.currData = null;\n Asyncify.sleepCallbacks.forEach(func => callUserCallback(func));\n } else {\n abort(\"invalid state: \" + Asyncify.state);\n }\n return Asyncify.handleSleepReturnValue;\n },\n handleAsync: function(startAsync) {\n return Asyncify.handleSleep(wakeUp => {\n startAsync().then(wakeUp);\n });\n }\n};\n\nfunction AsciiToString(ptr) {\n var str = \"\";\n while (1) {\n var ch = HEAPU8[ptr++ >> 0];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n}\n\nvar FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n};\n\nvar readMode = 292 | 73;\n\nvar writeMode = 146;\n\nObject.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n});\n\nFS.FSNode = FSNode;\n\nFS.staticInit();\n\nvar wasmImports = {\n \"s\": __asyncjs__emglken_fill_stdin_buffer,\n \"D\": ___syscall_faccessat,\n \"n\": ___syscall_fcntl64,\n \"C\": ___syscall_getcwd,\n \"B\": ___syscall_ioctl,\n \"A\": ___syscall_openat,\n \"z\": ___syscall_stat64,\n \"v\": __emscripten_get_now_is_monotonic,\n \"u\": __emscripten_throw_longjmp,\n \"t\": _abort,\n \"k\": _emscripten_date_now,\n \"r\": _emscripten_memcpy_big,\n \"q\": _emscripten_resize_heap,\n \"y\": _environ_get,\n \"x\": _environ_sizes_get,\n \"i\": _exit,\n \"m\": _fd_close,\n \"w\": _fd_read,\n \"p\": _fd_seek,\n \"l\": _fd_write,\n \"c\": invoke_i,\n \"g\": invoke_ii,\n \"f\": invoke_iiii,\n \"d\": invoke_iiiii,\n \"o\": invoke_ji,\n \"j\": invoke_v,\n \"b\": invoke_vi,\n \"a\": invoke_vii,\n \"h\": invoke_viii,\n \"e\": invoke_viiii\n};\n\nvar asm = createWasm();\n\nvar ___wasm_call_ctors = function() {\n return (___wasm_call_ctors = Module[\"asm\"][\"F\"]).apply(null, arguments);\n};\n\nvar _free = function() {\n return (_free = Module[\"asm\"][\"G\"]).apply(null, arguments);\n};\n\nvar _malloc = function() {\n return (_malloc = Module[\"asm\"][\"H\"]).apply(null, arguments);\n};\n\nvar _main = Module[\"_main\"] = function() {\n return (_main = Module[\"_main\"] = Module[\"asm\"][\"I\"]).apply(null, arguments);\n};\n\nvar _gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = function() {\n return (_gidispatch_get_game_id = Module[\"_gidispatch_get_game_id\"] = Module[\"asm\"][\"J\"]).apply(null, arguments);\n};\n\nvar _fflush = Module[\"_fflush\"] = function() {\n return (_fflush = Module[\"_fflush\"] = Module[\"asm\"][\"K\"]).apply(null, arguments);\n};\n\nvar ___errno_location = function() {\n return (___errno_location = Module[\"asm\"][\"L\"]).apply(null, arguments);\n};\n\nvar ___funcs_on_exit = function() {\n return (___funcs_on_exit = Module[\"asm\"][\"M\"]).apply(null, arguments);\n};\n\nvar _setThrew = function() {\n return (_setThrew = Module[\"asm\"][\"O\"]).apply(null, arguments);\n};\n\nvar _saveSetjmp = function() {\n return (_saveSetjmp = Module[\"asm\"][\"saveSetjmp\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_set_limits = function() {\n return (_emscripten_stack_set_limits = Module[\"asm\"][\"emscripten_stack_set_limits\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_base = function() {\n return (_emscripten_stack_get_base = Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null, arguments);\n};\n\nvar _emscripten_stack_get_end = function() {\n return (_emscripten_stack_get_end = Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null, arguments);\n};\n\nvar stackSave = function() {\n return (stackSave = Module[\"asm\"][\"P\"]).apply(null, arguments);\n};\n\nvar stackRestore = function() {\n return (stackRestore = Module[\"asm\"][\"Q\"]).apply(null, arguments);\n};\n\nvar stackAlloc = function() {\n return (stackAlloc = Module[\"asm\"][\"R\"]).apply(null, arguments);\n};\n\nvar dynCall_vi = Module[\"dynCall_vi\"] = function() {\n return (dynCall_vi = Module[\"dynCall_vi\"] = Module[\"asm\"][\"S\"]).apply(null, arguments);\n};\n\nvar dynCall_iiii = Module[\"dynCall_iiii\"] = function() {\n return (dynCall_iiii = Module[\"dynCall_iiii\"] = Module[\"asm\"][\"T\"]).apply(null, arguments);\n};\n\nvar dynCall_ii = Module[\"dynCall_ii\"] = function() {\n return (dynCall_ii = Module[\"dynCall_ii\"] = Module[\"asm\"][\"U\"]).apply(null, arguments);\n};\n\nvar dynCall_vii = Module[\"dynCall_vii\"] = function() {\n return (dynCall_vii = Module[\"dynCall_vii\"] = Module[\"asm\"][\"V\"]).apply(null, arguments);\n};\n\nvar dynCall_i = Module[\"dynCall_i\"] = function() {\n return (dynCall_i = Module[\"dynCall_i\"] = Module[\"asm\"][\"W\"]).apply(null, arguments);\n};\n\nvar dynCall_v = Module[\"dynCall_v\"] = function() {\n return (dynCall_v = Module[\"dynCall_v\"] = Module[\"asm\"][\"X\"]).apply(null, arguments);\n};\n\nvar dynCall_iiiii = Module[\"dynCall_iiiii\"] = function() {\n return (dynCall_iiiii = Module[\"dynCall_iiiii\"] = Module[\"asm\"][\"Y\"]).apply(null, arguments);\n};\n\nvar dynCall_viii = Module[\"dynCall_viii\"] = function() {\n return (dynCall_viii = Module[\"dynCall_viii\"] = Module[\"asm\"][\"Z\"]).apply(null, arguments);\n};\n\nvar dynCall_viiii = Module[\"dynCall_viiii\"] = function() {\n return (dynCall_viiii = Module[\"dynCall_viiii\"] = Module[\"asm\"][\"_\"]).apply(null, arguments);\n};\n\nvar dynCall_ji = Module[\"dynCall_ji\"] = function() {\n return (dynCall_ji = Module[\"dynCall_ji\"] = Module[\"asm\"][\"$\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_unwind = function() {\n return (_asyncify_start_unwind = Module[\"asm\"][\"aa\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_unwind = function() {\n return (_asyncify_stop_unwind = Module[\"asm\"][\"ba\"]).apply(null, arguments);\n};\n\nvar _asyncify_start_rewind = function() {\n return (_asyncify_start_rewind = Module[\"asm\"][\"ca\"]).apply(null, arguments);\n};\n\nvar _asyncify_stop_rewind = function() {\n return (_asyncify_stop_rewind = Module[\"asm\"][\"da\"]).apply(null, arguments);\n};\n\nvar ___start_em_js = Module[\"___start_em_js\"] = 107504;\n\nvar ___stop_em_js = Module[\"___stop_em_js\"] = 110189;\n\nfunction invoke_ii(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ii(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vii(index, a1, a2) {\n var sp = stackSave();\n try {\n dynCall_vii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_i(index) {\n var sp = stackSave();\n try {\n return dynCall_i(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_v(index) {\n var sp = stackSave();\n try {\n dynCall_v(index);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n return dynCall_iiiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n dynCall_viii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_iiii(index, a1, a2, a3) {\n var sp = stackSave();\n try {\n return dynCall_iiii(index, a1, a2, a3);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_viiii(index, a1, a2, a3, a4) {\n var sp = stackSave();\n try {\n dynCall_viiii(index, a1, a2, a3, a4);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nfunction invoke_ji(index, a1) {\n var sp = stackSave();\n try {\n return dynCall_ji(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n }\n}\n\nModule[\"AsciiToString\"] = AsciiToString;\n\nModule[\"FS\"] = FS;\n\nvar calledRun;\n\ndependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n};\n\nfunction callMain(args = []) {\n var entryFunction = _main;\n args.unshift(thisProgram);\n var argc = args.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv >> 2;\n args.forEach(arg => {\n HEAP32[argv_ptr++] = allocateUTF8OnStack(arg);\n });\n HEAP32[argv_ptr] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exitJS(ret, true);\n return ret;\n } catch (e) {\n return handleException(e);\n }\n}\n\nfunction run(args = arguments_) {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n}\n\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [ Module[\"preInit\"] ];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\n\nvar shouldRunNow = true;\n\nif (Module[\"noInitialRun\"]) shouldRunNow = false;\n\nrun();\n\n\n return Module.ready\n}\n\n);\n})();\nexport default Module;","module.exports = require('./helpers/bundle-url').getBundleURL('ejVIo') + require('./helpers/bundle-manifest').resolve(\"iM1SU\");","import { useState, useEffect } from 'preact/hooks'\n\nimport CheapGlkOte from 'cheap-glkote'\n\nimport TextBuffer from './OutputBox/TextBuffer/TextBuffer'\nimport GridBuffer from './OutputBox/GridBuffer/GridBuffer'\n\nimport InputBox from './InputBox/InputBox'\nimport Status from './Status/Status'\n\nimport {\n Handlers,\n unhandledRejectionHandler,\n} from './common/playerHandlers'\n\nimport * as s from './Player.module.scss'\n\nconst INITIAL_STATUS = {\n stage: 'loading',\n details: ['Preparing'],\n}\n\nconst runMachine = ({ engine: Engine, wasmBinary, storyfile, handlers }) => {\n const { Dialog, GlkOte, send } = CheapGlkOte(handlers)\n const instance = new Engine()\n\n instance.init(storyfile, {\n Dialog,\n GlkOte,\n Glk: {},\n wasmBinary,\n arguments: ['storyfile'],\n })\n instance.start()\n\n return { send, instance }\n}\n\nexport default function Player ({\n vmParts: { storyfile, engine, wasmBinary },\n onFullscreenRequest,\n setMenuOpen,\n singleWindow,\n}) {\n const [status, setStatus] = useState(INITIAL_STATUS)\n\n const [windows, setWindows] = useState([])\n const [currentWindowId, setCurrentWindowId] = useState(null)\n const [inputType, setInputType] = useState(null)\n const [inbox, setInbox] = useState([])\n\n const [vm, setVm] = useState(null)\n const [sendMessage, setSendMessage] = useState(null)\n\n useEffect(() => {\n const handlers = Handlers({\n setStatus,\n setWindows,\n setCurrentWindowId,\n setInputType,\n setInbox,\n })\n\n setVm(runMachine({\n engine,\n wasmBinary,\n storyfile,\n handlers,\n }))\n\n const rejectionHandler =\n unhandledRejectionHandler(handlers.onExit)\n\n window.addEventListener('unhandledrejection', rejectionHandler)\n\n return () => {\n setVm(null)\n window.removeEventListener('unhandledrejection', rejectionHandler)\n }\n }, [storyfile, engine, wasmBinary])\n\n useEffect(() => {\n setSendMessage(() => vm\n ? vm.send\n : null)\n\n return () => setSendMessage(null)\n }, [vm])\n\n const textWindow = (inbox) => (currentWindow) => {\n const props = {\n inbox,\n currentWindow,\n }\n\n return ({\n buffer: ,\n grid: ,\n })[currentWindow.type]\n }\n\n const byTop = (a, b) =>\n a.top - b.top\n\n return status.stage !== 'ready'\n ? ()\n : (
\n
\n {\n windows\n .sort(byTop)\n .filter(singleWindow\n ? ({ id }) => id === currentWindowId\n : () => true)\n .map(textWindow(inbox))\n }\n
\n \n
)\n}\n","import FakeDialog from './fakeDialog.js'\nimport CheapGlkOte from './cheapGlkOte.js'\n\nconst noop = () => void null\n\nconst defaultHandlers = [\n 'onInit',\n 'onUpdateWindows',\n 'onUpdateInputs',\n 'onUpdateContent',\n 'onDisable',\n 'onFileNameRequest',\n 'onFileRead',\n 'onFileWrite',\n 'onExit',\n].reduce((acc, x) => ((acc[x] = noop), acc), {})\n\nconst defaultLoggers = {\n log: console.log,\n warning: console.warn,\n error: console.error,\n}\n\nconst defaultSize = {\n width: 80,\n height: 25,\n}\n\nexport default (handlers_, {loggers: loggers_, size: size_ } = {}) => {\n const handlers =\n Object.assign({}, defaultHandlers, handlers_)\n const loggers =\n Object.assign({}, defaultLoggers, loggers_)\n const size =\n Object.assign({}, defaultSize, size_)\n\n const Dialog = new FakeDialog(handlers, loggers)\n const GlkOte = new CheapGlkOte(handlers, loggers, size)\n\n const send = GlkOte.sendFn.bind(GlkOte)\n\n return {\n Dialog,\n GlkOte,\n send,\n }\n}\n","/**\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/glkote-dumb.js\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/electrofs.js\n */\n\nclass FakeDialog {\n constructor(handlers, loggers) {\n this.streaming = false\n this.handlers = handlers\n this.loggers = loggers\n }\n\n file_ref_exists({ usage }) {\n return usage === 'save'\n ? true\n : false\n }\n\n file_remove_ref () {\n return true\n }\n\n file_construct_ref(filename, usage) {\n return {\n filename,\n usage: usage || ''\n }\n }\n\n file_read(dirent, israw) {\n return this.handlers.onFileRead(dirent, israw)\n }\n\n file_write(dirent, content, israw) {\n if (content.length === 0) return (void null)\n this.handlers.onFileWrite(dirent, content, israw)\n }\n\n open(tosave, usage, gameid, callback) {\n this.handlers.onFileNameRequest(tosave, usage, gameid, callback)\n }\n\n log(message) {\n this.loggers.log(message)\n }\n\n warning(message) {\n this.loggers.warn(message)\n }\n\n error(message) {\n this.loggers.error(message)\n }\n}\n\nexport default FakeDialog\n","/**\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/glkote-dumb.js\n */\n\nimport GlkOte from './glkOte/glkote-term.js'\n\nclass CheapGlkOte extends GlkOte {\n constructor(handlers, loggers, size) {\n super(size)\n\n this.handlers = handlers\n this.loggers = loggers\n }\n\n sendFn (message, type, window) {\n this.send_response(\n type,\n window,\n message)\n }\n\n init (iface) {\n this.handlers.onInit()\n super.init(iface)\n }\n\n update_inputs (data) {\n if (!data.length) return []\n this.handlers.onUpdateInputs(data)\n }\n\n accept_specialinput (data) {\n if (data.type === 'fileref_prompt') {\n const callback = ref =>\n this.send_response(\n 'specialresponse', null, 'fileref_prompt', ref)\n\n this.interface.Dialog.open(\n data.filemode !== 'read',\n data.filetype,\n data.gameid,\n callback)\n } else {\n this.error(\n 'Request for unknown special input type: ' + data.type)\n }\n }\n\n update_content (messages) {\n this.handlers.onUpdateContent(messages)\n }\n\n exit () {\n this.handlers.onExit()\n super.exit()\n }\n\n cancel_inputs (data) {\n this.handlers.onUpdateInputs(data)\n }\n\n disable (data) {\n this.handlers.onDisable(data)\n }\n\n update_windows (windows) {\n this.handlers.onUpdateWindows(windows)\n }\n\n log (message) {\n this.loggers.log(message)\n }\n\n warning (message) {\n this.loggers.warn(message)\n }\n\n error (message) {\n this.loggers.error(message)\n }\n}\n\nexport default CheapGlkOte\n","/**\n * @see: https://github.com/curiousdannii/glkote-term/blob/master/src/glkote-term.js\n */\n\nclass GlkOte {\n constructor({width, height}) {\n this.width = width\n this.height = height\n\n this.current_metrics = null\n this.disabled = false\n this.generation = 0\n this.interface = null\n this.version = '0.5.1'\n }\n\n measure_window() {\n return {\n width: this.width,\n height: this.height,\n buffercharheight: 1,\n buffercharwidth: 1,\n buffermarginx: 0,\n buffermarginy: 0,\n graphicsmarginx: 0,\n graphicsmarginy: 0,\n gridcharheight: 1,\n gridcharwidth: 1,\n gridmarginx: 0,\n gridmarginy: 0,\n inspacingx: 0,\n inspacingy: 0,\n outspacingx: 0,\n outspacingy: 0\n }\n }\n\n getinterface() {\n return this.interface\n }\n\n init(iface) {\n if (!iface) {\n this.error('No game interface object has been provided.')\n }\n if (!iface.accept) {\n this.error('The game interface object must have an accept() function.')\n }\n\n this.interface = iface\n this.current_metrics = this.measure_window()\n\n this.send_response('init', null, this.current_metrics)\n }\n\n update(data) {\n if (data.type === 'error') {\n this.error(data.message)\n }\n if (data.type === 'pass') {\n return\n }\n if (data.type !== 'update' && data.type !== 'exit') {\n this.log(`Ignoring unknown message type: ${data.type}`)\n return\n }\n if (data.gen === this.generation) {\n this.log(`Ignoring repeated generation number: ${data.gen}`)\n return\n }\n if (data.gen < this.generation) {\n this.log(\n `Ignoring out-of-order generation number: got ${data.gen}, currently at ${this.generation}`\n )\n return\n }\n this.generation = data.gen\n\n if (this.disabled) {\n this.disable(false)\n }\n\n /* Handle the update */\n if (data.input != null) {\n this.cancel_inputs(data.input)\n }\n if (data.windows != null) {\n this.update_windows(data.windows)\n }\n if (data.content != null && data.content.length) {\n this.update_content(data.content)\n }\n if (data.input != null) {\n this.update_inputs(data.input)\n }\n\n /* Disable everything if requested */\n this.disabled = false\n if (data.disabled || data.specialinput) {\n this.disable(true)\n }\n\n if (data.specialinput != null) {\n this.accept_specialinput(data.specialinput)\n }\n\n /* Detach all handlers and exit */\n if (data.type === 'exit') {\n this.exit()\n }\n }\n\n send_response(type, win, val, val2) {\n const res = {\n type: type,\n gen: this.generation,\n }\n\n if (win) {\n res.window = win.id\n }\n\n if (type === 'init' || type === 'arrange') {\n res.metrics = val\n }\n\n if (type === 'init') {\n res.support = this.support()\n }\n\n if (type === 'char') {\n res.value = val\n }\n\n if (type === 'line') {\n res.value = val\n }\n\n if (type === 'specialresponse') {\n res.response = val\n res.value = val2\n }\n\n this.interface.accept(res)\n }\n\n support() {\n return []\n }\n}\n\nexport default GlkOte\n","import { useEffect, useRef, useState } from 'preact/hooks'\n\nimport TextMessage from '../TextMessage/TextMessage'\n\nimport * as s from '../../Player.module.scss'\n\nconst eol = { style: 'endOfLine' }\nconst scrollTarget = { style: 'scrollTarget' }\n\nconst isFakeStatus = (w) =>\n w.height < 5\n\nconst trimInputPrompt = (messages) =>\n messages.length < 1\n ? messages\n : messages.slice(-1)[0].text === '>'\n ? messages.slice(0, messages.length - 1)\n : messages\n\nconst parseInbox = (inbox, currentWindow) => {\n const currentInbox =\n inbox.find(({ id }) =>\n id === currentWindow.id)\n\n if (!currentInbox) {\n return {\n clear: false,\n incoming: [scrollTarget],\n }\n }\n\n const { text: inboxMessagesRaw } =\n currentInbox\n\n const incoming =\n inboxMessagesRaw\n /* Normalize. */\n .map(({ content }) =>\n content\n ? [...trimInputPrompt(content), eol]\n : [eol])\n /* Flatten. */\n .reduce((acc, x) =>\n acc.concat(x), [scrollTarget])\n\n return {\n incoming,\n clear: isFakeStatus(currentWindow)\n ? true\n : currentInbox.clear,\n }\n}\n\nexport default function TextBuffer ({ inbox, currentWindow }) {\n const [messages, setMessages] = useState([])\n const textBufferEl = useRef(null)\n\n useEffect(() => {\n const { incoming, clear } =\n parseInbox(inbox, currentWindow)\n\n setMessages((messages) => clear\n ? incoming\n : messages.concat(incoming))\n\n setTimeout(() => {\n const scrollTargets =\n textBufferEl.current.querySelectorAll(`.${scrollTarget.style}`)\n const freshScrollTarget =\n scrollTargets[scrollTargets.length - 1]\n\n freshScrollTarget\n ? freshScrollTarget.scrollIntoView()\n : textBufferEl.current.scrollTo({\n top: textBufferEl.current.scrollHeight,\n behavior: 'smooth',\n })\n }, 0)\n }, [currentWindow, inbox])\n\n const classes = () => [\n s.buffer,\n isFakeStatus(currentWindow)\n ? s.gridBuffer\n : s.textBuffer,\n ].join(' ')\n\n return (\n \n {messages.map(TextMessage)}\n \n )\n}\n","import * as s from './TextMessage.module.scss'\n\nexport default function TextMessage ({ style, text }) {\n const defaultContent = (\n \n {text}\n )\n\n return ({\n grid:\n (text?.length > 0 ?
{text}
:
),\n input:\n (> {text}),\n subheader:\n ({text}),\n emphasized:\n ({text}),\n scrollTarget:\n (
),\n endOfLine:\n (
),\n })[style] || defaultContent\n}\n",".message {\n &.input {\n color: var(--input-color);\n }\n\n &.emphasized,\n &.subheader {\n color: var(--accent-color);\n }\n}\n\n.scrollTarget {\n scroll-margin-block-start: var(--inner-padding);\n}\n",".elseifplayer {\n height: 100%;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n\n background-color: var(--bg-color);\n color: var(--main-color);\n padding: var(--outer-padding);\n\n .output {\n display: flex;\n flex-grow: 2;\n flex-direction: column;\n overflow-y: hidden;\n overflow-wrap: break-word;\n\n border: var(--border-width) solid var(--main-color);\n\n .buffer {\n overflow-y: scroll;\n box-sizing: border-box;\n\n padding: var(--inner-padding);\n\n &:empty {\n display: none;\n }\n\n & > br:first-child,\n & > br:last-child,\n & > br + br + br {\n display: none;\n }\n\n &.gridBuffer {\n flex-shrink: 0;\n max-height: 100%;\n border-bottom: var(--separator-width) solid var(--main-color);\n }\n\n &.textBuffer {\n flex: 2 1;\n outline: none;\n scroll-behavior: smooth;\n }\n }\n }\n}\n","import { useEffect, useState } from 'preact/hooks'\n\nimport TextMessage from '../TextMessage/TextMessage'\n\nimport * as s from '../../Player.module.scss'\n\nexport default function GridBuffer ({ inbox, currentWindow }) {\n const [prevMessages, setPrevMessages] = useState([])\n const [messages, setMessages] = useState([])\n\n useEffect(() => {\n const currentInboxObj =\n inbox.find(({ id }) =>\n id === currentWindow.id)\n\n const currentInbox = currentInboxObj?.lines ?? []\n\n const newOrPrev = (cur, prev) => (i) => {\n const byId = (list, i) =>\n list.find(({ line }) => line === i)\n\n return byId(cur, i) || byId(prev, i)\n }\n\n const rawMessages =\n Array(currentWindow.gridheight)\n .fill(null)\n .map((_, i) => i)\n .map(newOrPrev(currentInbox, prevMessages))\n\n /* */\n\n const shouldUpdatePrev = (rawMessages, prevMessages) => {\n const serialize = JSON.stringify\n return serialize(rawMessages) !== serialize(prevMessages)\n }\n\n if (shouldUpdatePrev(rawMessages, prevMessages)) {\n setPrevMessages(rawMessages)\n }\n\n /* */\n\n\n const rawMessagesContent =\n rawMessages\n .map((x) => x.content)\n .flat()\n .map((message) => ({\n ...message,\n text: message.text.trim(),\n }))\n\n const isEmpty =\n rawMessagesContent\n .map(({ text }) => text.length)\n .every((l) => l === 0)\n\n const getGridStyle = ({ style }) => {\n if (['alert', 'normal'].includes(style)) return 'grid'\n return style || 'grid'\n }\n\n const messages =\n rawMessagesContent\n .map((message) => ({\n style: getGridStyle(message),\n text: message.text.replace(' ', ' / '),\n }))\n\n setMessages(isEmpty ? [] : messages)\n }, [inbox, currentWindow, prevMessages])\n\n return (\n
\n {messages.map(TextMessage)}\n
\n )\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\n\nimport MenuButton from './MenuButton/MenuButton'\n\nimport * as s from './InputBox.module.scss'\n\n/* eslint-disable */\nconst keyCodes = {\n KEY_BACKSPACE: 8,\n KEY_TAB: 9,\n KEY_RETURN: 13,\n KEY_ESC: 27,\n KEY_PAGEUP: 33,\n KEY_PAGEDOWN: 34,\n KEY_END: 35,\n KEY_HOME: 36,\n KEY_LEFT: 37,\n KEY_UP: 38,\n KEY_RIGHT: 39,\n KEY_DOWN: 40\n}\n\nconst keyNames = {\n [keyCodes.KEY_BACKSPACE]: 'delete',\n [keyCodes.KEY_TAB]: 'tab',\n [keyCodes.KEY_RETURN]: 'return',\n [keyCodes.KEY_ESC]: 'escape',\n [keyCodes.KEY_PAGEUP]: 'pageup',\n [keyCodes.KEY_PAGEDOWN]: 'pagedown',\n [keyCodes.KEY_END]: 'end',\n [keyCodes.KEY_HOME]: 'home',\n [keyCodes.KEY_LEFT]: 'left',\n [keyCodes.KEY_UP]: 'up',\n [keyCodes.KEY_RIGHT]: 'right',\n [keyCodes.KEY_DOWN]: 'down'\n}\n/* eslint-enable */\n\nconst hasModifier = (event) => {\n const modifiers = [\n event.altKey,\n event.ctrlKey,\n event.metaKey,\n event.shiftKey,\n ]\n\n return modifiers.some((modifier) => modifier === true)\n}\n\nexport default function InputBox ({\n inputType,\n windows,\n currentWindowId,\n sendMessage,\n onFullscreenRequest,\n setMenuOpen,\n}) {\n const [targetWindow, setTargetWindow] = useState(null)\n const [inputText, setInputText] = useState('')\n const [lastInput, setLastInput] = useState('')\n const inputEl = useRef(null)\n\n useEffect(() => {\n let setFocus = () => {\n inputEl.current && inputEl.current.focus()\n }\n\n setInputText('')\n setFocus()\n\n document.addEventListener('fullscreenchange', setFocus)\n return () => document.removeEventListener('fullscreenchange', setFocus)\n }, [inputType])\n\n useEffect(() => {\n setTargetWindow(\n windows\n .find(({ id }) =>\n id === currentWindowId))\n }, [currentWindowId, windows])\n\n const send = (message) => {\n sendMessage(\n message,\n inputType,\n targetWindow)\n setLastInput(message)\n setInputText('')\n }\n\n const charHandler = (event) =>\n (event.keyCode === 229\n ? charHandlerMobile\n : charHandlerDefault)(event)\n\n const charHandlerDefault = (event) => {\n if (hasModifier(event)) { return undefined }\n\n event.preventDefault()\n\n const key =\n keyNames[event.keyCode] ||\n event.key\n\n send(key)\n }\n\n const charHandlerMobile = (event) =>\n setTimeout(() => {\n send(event.target.value.slice(-1).toUpperCase())\n setInputText('')\n })\n\n const lineHandler = ({ keyCode, target: { value } }) => {\n if (keyCode === keyCodes.KEY_RETURN) {\n send(value)\n }\n }\n\n const lineArrowHandler = ({ keyCode }) => {\n if (keyCode === keyCodes.KEY_UP) {\n setInputText(lastInput)\n\n setTimeout(() => {\n const end = lastInput.length\n inputEl.current.setSelectionRange(end, end)\n }, 0)\n }\n if (keyCode === keyCodes.KEY_DOWN) {\n setInputText('')\n }\n }\n\n const inputHandlers = {\n char: {\n maxlength: '1',\n placeholder: 'Press any key here',\n onKeyDown: charHandler,\n },\n line: {\n placeholder: ' > ',\n onKeyDown: lineArrowHandler,\n onKeyPress: lineHandler,\n },\n finished: {\n placeholder: 'The program has finished',\n disabled: true,\n },\n }\n\n return (\n
\n setInputText(value)}\n type='search' />\n setMenuOpen(true)} />\n
\n )\n}\n","import * as s from './MenuButton.module.scss'\n\nexport default function MenuButton ({ onClick }) {\n return (\n \n \n \n \n \n \n \n )\n}\n",".menuButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: none;\n outline-offset: -8px;\n position: absolute;\n right: 0;\n height: 100%;\n padding: 0;\n\n @media (max-width: 800px) {\n padding: 0 calc(0.5 * var(--inner-padding));\n overflow: hidden;\n }\n\n &:focus-visible {\n outline-offset: -4px;\n }\n\n .menuIcon {\n height: 32px;\n fill: none;\n stroke: currentColor;\n stroke-width: 2px;\n\n @media (max-width: 800px) {\n transform: scaleX(2) scaleY(0.5);\n fill: currentColor;\n }\n }\n}\n",".inputControls {\n position: relative;\n margin-top: var(--input-box-margin);\n\n .inputBox {\n font: inherit;\n color: inherit;\n outline: 0;\n\n background-color: var(--bg-color);\n border: var(--border-width) solid var(--main-color);\n border-top: var(--separator-width) solid var(--main-color);\n padding: var(--inner-padding);\n padding-right: calc(4 * var(--inner-padding));\n margin: 0;\n width: 100%;\n\n &::placeholder {\n color: var(--main-color);\n opacity: 1;\n }\n\n &:focus::placeholder {\n opacity: 0.5;\n }\n\n &::-webkit-search-cancel-button {\n display: none;\n }\n }\n}\n","import { Link } from 'wouter-preact'\n\nimport * as s from './Status.module.scss'\n\nconst fail = (details) => (\n
\n

\n Error\n

\n {details.map((x) => (

{x}

))}\n
\n \n Home\n \n |\n \n Report bug\n \n
\n)\n\nconst loading = (details) => (\n
\n {details.map((x) => (
{x}
))}\n
\n)\n\nexport default ({ stage, details }) =>\n ({ fail, loading })[stage](details)\n","@keyframes dots0123 {\n 0% { content: ''; }\n 33% { content: '.'; }\n 66% { content: '..'; }\n 100% { content: '...'; }\n}\n\n.status {\n word-break: break-word;\n padding-block: var(--inner-padding);\n\n @media (max-width: 800px) {\n padding: var(--inner-padding);\n }\n\n &.loading > div:after {\n animation: dots0123 1s infinite;\n content: '';\n }\n}\n\n","import { encode, decode } from 'base32768'\n\nexport const Handlers = ({\n setStatus,\n setWindows,\n setCurrentWindowId,\n setInputType,\n setInbox,\n}) => ({\n onInit: () => {\n setStatus({ stage: 'ready' })\n },\n /* */\n onUpdateWindows: (windows) => {\n setWindows(windows)\n },\n onUpdateInputs: (data) => {\n if (data.length === 0) return null\n\n const { type, id } = data[0]\n setCurrentWindowId(id)\n setInputType(type)\n },\n onUpdateContent: (inbox) => {\n setInbox(inbox)\n },\n onDisable: () => {\n setInputType(null)\n },\n /* */\n onFileNameRequest: (_tosave, usage, _gameId, setFileName) => {\n setFileName({\n usage,\n filename: prompt('Enter the filename'),\n })\n },\n onFileRead: ({ filename }) => {\n const content = localStorage.getItem(`fake-fs/${filename}`)\n return decode(content)\n },\n onFileWrite: ({ filename }, content) => {\n localStorage.setItem(`fake-fs/${filename}`, encode(content))\n },\n /* */\n onExit: () => {\n setInputType('finished')\n },\n})\n\nexport const unhandledRejectionHandler = (onExit) => (event) => {\n if (event.reason.name === 'ExitStatus' || event.reason.message === 'Program terminated with exit(0)') {\n onExit()\n } else {\n console.error('Unhandled rejection (promise: ', event.promise, ', reason: ', event.reason, ').')\n }\n event.preventDefault()\n}\n","/**\r\n Base32768 is a binary-to-text encoding optimised for UTF-16-encoded text.\r\n (e.g. Windows, Java, JavaScript)\r\n*/\r\n\r\n// Z is a number, usually a uint15 but sometimes a uint7\r\n\r\nconst BITS_PER_CHAR = 15 // Base32768 is a 15-bit encoding\r\nconst BITS_PER_BYTE = 8\r\n\r\nconst pairStrings = [\r\n 'ҠҿԀԟڀڿݠޟ߀ߟကဟႠႿᄀᅟᆀᆟᇠሿበቿዠዿጠጿᎠᏟᐠᙟᚠᛟកសᠠᡟᣀᣟᦀᦟ᧠᧿ᨠᨿᯀᯟᰀᰟᴀᴟ⇠⇿⋀⋟⍀⏟␀␟─❟➀➿⠀⥿⦠⦿⨠⩟⪀⪿⫠⭟ⰀⰟⲀⳟⴀⴟⵀⵟ⺠⻟㇀㇟㐀䶟䷀龿ꀀꑿ꒠꒿ꔀꗿꙀꙟꚠꛟ꜀ꝟꞀꞟꡀꡟ',\r\n 'ƀƟɀʟ'\r\n]\r\n\r\nconst lookupE = {}\r\nconst lookupD = {}\r\npairStrings.forEach((pairString, r) => {\r\n // Decompression\r\n const encodeRepertoire = []\r\n pairString.match(/../gu).forEach(pair => {\r\n const first = pair.codePointAt(0)\r\n const last = pair.codePointAt(1)\r\n for (let codePoint = first; codePoint <= last; codePoint++) {\r\n encodeRepertoire.push(String.fromCodePoint(codePoint))\r\n }\r\n })\r\n\r\n const numZBits = BITS_PER_CHAR - BITS_PER_BYTE * r // 0 -> 15, 1 -> 7\r\n lookupE[numZBits] = encodeRepertoire\r\n encodeRepertoire.forEach((chr, z) => {\r\n lookupD[chr] = [numZBits, z]\r\n })\r\n})\r\n\r\nconst encode = uint8Array => {\r\n const length = uint8Array.length\r\n\r\n let str = ''\r\n let z = 0\r\n let numZBits = 0\r\n\r\n for (let i = 0; i < length; i++) {\r\n const uint8 = uint8Array[i]\r\n\r\n // Take most significant bit first\r\n for (let j = BITS_PER_BYTE - 1; j >= 0; j--) {\r\n const bit = (uint8 >> j) & 1\r\n\r\n z = (z << 1) + bit\r\n numZBits++\r\n\r\n if (numZBits === BITS_PER_CHAR) {\r\n str += lookupE[numZBits][z]\r\n z = 0\r\n numZBits = 0\r\n }\r\n }\r\n }\r\n\r\n if (numZBits !== 0) {\r\n // Final bits require special treatment.\r\n\r\n // z = bbbbbbcccccccc, numZBits = 14, padBits = 1\r\n // z = bbbbbcccccccc, numZBits = 13, padBits = 2\r\n // z = bbbbcccccccc, numZBits = 12, padBits = 3\r\n // z = bbbcccccccc, numZBits = 11, padBits = 4\r\n // z = bbcccccccc, numZBits = 10, padBits = 5\r\n // z = bcccccccc, numZBits = 9, padBits = 6\r\n // z = cccccccc, numZBits = 8, padBits = 7\r\n // => Pad `z` out to 15 bits using 1s, then encode as normal (r = 0)\r\n\r\n // z = ccccccc, numZBits = 7, padBits = 0\r\n // z = cccccc, numZBits = 6, padBits = 1\r\n // z = ccccc, numZBits = 5, padBits = 2\r\n // z = cccc, numZBits = 4, padBits = 3\r\n // z = ccc, numZBits = 3, padBits = 4\r\n // z = cc, numZBits = 2, padBits = 5\r\n // z = c, numZBits = 1, padBits = 6\r\n // => Pad `z` out to 7 bits using 1s, then encode specially (r = 1)\r\n\r\n while (!(numZBits in lookupE)) {\r\n z = (z << 1) + 1\r\n numZBits++\r\n }\r\n\r\n str += lookupE[numZBits][z]\r\n }\r\n\r\n return str\r\n}\r\n\r\nconst decode = str => {\r\n const length = str.length\r\n\r\n // This length is a guess. There's a chance we allocate one more byte here\r\n // than we actually need. But we can count and slice it off later\r\n const uint8Array = new Uint8Array(Math.floor(length * BITS_PER_CHAR / BITS_PER_BYTE))\r\n let numUint8s = 0\r\n let uint8 = 0\r\n let numUint8Bits = 0\r\n\r\n for (let i = 0; i < length; i++) {\r\n const chr = str.charAt(i)\r\n\r\n if (!(chr in lookupD)) {\r\n throw new Error(`Unrecognised Base32768 character: ${chr}`)\r\n }\r\n\r\n const [numZBits, z] = lookupD[chr]\r\n\r\n if (numZBits !== BITS_PER_CHAR && i !== length - 1) {\r\n throw new Error('Secondary character found before end of input at position ' + String(i))\r\n }\r\n\r\n // Take most significant bit first\r\n for (let j = numZBits - 1; j >= 0; j--) {\r\n const bit = (z >> j) & 1\r\n\r\n uint8 = (uint8 << 1) + bit\r\n numUint8Bits++\r\n\r\n if (numUint8Bits === BITS_PER_BYTE) {\r\n uint8Array[numUint8s] = uint8\r\n numUint8s++\r\n uint8 = 0\r\n numUint8Bits = 0\r\n }\r\n }\r\n }\r\n\r\n // Final padding bits! Requires special consideration!\r\n // Remember how we always pad with 1s?\r\n // Note: there could be 0 such bits, check still works though\r\n if (uint8 !== ((1 << numUint8Bits) - 1)) {\r\n throw new Error('Padding mismatch')\r\n }\r\n\r\n return new Uint8Array(uint8Array.buffer, 0, numUint8s)\r\n}\r\n\r\nexport { encode, decode }\r\n","import { useEffect, useRef } from 'preact/hooks'\nimport { Link } from 'wouter-preact'\n\nimport ThemeSelector from\n '~/src/components/ThemeSelector/ThemeSelector'\n\nimport * as s from './MenuOverlay.module.scss'\n\nexport default function MenuOverlay ({\n themeEngine, onFullscreenRequest, menuOpen, setMenuOpen,\n}) {\n const dialog = useRef(null)\n\n useEffect(() => {\n const dialogOpen = dialog.current.open\n\n if (menuOpen && !dialogOpen) {\n dialog.current.showModal()\n }\n\n if (!menuOpen && dialogOpen) {\n dialog.current.close()\n }\n }, [menuOpen])\n\n useEffect(() => {\n const currentDialog = dialog.current\n const closeHandler = () => {\n setMenuOpen(false)\n }\n\n currentDialog.addEventListener('close', closeHandler)\n return () => currentDialog.removeEventListener('close', closeHandler)\n }, [dialog, setMenuOpen])\n\n\n return (\n \n
\n
\n dialog.current.close()}\n >\n Close this menu\n \n
\n\n
\n {\n dialog.current.close()\n onFullscreenRequest()\n }}\n >\n Full screen\n \n themeEngine.setRandomTheme()}\n >\n Set a random theme\n \n \n
\n\n
\n \n ElseIfPlayer\n \n
\n
\n
\n )\n}\n",".menu {\n width: 100%;\n\n border-left: none;\n border-right: none;\n text-align: center;\n padding-top: 0;\n padding-bottom: 0;\n\n background-color: var(--bg-color);\n border-color: var(--main-color);\n color: var(--main-color);\n\n &::backdrop {\n background: none;\n backdrop-filter: blur(2px);\n }\n\n & > section {\n margin: 32px auto 40px;\n gap: 32px;\n max-width: 270px;\n display: flex;\n flex-direction: column;\n }\n\n .navigation {\n color: var(--accent-color);\n }\n\n .appearance {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n select,\n button {\n width: 100%;\n }\n}\n","import Status from '~/src/components/Player/Status/Status'\n\nexport default function NotFoundView () {\n return
\n \n
\n}\n",".app {\n min-height: 100%;\n box-sizing: border-box;\n\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n color: var(--main-color);\n background-color: var(--bg-color);\n\n /* */\n &.home, &.games, &.themes {\n padding: var(--inner-padding);\n\n /* Fix for Jumping Scrollbar Issue */\n @media (min-width: 800px) {\n padding-left: calc(100vw - 100% + var(--inner-padding));\n }\n }\n\n /* Player view */\n &.play, &.focus {\n height: 100%;\n max-height: 100dvh;\n\n @media (min-width: 800px) {\n & > main {\n max-height: 90%;\n margin: auto;\n }\n }\n }\n\n /* */\n & > main {\n flex: 1 1 auto;\n\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n\n @media (min-width: 800px) {\n margin: 5vh 0;\n max-width: 800px;\n }\n }\n}\n"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","l","u","_scriptDir","i","t","o","r","f","$6b876c53408b349f$export$b7e3ae3d7c15e42e","$6b876c53408b349f$export$a8ecead220dd38a6","$6b876c53408b349f$export$c789db2c85949867","$6b876c53408b349f$export$d61e5f8e032e1547","$6b876c53408b349f$export$77694752ff0b3730","$7742cff3645aa0b6$export$1ee2ee71de083e4d","$7742cff3645aa0b6$export$b7e3ae3d7c15e42e","$7742cff3645aa0b6$export$a8ecead220dd38a6","$7742cff3645aa0b6$export$64cbebf88d5f7b08","$7742cff3645aa0b6$export$d61e5f8e032e1547","$7264401512871bae$export$ab1029bcae9ddb4a","$7264401512871bae$export$347a3a46df242257","$d7f5f88be915a221$export$471f7ae5c4103ae1","$6003de219045a58b$export$729c8b7179294ba","$6003de219045a58b$export$d7ddd398f22d79ef","$6003de219045a58b$export$79863f625c4e57","$6003de219045a58b$export$d12a05a2da93ee73","$6003de219045a58b$export$899fbdb5fa08b653","$6003de219045a58b$export$d9a33280f07116d9","$parcel$global","globalThis","self","window","global","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$49c1aa6c5541520f$export$bdfd709ae4826697","$49c1aa6c5541520f$var$bundleURL","value","$49c1aa6c5541520f$var$getBundleURL","matches","stack","match","replace","$551174e99d8c5924$var$n","$551174e99d8c5924$export$41c562ebe57d11e2","$551174e99d8c5924$var$u","$551174e99d8c5924$export$a8257692ac88316c","$551174e99d8c5924$var$t","$551174e99d8c5924$var$o","$551174e99d8c5924$var$r","$551174e99d8c5924$var$f","$551174e99d8c5924$var$e","$551174e99d8c5924$var$c","$551174e99d8c5924$var$s","$551174e99d8c5924$var$a","$551174e99d8c5924$var$v","Array","isArray","$551174e99d8c5924$var$h","$551174e99d8c5924$var$p","parentNode","removeChild","$551174e99d8c5924$export$c8a8987d4410bf2d","arguments","length","children","defaultProps","$551174e99d8c5924$var$d","type","props","key","ref","__k","__","__b","__e","__d","__c","__h","constructor","__v","vnode","$551174e99d8c5924$export$ffb0004e005737fa","$551174e99d8c5924$export$16fa2f45be04daa8","context","$551174e99d8c5924$var$g","indexOf","$551174e99d8c5924$var$w","push","$551174e99d8c5924$var$x","__r","debounceRendering","c","sort","shift","__P","$551174e99d8c5924$var$L","__n","ownerSVGElement","$551174e99d8c5924$var$M","$551174e99d8c5924$var$m","base","$551174e99d8c5924$var$P","a","h","p","y","_","b","m","w","x","P","$551174e99d8c5924$var$C","$551174e99d8c5924$var$$","$551174e99d8c5924$var$A","nextSibling","$551174e99d8c5924$var$q","unmount","current","$551174e99d8c5924$var$O","componentWillUnmount","appendChild","insertBefore","$551174e99d8c5924$var$I","setProperty","test","$551174e99d8c5924$var$T","style","cssText","toLowerCase","slice","addEventListener","$551174e99d8c5924$var$z","$551174e99d8c5924$var$j","removeEventListener","removeAttribute","setAttribute","event","d","g","C","S","$","A","H","I","contextType","__E","prototype","render","$551174e99d8c5924$var$B","sub","state","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","forEach","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","$551174e99d8c5924$var$N","k","localName","nodeType","document","createTextNode","createElementNS","createElement","is","data","childNodes","dangerouslySetInnerHTML","attributes","name","__html","innerHTML","$551174e99d8c5924$var$H","checked","diffed","some","$551174e99d8c5924$export$e530037191fcd5d7","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Promise","then","bind","resolve","setTimeout","$8161a3c5d316e860$var$_","$8161a3c5d316e860$export$34b9dba7ce09269b","__source","__self","$5c5fa90583e4b8e8$var$t","$5c5fa90583e4b8e8$var$r","$5c5fa90583e4b8e8$var$u","$5c5fa90583e4b8e8$var$i","$5c5fa90583e4b8e8$var$o","$5c5fa90583e4b8e8$var$f","$5c5fa90583e4b8e8$var$c","$5c5fa90583e4b8e8$var$e","$5c5fa90583e4b8e8$var$a","$5c5fa90583e4b8e8$var$v","$5c5fa90583e4b8e8$var$l","$5c5fa90583e4b8e8$var$m","$5c5fa90583e4b8e8$var$d","__H","__V","$5c5fa90583e4b8e8$export$60241385465d0a34","$5c5fa90583e4b8e8$export$13e3392192263954","$5c5fa90583e4b8e8$var$B","__N","filter","every","$5c5fa90583e4b8e8$export$6d9c69b0de29b591","$5c5fa90583e4b8e8$var$z","$5c5fa90583e4b8e8$export$e5c5a5f917a5871c","$5c5fa90583e4b8e8$export$b8f5890fc79d6aca","$5c5fa90583e4b8e8$export$1538c33de8887b59","$5c5fa90583e4b8e8$var$b","$5c5fa90583e4b8e8$var$k","$5c5fa90583e4b8e8$var$w","requestAnimationFrame","$5c5fa90583e4b8e8$var$j","$5c5fa90583e4b8e8$var$g","clearTimeout","cancelAnimationFrame","$fe1664b9958a6563$var$canUseDOM","$fe1664b9958a6563$var$is","$fe1664b9958a6563$export$90fc3a17d93f704c","fn","args","$e85d6386137e524a$var$relativePath","path","location","pathname","$e85d6386137e524a$var$absolutePath","to","$e85d6386137e524a$var$eventPushState","$e85d6386137e524a$var$eventReplaceState","$e85d6386137e524a$export$4bf9923669ad6c63","$e85d6386137e524a$var$subscribeToLocationUpdates","callback","$e85d6386137e524a$export$3a1ff78c39f8a86","ssrFn","subscribe","getSnapshot","getSSRSnapshot","_instance","_value","_getSnapshot","$e85d6386137e524a$var$currentPathname","$e85d6386137e524a$export$2a28ef6a9fe822a4","ssrPath","$e85d6386137e524a$export$ff7962acd6052c28","history","original","result","apply","Event","dispatchEvent","$d7bafb128031febe$var$escapeRx","str","$d7bafb128031febe$var$rxForSegment","repeat","optional","prefix","capture","$d7bafb128031febe$var$pathToRegexp","pattern","groupRx","lastIndex","keys","exec","segment","mod","index","prev","substring","regexp","RegExp","$bf49b3b08868bbb1$var$defaultRouter","hook","opts","navOpts","matcher","makeRegexpFn","cache","getRegexp","out","params","reduce","$bf49b3b08868bbb1$var$RouterCtx","Consumer","Provider","splice","$bf49b3b08868bbb1$export$9a302a45f65d0572","$bf49b3b08868bbb1$var$useLocationFromRouter","router","$bf49b3b08868bbb1$export$3f79f0b98112cf57","$bf49b3b08868bbb1$export$55185c17a0fcbe46","parent","updateRouter","proto","ownBase","$bf49b3b08868bbb1$export$e7b0ac011bb776c6","component","useRouteMatch","$bf49b3b08868bbb1$export$a6c7ac8248d6e38a","navigate","href","onClick","handleClick","ctrlKey","metaKey","altKey","shiftKey","button","defaultPrevented","preventDefault","extraProps","jsx","$bf49b3b08868bbb1$var$flattenChildren","concat","map","$bf49b3b08868bbb1$export$b5d5cf8927ab7262","originalLocation","element","$66f2da609d6d9bfe$var$windowLocation","hash","$66f2da609d6d9bfe$export$8eb08f90c24d5079","url","encodeURIComponent","$66f2da609d6d9bfe$export$4fac2eeccfa4a8ca","currentView","split","Boolean","$66f2da609d6d9bfe$export$b37f3f4c9f6562f7","currentLocation","setCurrentLocation","onHashChange","newLocation","scrollTo","$1a1447a1dbeb7cc3$export$d9a33280f07116d9","$1e789317f11755fe$var$LS_THEME_KEY","$1e789317f11755fe$var$DEFAULT_THEME","$1e789317f11755fe$var$getSavedTheme","savedTheme","localStorage","getItem","$1e789317f11755fe$var$assertTheme","theme","includes","$1e789317f11755fe$export$818080cba8053148","initialTheme","currentTheme","setCurrentTheme","setTheme","newTheme","setItem","setRandomTheme","randomTheme","Math","floor","random","themes","$1708390c5041b6e2$export$2e2bcd8739ae039","setLocation","buildLink","onChange","target","file","files","URL","createObjectURL","$bc4fc25313d9323c$export$2e2bcd8739ae039","urlRE","placeholder","onKeyPress","keyCode","encodeURI","$7c39639b64b564e0$export$2e2bcd8739ae039","themeEngine","options","$85078130a8d7a0de$export$2e2bcd8739ae039","rel","$c416337fc7df6b27$export$2e2bcd8739ae039","ifdb","$8072c402bd1a5d6e$export$2e2bcd8739ae039","$a9795ef4044b2e22$var$tutorialGame","$a9795ef4044b2e22$export$2e2bcd8739ae039","className","title","game","$d21b3c63351f5932$var$Preview","join","$d21b3c63351f5932$export$2e2bcd8739ae039","$02f1d47ba060901a$export$2e2bcd8739ae039","VM","dialog","Dialog","streaming","FS","Module","filename_map","filename_counter","close","stream","fstream","fclose","fmode","file_write","fref","createNode","mode","isDir","isFile","ErrnoError","node","node_ops","stream_ops","timestamp","Date","now","getattr","size","atime","ctime","dev","gid","ino","mtime","nlink","rdev","uid","get_dialog_ref","filename","usage","gameid","AsciiToString","_gidispatch_get_game_id","file_construct_ref","llseek","offset","whence","position","curpos","ftell","fseek","lookup","realname","file_ref_exists","mknod","mmap","mount","msync","open","flags","file_fopen","file_read","Uint8Array","read","buffer","min","subarray","buf","BufferClass","from","fread","readdir","readlink","register_filename","suffix","fakename","rename","rmdir","setattr","symlink","unlink","file_remove_ref","write","fwrite","end_of_write","old_data","$7c4ebf67e8338ec8$var$base_options","$7c4ebf67e8338ec8$export$2e2bcd8739ae039","assign","default_options","start","encoder","TextEncoder","show_help","emglken_stdin_buffers","emglken_stdin_ready","locateFile","print","startsWith","endsWith","obj","JSON","parse","specialinput","last_fr_usage","filetype","GlkOte","update","console","log","preRun","EFS","mkdir","chdir","wasmBinary","accept","response","json_data","stringify","encode","vmcore","$15b39ab17ec5a236$exports","getBundleURL","$1c3c240882313db4$var$Module","readyPromiseResolve","readyPromiseReject","read_","readAsync","readBinary","wasmMemory","EXITSTATUS","HEAP8","HEAPU8","HEAP16","HEAP32","HEAPU32","wasmBinaryFile","tempDouble","tempI64","calledRun","reject","moduleOverrides","arguments_","thisProgram","quit_","status","toThrow","scriptDirectory","currentScript","src","substr","lastIndexOf","xhr","XMLHttpRequest","send","responseText","onload","onerror","responseType","warn","noExitRuntime","WebAssembly","abort","ABORT","UTF8Decoder","TextDecoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","endIdx","endPtr","decode","UTF8ToString","ptr","maxPtr","end","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","charCodeAt","u1","lengthBytesUTF8","len","updateMemoryViews","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATEXIT__","__ATPOSTRUN__","runtimeExited","runtimeKeepaliveCounter","runDependencies","runDependencyWatcher","dependenciesFulfilled","addRunDependency","removeRunDependency","clearInterval","what","RuntimeError","isDataURI","getBinary","instantiateArrayBuffer","binaryFile","imports","receiver","getBinaryPromise","fetch","credentials","catch","binary","instantiate","instance","reason","ExitStatus","message","callRuntimeCallbacks","callbacks","exceptionCaught","uncaughtExceptionCount","exceptionLast","ExceptionInfo","excPtr","set_type","get_type","set_destructor","destructor","get_destructor","set_refcount","refcount","set_caught","caught","get_caught","set_rethrown","rethrown","get_rethrown","set_adjusted_ptr","add_ref","release_ref","adjustedPtr","get_adjusted_ptr","get_exception_ptr","___cxa_is_pointer_type","adjusted","___cxa_find_matching_catch","thrown","setTempRet0","info","thrownType","caughtType","___cxa_can_catch","PATH","isAbs","charAt","splitPath","splitPathRe","normalizeArray","parts","allowAboveRoot","up","last","unshift","normalize","isAbsolute","trailingSlash","dirname","root","dir","basename","lastSlash","paths","join2","PATH_FS","resolvedPath","resolvedAbsolute","cwd","TypeError","relative","trim","arr","fromParts","toParts","samePartsLength","outputParts","intArrayFromString","stringy","dontAddNull","u8array","numBytesWritten","TTY","ttys","shutdown","ops","input","output","registerDevice","tty","seekable","fsync","pos","get_char","bytesRead","undefined","put_char","default_tty_ops","prompt","readline","val","default_tty1_ops","MEMFS","ops_table","isBlkdev","isFIFO","allocate","link","chrdev","chrdev_stream_ops","contents","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","max","oldContents","resizeFileStorage","newSize","attr","blksize","blocks","ceil","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","hasOwnProperty","newname","oldpath","canOwn","prot","allocated","byteOffset","mmapFlags","mounts","devices","streams","nextInode","nameTable","currentPath","initialized","ignorePermissions","filesystems","syncFSRequests","lookupPath","follow_mount","recurse_count","current_path","islast","isMountpoint","mounted","follow","count","getPath","isRoot","mountpoint","hashName","parentid","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","destroyNode","isSocket","flagModes","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","errno","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","fd","getStream","createStream","FSStream","shared","defineProperties","object","isRead","isWrite","isAppend","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","pop","syncfs","populate","completed","doCallback","done","errored","pseudo","mountRoot","next","create","mkdirTree","dirs","mkdev","newpath","old_path","new_path","old_dir","old_dirname","new_dirname","old_name","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","created","ungotten","error","readFiles","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","cmd","arg","readFile","encoding","ret","writeFile","actualNumBytes","ArrayBuffer","isView","byteLength","createDefaultDirectories","createDefaultDevices","random_device","getRandomDevice","crypto","randomBuffer","getRandomValues","createDevice","createSpecialDirectories","proc_self","createStandardStreams","ensureErrnoError","setErrno","staticInit","quit","_fflush","getMode","canRead","canWrite","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","reverse","part","createFile","properties","createDataFile","forceLoadFile","isDevice","isFolder","createLazyFile","LazyUint8Array","lengthKnown","chunks","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","cacheLength","header","datalength","Number","getResponseHeader","hasByteServing","usesGzip","doXHR","setRequestHeader","overrideMimeType","lazyArray","_length","_chunkSize","writeChunks","createPreloadedFile","dontCreateFile","preFinish","dep","fullname","processData","byteArray","finish","Browser","handledByPreloadPlugin","arrayBuffer","text","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","db","createObjectStore","onsuccess","transaction","objectStore","ok","fail","total","putRequest","put","loadFilesFromDB","getRequest","SYSCALLS","DEFAULT_POLLMASK","calculateAt","dirfd","allowEmpty","dirstream","getStreamFromFD","doStat","func","abs","getTime","doMsync","addr","varargs","getStr","__isLeapYear","year","__MONTH_DAYS_LEAP_CUMULATIVE","__MONTH_DAYS_REGULAR_CUMULATIVE","allocateUTF8","_malloc","ENV","getEnvStrings","strings","env","navigator","languages","exitJS","implicit","___funcs_on_exit","__MONTH_DAYS_LEAP","__MONTH_DAYS_REGULAR","_strftime","maxsize","format","tm","tm_zone","date","tm_sec","tm_min","tm_hour","tm_mday","tm_mon","tm_year","tm_wday","tm_yday","tm_isdst","tm_gmtoff","EXPANSION_RULES_1","rule","WEEKDAYS","MONTHS","leadingSomething","digits","character","toString","leadingNulls","compareByDay","date1","date2","compare","sgn","getFullYear","getMonth","getDate","getFirstWeekStartDate","janFourth","getDay","getWeekBasedYear","thisDate","__addDays","days","newDate","leap","currentMonth","daysInCurrentMonth","setDate","setMonth","setFullYear","janFourthThisYear","janFourthNextYear","firstWeekStartThisYear","firstWeekStartNextYear","EXPANSION_RULES_2","twelveHour","__arraySum","array","sum","jan1","dec31","off","ahead","String","bytes","handleException","runAndAbortIfError","Asyncify","instrumentWasmImports","ASYNCIFY_IMPORTS","sig","instrumentWasmExports","exportCallStack","maybeStopUnwind","State","Normal","Unwinding","Rewinding","Disabled","StackSize","currData","handleSleepReturnValue","callStackNameToId","callStackIdToName","callStackId","asyncPromiseHandlers","sleepCallbacks","getCallStackId","funcName","_asyncify_stop_unwind","Fibers","trampoline","whenDone","allocateData","setDataHeader","setDataRewindFunc","stackSize","bottomOfCallStack","rewindId","getDataRewindFunc","doRewind","handleSleep","startAsync","reachedCallback","reachedAfterCallback","_asyncify_start_rewind","mainLoop","resume","asyncWasmReturnValue","isError","handled","pause","_asyncify_start_unwind","_asyncify_stop_rewind","_free","callUserCallback","maybeExit","_exit","handleAsync","wakeUp","wasmImports","maxlen","exception_addRef","_setThrew","exception_decRef","a1","dynCall_ii","___cxa_free_exception","amode","newStream","___errno_location","cwdLengthInBytes","op","argp","time","tmPtr","readI53FromI64","getSeconds","getMinutes","getHours","yday","__yday_from_date","monthDaysCumulative","isLeapYear","getTimezoneOffset","summerOffset","winterOffset","dst","timezone","daylight","tzname","currentYear","winter","summer","extractZone","toTimeString","stdTimezoneOffset","winterName","summerName","winterNamePtr","summerNamePtr","dest","num","copyWithin","requestedSize","oldSize","alignUp","multiple","cutDown","overGrownHeapSize","emscripten_realloc_buffer","grow","__environ","environ_buf","bufSize","string","writeAsciiToMemory","penviron_count","penviron_buf_size","iov","iovcnt","pnum","doReadv","curr","offset_low","offset_high","newOffset","hi","lo","NaN","isNaN","doWritev","a2","a3","sp","stackSave","dynCall_diii","stackRestore","dynCall_fiii","dynCall_i","dynCall_iii","dynCall_iiii","a4","dynCall_iiiii","a5","dynCall_iiiiii","a6","dynCall_iiiiiii","a7","dynCall_iiiiiiii","a8","a9","a10","a11","dynCall_iiiiiiiiiiii","dynCall_ji","dynCall_jiiii","dynCall_v","dynCall_vi","dynCall_vii","dynCall_viii","dynCall_viiii","dynCall_viiiii","dynCall_viiiiiii","dynCall_viiiiiiiiii","a12","a13","a14","a15","dynCall_viiiiiiiiiiiiiii","loc","createWasm","receiveInstance","cb","instantiateAsync","instantiateStreaming","_main","stackAlloc","run","addOnPreRun","doRun","shouldRunNow","callMain","entryFunction","argc","argv","argv_ptr","postRun","addOnPostRun","ch","fromCharCode","runCaller","ready","$90bdb86e43292d66$exports","$a5c3b71e8affc86f$var$Module","emglken_common_buffer_transformer","numchars","dont_reduce","utf32","fromCodePoint","new_str","newbuf","codePointAt","newlen","Infinity","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCMonth","getUTCFullYear","getUTCDay","UTC","guessedOffset","dstOffset","trueOffset","setTime","getYear","lowerrest","special_cases","thischar","slightly_less_special_cases","toUpperCase","$b4505afa6c4299ab$exports","$6b4c486f96eb5551$var$Module","$56d7e4ab31bcd78a$exports","$5da5b9828ec10744$var$Module","old","dirp","outPtr","child","nofollow","bufsize","endChar","olddirfd","newdirfd","performance","dynCall_iiiiiiiii","dynCall_iiiiiiiiii","dynCall_iiiiiiiiiii","dynCall_iiiiiiiiiiiiii","dynCall_iiiiiiiiiiiiiiii","a16","a17","dynCall_iiiiiiiiiiiiiiiiii","dynCall_viiiiii","dynCall_viiiiiiii","dynCall_viiiiiiiii","dynCall_viiiiiiiiiii","$9057ad164b194cd9$exports","$504b148d08d37416$var$Module","$11084da5888c7d7e$var$formats","extensions","engine","$11084da5888c7d7e$export$1784a1ff765207b7","find","wasmBinaryName","$5e25d1360d04c823$export$2e2bcd8739ae039","handlers","loggers","dirent","israw","onFileRead","content","onFileWrite","tosave","onFileNameRequest","warning","$640511b266482529$export$2e2bcd8739ae039","width","height","current_metrics","disabled","generation","interface","version","measure_window","buffercharheight","buffercharwidth","buffermarginx","buffermarginy","graphicsmarginx","graphicsmarginy","gridcharheight","gridcharwidth","gridmarginx","gridmarginy","inspacingx","inspacingy","outspacingx","outspacingy","getinterface","iface","send_response","gen","disable","cancel_inputs","windows","update_windows","update_content","update_inputs","accept_specialinput","exit","win","val2","res","metrics","support","$25e930408cddd3f8$export$2e2bcd8739ae039","sendFn","onInit","onUpdateInputs","filemode","messages","onUpdateContent","onExit","onDisable","onUpdateWindows","$db6ac6276ae4f3e4$var$noop","$db6ac6276ae4f3e4$var$defaultHandlers","acc","$db6ac6276ae4f3e4$var$defaultLoggers","$db6ac6276ae4f3e4$var$defaultSize","$db6ac6276ae4f3e4$export$2e2bcd8739ae039","handlers_","loggers_","size_","$7742cff3645aa0b6$exports","$0f82f0e8d6bc47f2$export$2e2bcd8739ae039","defaultContent","grid","subheader","emphasized","scrollTarget","endOfLine","$c5dda773199830f0$var$eol","$c5dda773199830f0$var$scrollTarget","$c5dda773199830f0$var$isFakeStatus","$c5dda773199830f0$var$trimInputPrompt","$c5dda773199830f0$var$parseInbox","inbox","currentWindow","currentInbox","clear","incoming","inboxMessagesRaw","$c5dda773199830f0$export$2e2bcd8739ae039","setMessages","textBufferEl","scrollTargets","querySelectorAll","freshScrollTarget","scrollIntoView","top","scrollHeight","behavior","tabindex","$272a9a66be55229e$export$2e2bcd8739ae039","prevMessages","setPrevMessages","currentInboxObj","lines","rawMessages","gridheight","fill","byId","list","line","shouldUpdatePrev","serialize","rawMessagesContent","flat","isEmpty","getGridStyle","$1aca019851cc147a$export$2e2bcd8739ae039","class","viewBox","xmlns","$6ceab6f7d9d9af03$var$keyCodes","KEY_BACKSPACE","KEY_TAB","KEY_RETURN","KEY_ESC","KEY_PAGEUP","KEY_PAGEDOWN","KEY_END","KEY_HOME","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","$6ceab6f7d9d9af03$var$keyNames","$6ceab6f7d9d9af03$var$hasModifier","modifiers","modifier","$6ceab6f7d9d9af03$export$2e2bcd8739ae039","inputType","currentWindowId","sendMessage","onFullscreenRequest","setMenuOpen","targetWindow","setTargetWindow","inputText","setInputText","lastInput","setLastInput","inputEl","setFocus","focus","charHandlerDefault","charHandlerMobile","inputHandlers","char","maxlength","onKeyDown","setSelectionRange","finished","autofocus","autocomplete","spellCheck","autocapitalize","autocorrect","onDblClick","onInput","$1068788a6b5bd866$var$fail","details","$1068788a6b5bd866$var$loading","$1068788a6b5bd866$export$2e2bcd8739ae039","stage","loading","$a3e838a981d9102e$var$lookupE","$a3e838a981d9102e$var$lookupD","$a3e838a981d9102e$var$pairStrings","pairString","encodeRepertoire","pair","first","codePoint","numZBits","$a3e838a981d9102e$var$BITS_PER_CHAR","$a3e838a981d9102e$var$BITS_PER_BYTE","chr","z","$a3e838a981d9102e$export$c564cdbbe6da493","uint8Array","uint8","j","bit","$a3e838a981d9102e$export$2f872c0f2117be69","numUint8s","numUint8Bits","$55fe02cc0e361ca1$export$fe1040197752eb59","setStatus","setWindows","setCurrentWindowId","setInputType","setInbox","_tosave","_gameId","setFileName","$55fe02cc0e361ca1$export$877ebb39146e6928","promise","$d1e73e56b58e412e$var$INITIAL_STATUS","$d1e73e56b58e412e$var$runMachine","Engine","storyfile","Glk","$d1e73e56b58e412e$export$2e2bcd8739ae039","vmParts","singleWindow","vm","setVm","setSendMessage","rejectionHandler","$cc5481a01a7ff6bc$var$INITIAL_STATUS","$cc5481a01a7ff6bc$var$prepareVM","setParts","st","fetchWasm","statusText","all","$cc5481a01a7ff6bc$export$2e2bcd8739ae039","$dcf9cc7c30fac7fa$export$2e2bcd8739ae039","menuOpen","dialogOpen","showModal","currentDialog","closeHandler","tabIndex","$b5ee9fb5e8b4f417$var$decode","encodedUrl","decodeURIComponent","$b5ee9fb5e8b4f417$export$2e2bcd8739ae039","targetUrl","setTargetUrl","documentElement","requestFullscreen","$1425950ba2693d8f$export$2e2bcd8739ae039","$6003de219045a58b$exports","playerView","app","getElementById","firstChild","vnodeId","createVNode","isStaticChildren","normalizedProps","isValidElement","rerenderQueue","prevDebounce","defer","depthSort","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","removeNode","createRef","Fragment","Component","this","getDomSibling","childIndex","sibling","updateParentDomPointers","enqueueRender","process","renderQueueLength","commitQueue","oldVNode","oldDom","parentDom","diff","commitRoot","diffChildren","renderResult","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","childVNode","newDom","firstChildDom","refs","oldChildren","oldChildrenLength","reorderChildren","placeChild","getLastDom","applyRef","tmp","toChildArray","nextDom","sibDom","outer","lastDom","diffProps","dom","newProps","oldProps","hydrate","setStyle","oldValue","useCapture","eventProxyCapture","eventProxy","newVNode","isNew","oldState","snapshot","clearProcessingException","provider","componentContext","renderHook","newType","doRender","diffElementNodes","oldHtml","newHtml","parentVNode","skipRemove","replaceNode","cloneElement","createContext","defaultValue","contextId","contextValue","subs","ctx","_props","errorInfo","ctor","currentIndex","currentComponent","previousComponent","prevRaf","currentHook","afterPaintEffects","EMPTY","oldBeforeDiff","oldBeforeRender","oldAfterDiff","oldCommit","oldBeforeUnmount","getHookState","hooks","useState","initialState","useReducer","invokeOrReturn","reducer","hookState","_reducer","action","currentValue","nextValue","_hasScuFromHooks","updateHookState","stateHooks","prevScu","shouldUpdate","hookItem","prevCWU","useEffect","argsChanged","_pendingArgs","useLayoutEffect","useRef","initialValue","useMemo","useImperativeHandle","createHandle","factory","useCallback","useContext","useDebugValue","formatter","useErrorBoundary","errState","useId","__m","mask","flushAfterPaintEffects","invokeCleanup","invokeEffect","afterNextFrame","hasErrored","HAS_RAF","raf","timeout","comp","cleanup","oldArgs","newArgs"],"version":3,"file":"index.7852e909.js.map"} \ No newline at end of file diff --git a/docs/index.e07a7069.js b/docs/index.e07a7069.js new file mode 100644 index 0000000..254ff9b --- /dev/null +++ b/docs/index.e07a7069.js @@ -0,0 +1,2 @@ +function e(e,r,n,o){Object.defineProperty(e,r,{get:n,set:o,enumerable:!0,configurable:!0})}var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},n={},o={},t=r.parcelRequire847f;null==t&&((t=function(e){if(e in n)return n[e].exports;if(e in o){var r=o[e];delete o[e];var t={id:e,exports:{}};return n[e]=t,r.call(t.exports,t,t.exports),t.exports}var i=Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,r){o[e]=r},r.parcelRequire847f=t),t.register("6MsPj",function(r,n){"use strict";e(r.exports,"register",function(){return o},function(e){return o=e}),e(r.exports,"resolve",function(){return t},function(e){return t=e});var o,t,i={};o=function(e){for(var r=Object.keys(e),n=0;n","node_modules/@parcel/runtime-js/lib/helpers/bundle-manifest.js","node_modules/@parcel/runtime-js/lib/runtime-58c6364ba08d2459.js"],"sourcesContent":["function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $parcel$global =\ntypeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire847f\"];\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire847f\"] = parcelRequire;\n}\nparcelRequire.register(\"6MsPj\", function(module, exports) {\n\n$parcel$export(module.exports, \"register\", function () { return $4efd962872f6b362$export$6503ec6e8aabbaf; }, function (v) { return $4efd962872f6b362$export$6503ec6e8aabbaf = v; });\n$parcel$export(module.exports, \"resolve\", function () { return $4efd962872f6b362$export$f7ad0328861e2f03; }, function (v) { return $4efd962872f6b362$export$f7ad0328861e2f03 = v; });\nvar $4efd962872f6b362$export$6503ec6e8aabbaf;\nvar $4efd962872f6b362$export$f7ad0328861e2f03;\n\"use strict\";\nvar $4efd962872f6b362$var$mapping = {};\nfunction $4efd962872f6b362$var$register(pairs) {\n var keys = Object.keys(pairs);\n for(var i = 0; i < keys.length; i++)$4efd962872f6b362$var$mapping[keys[i]] = pairs[keys[i]];\n}\nfunction $4efd962872f6b362$var$resolve(id) {\n var resolved = $4efd962872f6b362$var$mapping[id];\n if (resolved == null) throw new Error(\"Could not resolve bundle with id \" + id);\n return resolved;\n}\n$4efd962872f6b362$export$6503ec6e8aabbaf = $4efd962872f6b362$var$register;\n$4efd962872f6b362$export$f7ad0328861e2f03 = $4efd962872f6b362$var$resolve;\n\n});\n\nvar $4feb04ae40983a6e$exports = {};\n\n(parcelRequire(\"6MsPj\")).register(JSON.parse('{\"1WcZ2\":\"index.4a5edb74.js\",\"4QCNJ\":\"bocfel-core.ee206e48.wasm\",\"kBXOE\":\"git-core.b75bc635.wasm\",\"ida9s\":\"hugo-core.34679da7.wasm\",\"90qbH\":\"tads-core.768683a2.wasm\",\"32xWV\":\"scare-core.0f93f725.wasm\",\"depHM\":\"index.62ef15f1.css\"}'));\n\n\n//# sourceMappingURL=index.e07a7069.js.map\n","\"use strict\";\n\nvar mapping = {};\nfunction register(pairs) {\n var keys = Object.keys(pairs);\n for (var i = 0; i < keys.length; i++) {\n mapping[keys[i]] = pairs[keys[i]];\n }\n}\nfunction resolve(id) {\n var resolved = mapping[id];\n if (resolved == null) {\n throw new Error('Could not resolve bundle with id ' + id);\n }\n return resolved;\n}\nmodule.exports.register = register;\nmodule.exports.resolve = resolve;","require('./helpers/bundle-manifest').register(JSON.parse(\"{\\\"1WcZ2\\\":\\\"index.4a5edb74.js\\\",\\\"4QCNJ\\\":\\\"bocfel-core.ee206e48.wasm\\\",\\\"kBXOE\\\":\\\"git-core.b75bc635.wasm\\\",\\\"ida9s\\\":\\\"hugo-core.34679da7.wasm\\\",\\\"90qbH\\\":\\\"tads-core.768683a2.wasm\\\",\\\"32xWV\\\":\\\"scare-core.0f93f725.wasm\\\",\\\"depHM\\\":\\\"index.62ef15f1.css\\\"}\"));"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$parcel$global","globalThis","self","window","global","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$4efd962872f6b362$export$6503ec6e8aabbaf","$4efd962872f6b362$export$f7ad0328861e2f03","$4efd962872f6b362$var$mapping","pairs","keys","i","length","resolved","JSON","parse"],"version":3,"file":"index.e07a7069.js.map"} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..eaa1cc2 --- /dev/null +++ b/docs/index.html @@ -0,0 +1 @@ + ElseIFPlayer
\ No newline at end of file diff --git a/docs/open-sans-cyrillic-400-normal.09174fa0.woff2 b/docs/open-sans-cyrillic-400-normal.09174fa0.woff2 new file mode 100644 index 0000000..6bc81f4 Binary files /dev/null and b/docs/open-sans-cyrillic-400-normal.09174fa0.woff2 differ diff --git a/docs/open-sans-cyrillic-400-normal.2a726790.woff b/docs/open-sans-cyrillic-400-normal.2a726790.woff new file mode 100644 index 0000000..1e5d6c8 Binary files /dev/null and b/docs/open-sans-cyrillic-400-normal.2a726790.woff differ diff --git a/docs/open-sans-cyrillic-ext-400-normal.5a91320c.woff2 b/docs/open-sans-cyrillic-ext-400-normal.5a91320c.woff2 new file mode 100644 index 0000000..e1d9435 Binary files /dev/null and b/docs/open-sans-cyrillic-ext-400-normal.5a91320c.woff2 differ diff --git a/docs/open-sans-cyrillic-ext-400-normal.650c7d3f.woff b/docs/open-sans-cyrillic-ext-400-normal.650c7d3f.woff new file mode 100644 index 0000000..1ec98e3 Binary files /dev/null and b/docs/open-sans-cyrillic-ext-400-normal.650c7d3f.woff differ diff --git a/docs/open-sans-greek-400-normal.3d6f6e23.woff b/docs/open-sans-greek-400-normal.3d6f6e23.woff new file mode 100644 index 0000000..0b927df Binary files /dev/null and b/docs/open-sans-greek-400-normal.3d6f6e23.woff differ diff --git a/docs/open-sans-greek-400-normal.dc2ae4bd.woff2 b/docs/open-sans-greek-400-normal.dc2ae4bd.woff2 new file mode 100644 index 0000000..ce49b50 Binary files /dev/null and b/docs/open-sans-greek-400-normal.dc2ae4bd.woff2 differ diff --git a/docs/open-sans-greek-ext-400-normal.2d040ff0.woff2 b/docs/open-sans-greek-ext-400-normal.2d040ff0.woff2 new file mode 100644 index 0000000..75bfc55 Binary files /dev/null and b/docs/open-sans-greek-ext-400-normal.2d040ff0.woff2 differ diff --git a/docs/open-sans-greek-ext-400-normal.ca43dd21.woff b/docs/open-sans-greek-ext-400-normal.ca43dd21.woff new file mode 100644 index 0000000..c270c4b Binary files /dev/null and b/docs/open-sans-greek-ext-400-normal.ca43dd21.woff differ diff --git a/docs/open-sans-hebrew-400-normal.76fb5a51.woff b/docs/open-sans-hebrew-400-normal.76fb5a51.woff new file mode 100644 index 0000000..6e688ed Binary files /dev/null and b/docs/open-sans-hebrew-400-normal.76fb5a51.woff differ diff --git a/docs/open-sans-hebrew-400-normal.942ca237.woff2 b/docs/open-sans-hebrew-400-normal.942ca237.woff2 new file mode 100644 index 0000000..c8694ce Binary files /dev/null and b/docs/open-sans-hebrew-400-normal.942ca237.woff2 differ diff --git a/docs/open-sans-latin-400-normal.36b20d2c.woff b/docs/open-sans-latin-400-normal.36b20d2c.woff new file mode 100644 index 0000000..b9064af Binary files /dev/null and b/docs/open-sans-latin-400-normal.36b20d2c.woff differ diff --git a/docs/open-sans-latin-400-normal.7cf38e2c.woff2 b/docs/open-sans-latin-400-normal.7cf38e2c.woff2 new file mode 100644 index 0000000..15339ea Binary files /dev/null and b/docs/open-sans-latin-400-normal.7cf38e2c.woff2 differ diff --git a/docs/open-sans-latin-ext-400-normal.9030d190.woff b/docs/open-sans-latin-ext-400-normal.9030d190.woff new file mode 100644 index 0000000..135abba Binary files /dev/null and b/docs/open-sans-latin-ext-400-normal.9030d190.woff differ diff --git a/docs/open-sans-latin-ext-400-normal.b040be2e.woff2 b/docs/open-sans-latin-ext-400-normal.b040be2e.woff2 new file mode 100644 index 0000000..0bc7ce7 Binary files /dev/null and b/docs/open-sans-latin-ext-400-normal.b040be2e.woff2 differ diff --git a/docs/open-sans-vietnamese-400-normal.979797dd.woff2 b/docs/open-sans-vietnamese-400-normal.979797dd.woff2 new file mode 100644 index 0000000..8f59cae Binary files /dev/null and b/docs/open-sans-vietnamese-400-normal.979797dd.woff2 differ diff --git a/docs/open-sans-vietnamese-400-normal.c15bfd40.woff b/docs/open-sans-vietnamese-400-normal.c15bfd40.woff new file mode 100644 index 0000000..4264bae Binary files /dev/null and b/docs/open-sans-vietnamese-400-normal.c15bfd40.woff differ diff --git a/docs/scare-core.0f93f725.wasm b/docs/scare-core.0f93f725.wasm new file mode 100644 index 0000000..0f350f3 Binary files /dev/null and b/docs/scare-core.0f93f725.wasm differ diff --git a/docs/tads-core.768683a2.wasm b/docs/tads-core.768683a2.wasm new file mode 100644 index 0000000..220901b Binary files /dev/null and b/docs/tads-core.768683a2.wasm differ