diff --git a/waflash/alt/emulator2/waflash_latest/waflash-player.js b/waflash/alt/emulator2/waflash_latest/waflash-player.js new file mode 100644 index 00000000..6bf19bed --- /dev/null +++ b/waflash/alt/emulator2/waflash_latest/waflash-player.js @@ -0,0 +1,131 @@ +import createWaflashModule from "./waflash.js?2021111901"; +const WAFLASH_BASE_URL = "https://clubpenguinadvanced.github.io/waflash-demo/alt/emulator2/waflash_latest/", + createWaflash = (t, e) => { + if (t || (t = ""), (e = e || {}).flashVars && (t += (t.includes("?") ? "&" : "?") + e.flashVars), self != top) return; + let a = { + arguments: [t, "0", e.gpu ? "webgl" : "default", !0 === e.enableFilters ? "0" : "1"], + options: e, + preRun: [], + postRun: [], + locateFile: (t, e) => WAFLASH_BASE_URL + t + "?2021111901", + print(t) { + console.log(t) + }, + printErr(t) { + console.error(t) + }, + canvas: function() { + const t = document.getElementById("canvas"); + return t.addEventListener("webglcontextlost", (function(t) { + alert("WebGL context lost. You will need to reload the page."), t.preventDefault() + }), !1), t + }(), + statusElement: document.getElementById("waflashStatus"), + setStatus: t => { + if (!t) return; + t = t.replace(/Downloading data\.\.\. \((\d+)\/(\d+)\)/, ((t, e, a) => "Downloading player... " + Math.floor(parseInt(e) / parseInt(a) * 100) + "%")), console.log("WAFLASH> " + t); + const e = ''; + 0 == t.indexOf("Downloading player...") && (t = "Downloading player " + e), 0 == t.indexOf("Loading SWF...") && (t = "Loading SWF " + e), a.statusElement.innerHTML = t, a.showStatus() + }, + showStatus() { + a.statusElement.style.display = "block" + }, + hideStatus() { + a.statusElement.style.display = "none" + }, + unload() {}, + WAFLASH: { + hal: { + url_transformRequestUrl(t) { + const a = "owner" == window.T?.config?.ROLE; + const n = function(t) { + let n = e.resourceMap; + if (Array.isArray(n)) + for (let [e, a] of n) { + if ("string" != typeof e && !e instanceof RegExp) continue; + const n = e instanceof RegExp || "~" == e.charAt(0); + if (!n && "=" == e.charAt(0)) { + if (e = e.substr(1), e == t) return a + } else if (n) { + let n = e instanceof RegExp ? e : new RegExp(e = e.substr(1)); + if (n.test(t)) { + return null === a ? null : t.replace(n, a) + } + } else { + let n = t.indexOf("?"), + s = "", + o = t; + if (n >= 0 && (o = t.substring(0, n), s = "&" + t.substr(n + 1)), e == o) return null === a ? null : a + s + } + } else if (a && console.log("old-style resourceMap mode!!!!!!!!!!!!!!!"), n = window.wafResourceMap || e.resourceMap, n && "object" == typeof n) + for (let [e, a] of Object.entries(n)) { + const n = "=" == e.charAt(0), + s = "~" == e.charAt(0); + if (n) { + if (e = e.substr(1), e == t) return a + } else if (s) { + e = e.substr(1); + let n = new RegExp(e); + if (n.test(t)) { + return null === a ? null : t.replace(n, a) + } + } else { + let n = t.indexOf("?"), + s = "", + o = t; + if (n >= 0 && (o = t.substring(0, n), s = "&" + t.substr(n + 1)), e == o) return null === a ? null : a + s + } + } + var s = t.lastIndexOf("/"); + if (s >= 0) { + let e, a = t.substr(0, s + 1), + n = t.substr(s + 1), + o = n.substr(n.lastIndexOf(".")); + if (".swf" == o) { + if ("http://images.hangame.co.kr/static/flash/flashgame/game/lang/" == a) return "https://swfs.waflash.io/uploads/hangame/" + n; + if ("http://img.ibravo.com/game/source/" == a) return "https://darkviky.github.io/assets/ibravo/" + n; + if ("http://www.ibravo.com/web/game/popup/signed.aspx" == t) return "https://darkviky.github.io/assets/ibravo/web/game/popup/signed.aspx"; + if (t.lastIndexOf("/ads/default/loading.swf") >= 0) return "https://darkviky.github.io/assets/dearyou/loading.swf" + } + if (t.lastIndexOf("/loading/loading640x480.swf") > 0) return "https://blog.kakaocdn.net/dn/Ek0nH/btq3lUD7jcQ/gEYgOPz64grAZsrYbmX0Dk/loading640x480.swf?attach=1&knm=tfile.swf"; + if (t.lastIndexOf("/loading/loading.swf") > 0) return "https://blog.kakaocdn.net/dn/Vv9ag/btq3mYTdq8w/hHts2k7y4VYKN9y5f9eT5K/loading.swf?attach=1&knm=tfile.swf"; + if (t.lastIndexOf("/loading/result2_v3_2.swf") > 0) return "https://blog.kakaocdn.net/dn/eqSlVE/btqSX7mihN2/zlCy2XV43iQX4GahzZDkIk/result2_v3_2.swf?attach=1&knm=tfile.swf"; + if (t.startsWith("http://www.kiniwini.com/games/common/user_info.php")) return "https://blog.kakaocdn.net/dn/RhEMp/btq17btItmP/cJHm5tYvKfKe1ztq8XOzw1/user_info.php.txt?attach=1&knm=tfile.txt"; + if (t.indexOf("//panyroom.jr.naver.com/game/gameset.php") > 0) return "https://xwvy1u8cxc.execute-api.ap-northeast-2.amazonaws.com/prod/panyroom_game_gameset"; + if (e = "http://zuzunza.joins.com/all/check_id.php", t.startsWith(e)) return "https://ieazco9902.execute-api.ap-northeast-2.amazonaws.com/zuzunza/all/check_id" + t.substr(e.length); + if (e = "http://www.zuzunza.com/all/check_id.php", t.startsWith(e)) return "https://ieazco9902.execute-api.ap-northeast-2.amazonaws.com/zuzunza/all/check_id" + t.substr(e.length); + if (0 == t.lastIndexOf("https://blog.kakaocdn.net/swf/loading_default.swf")) return "https://blog.kakaocdn.net/dn/ccsyy7/btqU4Zs74KE/CLNg8AqGHfOkobsqhoKWok/loading_default.swf?attach=1&knm=tfile.swf"; + if (t.match(/^http\:\/\/file\.barunson\.com\/upfile\/object\/Loading\/loading[0-9a-z]+\.swf$/)) return "https://blog.kakaocdn.net/dn/bq8LCx/btq6W2p55q8/U7FtlDnJwgORqSF3zE7WuK/barunson-loading.waf?attach=1&knm=tfile.waf"; + if (t.startsWith("http://file.barunson.com/upfile/object/Loading/www.swf")) return "https://blog.kakaocdn.net/dn/ytl0f/btq6AtDeWRF/utoYw63znPZzuBDKeIOFd1/barunson-logo.waf?attach=1&knm=tfile.waf"; + if (t.endsWith("/loading/loading_lg.swf")) return "https://blog.kakaocdn.net/dn/uyECc/btq6BEraq42/M2P9hB84fAZFDsJSJgLCA0/loading_lg.swf?attach=1&knm=tfile.swf"; + if (".mp3" == o && "http://juter01.tistory.com/attachment/" == a) return "https://darkviky.github.io/assets/gog/" + n + } + return [".kakaocdn.net", ".github.io", ".waflash.io", "waflash.cdn.ntruss.com", ".archive.org"].some((e => t.indexOf(e) > 0)) ? t.replace("http://", "https://") : null + }(t); + return a && t != n && (n ? console.log(`redirect ${t} => ${n}`) : console.error(`redirect ${t} => ${n}`)), n + } + } + } + }; + window.waflash = a, window.onerror = (t, e, n, s, o) => { + "string" != typeof t && (o = t.error, t.filename || t.fileName, t.lineno || t.lineNumber, t.colno || t.columnNumber, t = t.message || t.name || o.message || o.name); + let l = ""; + o && o.stack && (l = o.stack); + let r = document.location + "|" + t; + a.ga && a.ga("event", document.location.origin, { + event_category: "error", + event_label: r, + non_interaction: !0, + send_to: a.gid + }) + }, a.setStatus("Prepairing..."), createWaflashModule(a).then((t => { + console.log("WAFLASH> Waflash module created!") + })) + }, + destroyWaflash = () => { + console.log("WAFLASH> Waflash component will unmount!"), waflash.unload(), waflash = null, window.waflash = null + }; +export { + createWaflash, + destroyWaflash +}; diff --git a/waflash/alt/emulator2/waflash_latest/waflash.data b/waflash/alt/emulator2/waflash_latest/waflash.data new file mode 100644 index 00000000..bc0f7094 Binary files /dev/null and b/waflash/alt/emulator2/waflash_latest/waflash.data differ diff --git a/waflash/alt/emulator2/waflash_latest/waflash.js b/waflash/alt/emulator2/waflash_latest/waflash.js new file mode 100644 index 00000000..c7f651cb --- /dev/null +++ b/waflash/alt/emulator2/waflash_latest/waflash.js @@ -0,0 +1,8238 @@ +var Module = function() { + var e = "undefined" != typeof document && document.currentScript ? document.currentScript.src : void 0; + return function(r) { + var t; + (r = void 0 !== (r = r || {}) ? r : {}).ready = new Promise((function(e, r) { + t = e, r + })), r.expectedDataFileDownloads || (r.expectedDataFileDownloads = 0, r.finishedDataFileDownloads = 0), r.expectedDataFileDownloads++, + function(e) { + if ("object" == typeof window) window.encodeURIComponent(window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf("/")) + "/"); + else { + if ("undefined" == typeof location) throw "using preloaded data can only be done on a web page or in a web worker"; + encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf("/")) + "/") + } + var t = "waflash.data"; + "function" != typeof r.locateFilePackage || r.locateFile || (r.locateFile = r.locateFilePackage, p("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")); + var n = r.locateFile ? r.locateFile(t, "") : t, + i = e.remote_package_size; + e.package_uuid; + var a, o, u, s, c = null, + l = r.getPreloadedPackage ? r.getPreloadedPackage(n, i) : null; + + function f() { + function t(e, r) { + if (!e) throw r + (new Error).stack + } + + function n(e, r, t) { + this.start = e, this.end = r, this.audio = t + } + n.prototype = { + requests: {}, + open: function(e, t) { + this.name = t, this.requests[t] = this, r.addRunDependency("fp " + this.name) + }, + send: function() {}, + onload: function() { + var e = this.byteArray.subarray(this.start, this.end); + this.finish(e) + }, + finish: function(e) { + r.FS_createDataFile(this.name, null, e, !0, !0, !0), r.removeRunDependency("fp " + this.name), this.requests[this.name] = null + } + }; + for (var i = e.files, a = 0; a < i.length; ++a) new n(i[a].start, i[a].end, i[a].audio).open("GET", i[a].filename); + + function o(i) { + r.finishedDataFileDownloads++, t(i, "Loading data file failed."), t(i instanceof ArrayBuffer, "bad input to processPackageData"); + var a = new Uint8Array(i); + n.prototype.byteArray = a; + for (var o = e.files, u = 0; u < o.length; ++u) n.prototype.requests[o[u].filename].onload(); + r.removeRunDependency("datafile_waflash.data") + } + r.addRunDependency("datafile_waflash.data"), r.preloadResults || (r.preloadResults = {}), r.preloadResults["waflash.data"] = { + fromCache: !1 + }, l ? (o(l), l = null) : c = o + } + l || (a = n, o = i, u = function(e) { + c ? (c(e), c = null) : l = e + }, (s = new XMLHttpRequest).open("GET", a, !0), s.responseType = "arraybuffer", s.onprogress = function(e) { + var t = a, + n = o; + if (e.total && (n = e.total), e.loaded) { + s.addedTotal ? r.dataFileDownloads[t].loaded = e.loaded : (s.addedTotal = !0, r.dataFileDownloads || (r.dataFileDownloads = {}), r.dataFileDownloads[t] = { + loaded: e.loaded, + total: n + }); + var i = 0, + u = 0, + c = 0; + for (var l in r.dataFileDownloads) { + var f = r.dataFileDownloads[l]; + i += f.total, u += f.loaded, c++ + } + i = Math.ceil(i * r.expectedDataFileDownloads / c), r.setStatus && r.setStatus("Downloading data... (" + u + "/" + i + ")") + } else r.dataFileDownloads || r.setStatus && r.setStatus("Downloading data...") + }, s.onerror = function(e) { + throw new Error("NetworkError for: " + a) + }, s.onload = function(e) { + if (!(200 == s.status || 304 == s.status || 206 == s.status || 0 == s.status && s.response)) throw new Error(s.statusText + " : " + s.responseURL); + var r = s.response; + u(r) + }, s.send(null)), r.calledRun ? f() : (r.preRun || (r.preRun = []), r.preRun.push(f)) + }({ + files: [{ + filename: "/desktop.ini", + start: 0, + end: 46, + audio: 0 + }, { + filename: "/NanumSquareRoundOTFR.otf", + start: 46, + end: 465950, + audio: 0 + }], + remote_package_size: 465950, + package_uuid: "8f31e25d-d0a6-4a8f-a179-96a610fbbec2" + }); + var n, i = {}; + for (n in r) r.hasOwnProperty(n) && (i[n] = r[n]); + var a, o, u, s, c = [], + l = "./this.program", + f = function(e, r) { + throw r + }, + d = ""; + document.currentScript && (d = document.currentScript.src), e && (d = e), d = 0 !== d.indexOf("blob:") ? d.substr(0, d.lastIndexOf("/") + 1) : "", a = function(e) { + var r = new XMLHttpRequest; + return r.open("GET", e, !1), r.send(null), r.responseText + }, o = 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) + }, s = function(e) { + document.title = e + }; + var m = r.print || console.log.bind(console), + p = r.printErr || console.warn.bind(console); + for (n in i) i.hasOwnProperty(n) && (r[n] = i[n]); + i = null, r.arguments && (c = r.arguments), r.thisProgram && (l = r.thisProgram), r.quit && (f = r.quit); + + function v(e) { + var r = q[W >> 2], + t = r + e + 15 & -16; + return q[W >> 2] = t, r + } + + function g(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 4; + if ("i" === e[0]) { + var r = Number(e.substr(1)); + return D(r % 8 == 0, "getNativeTypeSize invalid bits " + r + ", type " + e), r / 8 + } + return 0 + } + } + + function h(e) { + h.shown || (h.shown = {}), h.shown[e] || (h.shown[e] = 1, p(e)) + } + + function _(e, t, n) { + return n && n.length ? r["dynCall_" + e].apply(null, [t].concat(n)) : r["dynCall_" + e].call(null, t) + } + var b, y, w, E = 0, + x = function(e) { + E = e + }; + + function k(e, r, t, n) { + switch ("*" === (t = t || "i8").charAt(t.length - 1) && (t = "i32"), t) { + case "i1": + case "i8": + O[e >> 0] = r; + break; + case "i16": + j[e >> 1] = r; + break; + case "i32": + q[e >> 2] = r; + break; + case "i64": + _e = [r >>> 0, (he = r, +ae(he) >= 1 ? he > 0 ? (0 | se(+ue(he / 4294967296), 4294967295)) >>> 0 : ~~+oe((he - +(~~he >>> 0)) / 4294967296) >>> 0 : 0)], q[e >> 2] = _e[0], q[e + 4 >> 2] = _e[1]; + break; + case "float": + V[e >> 2] = r; + break; + case "double": + X[e >> 3] = r; + break; + default: + pe("invalid type for setValue: " + t) + } + } + r.wasmBinary && (b = r.wasmBinary), r.noExitRuntime && (y = r.noExitRuntime), "object" != typeof WebAssembly && p("no native wasm support detected"); + var C = new WebAssembly.Table({ + initial: 12757, + maximum: 12757, + element: "anyfunc" + }), + S = !1; + + function D(e, r) { + e || pe("Assertion failed: " + r) + } + + function F(e) { + var t = r["_" + e]; + return D(t, "Cannot call unknown function " + e + ", make sure it is exported"), t + } + + function A(e, r, t, n, i) { + var a = { + string: function(e) { + var r = 0; + if (null != e && 0 !== e) { + var t = 1 + (e.length << 2); + B(e, r = wt(t), t) + } + return r + }, + array: function(e) { + var r = wt(e.length); + return function(e, r) { + O.set(e, r) + }(e, r), r + } + }; + var o = F(e), + u = [], + s = 0; + if (n) + for (var c = 0; c < n.length; c++) { + var l = a[t[c]]; + l ? (0 === s && (s = yt()), u[c] = l(n[c])) : u[c] = n[c] + } + var f = o.apply(null, u); + return f = function(e) { + return "string" === r ? L(e) : "boolean" === r ? Boolean(e) : e + }(f), 0 !== s && Et(s), f + } + var P = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0; + + function T(e, r, t) { + for (var n = r + t, i = r; e[i] && !(i >= n);) ++i; + if (i - r > 16 && e.subarray && P) return P.decode(e.subarray(r, i)); + for (var a = ""; r < i;) { + var o = e[r++]; + if (128 & o) { + var u = 63 & e[r++]; + if (192 != (224 & o)) { + var s = 63 & e[r++]; + if ((o = 224 == (240 & o) ? (15 & o) << 12 | u << 6 | s : (7 & o) << 18 | u << 12 | s << 6 | 63 & e[r++]) < 65536) a += String.fromCharCode(o); + else { + var c = o - 65536; + a += String.fromCharCode(55296 | c >> 10, 56320 | 1023 & c) + } + } else a += String.fromCharCode((31 & o) << 6 | u) + } else a += String.fromCharCode(o) + } + return a + } + + function L(e, r) { + return e ? T(G, e, r) : "" + } + + function I(e, r, t, n) { + if (!(n > 0)) return 0; + for (var i = t, a = t + n - 1, o = 0; o < e.length; ++o) { + var u = e.charCodeAt(o); + if (u >= 55296 && u <= 57343) u = 65536 + ((1023 & u) << 10) | 1023 & e.charCodeAt(++o); + if (u <= 127) { + if (t >= a) break; + r[t++] = u + } else if (u <= 2047) { + if (t + 1 >= a) break; + r[t++] = 192 | u >> 6, r[t++] = 128 | 63 & u + } else if (u <= 65535) { + if (t + 2 >= a) break; + r[t++] = 224 | u >> 12, r[t++] = 128 | u >> 6 & 63, r[t++] = 128 | 63 & u + } else { + if (t + 3 >= a) break; + r[t++] = 240 | u >> 18, r[t++] = 128 | u >> 12 & 63, r[t++] = 128 | u >> 6 & 63, r[t++] = 128 | 63 & u + } + } + return r[t] = 0, t - i + } + + function B(e, r, t) { + return I(e, G, r, t) + } + + function R(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 : 4 + } + return r + } + "undefined" != typeof TextDecoder && new TextDecoder("utf-16le"); + + function M(e) { + var r = R(e) + 1, + t = Zr(r); + return t && I(e, O, t, r), t + } + + function N(e) { + var r = R(e) + 1, + t = wt(r); + return I(e, O, t, r), t + } + var U, O, G, j, z, q, Q, V, X; + + function H(e) { + U = e, r.HEAP8 = O = new Int8Array(e), r.HEAP16 = j = new Int16Array(e), r.HEAP32 = q = new Int32Array(e), r.HEAPU8 = G = new Uint8Array(e), r.HEAPU16 = z = new Uint16Array(e), r.HEAPU32 = Q = new Uint32Array(e), r.HEAPF32 = V = new Float32Array(e), r.HEAPF64 = X = new Float64Array(e) + } + var W = 1052496, + Y = r.INITIAL_MEMORY || 16777216; + + function Z(e) { + for (; e.length > 0;) { + var t = e.shift(); + if ("function" != typeof t) { + var n = t.func; + "number" == typeof n ? void 0 === t.arg ? r.dynCall_v(n) : r.dynCall_vi(n, t.arg) : n(void 0 === t.arg ? null : t.arg) + } else t(r) + } + }(w = r.wasmMemory ? r.wasmMemory : new WebAssembly.Memory({ + initial: Y / 65536, + maximum: 32768 + })) && (U = w.buffer), Y = U.byteLength, H(U), q[W >> 2] = 6295552; + var K = [], + $ = [], + J = [], + ee = [], + re = [], + te = !1; + + function ne(e, r, t) { + return e >= 0 ? e : r <= 32 ? 2 * Math.abs(1 << r - 1) + e : Math.pow(2, r) + e + } + + function ie(e, r, t) { + if (e <= 0) return e; + var n = r <= 32 ? Math.abs(1 << r - 1) : Math.pow(2, r - 1); + return e >= n && (r <= 32 || e > n) && (e = -2 * n + e), e + } + var ae = Math.abs, + oe = Math.ceil, + ue = Math.floor, + se = Math.min, + ce = 0, + le = null, + fe = null; + + function de(e) { + ce++, r.monitorRunDependencies && r.monitorRunDependencies(ce) + } + + function me(e) { + if (ce--, r.monitorRunDependencies && r.monitorRunDependencies(ce), 0 == ce && (null !== le && (clearInterval(le), le = null), fe)) { + var t = fe; + fe = null, t() + } + } + + function pe(e) { + throw r.onAbort && r.onAbort(e), m(e += ""), p(e), S = !0, 1, e = "abort(" + e + "). Build with -s ASSERTIONS=1 for more info.", new WebAssembly.RuntimeError(e) + } + r.preloadedImages = {}, r.preloadedAudios = {}; + + function ve(e) { + return r = e, t = "data:application/octet-stream;base64,", String.prototype.startsWith ? r.startsWith(t) : 0 === r.indexOf(t); + var r, t + } + var ge, he, _e, be = "waflash.wasm"; + + function ye() { + try { + if (b) return new Uint8Array(b); + if (u) return u(be); + throw "both async and sync fetching of the wasm failed" + } catch (e) { + pe(e) + } + } + ve(be) || (ge = be, be = r.locateFile ? r.locateFile(ge, d) : d + ge); + var we = { + 2390: function(e) { + const r = L(e); + Pe.mkdir(r), Pe.mount(Ae, {}, r), Pe.syncfs(!0, (e => {})) + }, + 2968: function() { + if ("function" != typeof URLSearchParams) return !1; + return "1" == new URLSearchParams(window.location.search).get("wafv") + }, + 3162: function() { + const e = window.location.origin + window.location.pathname.substr(0, window.location.pathname.lastIndexOf("/") + 1), + r = R(e) + 1, + t = Zr(r); + return B(e, t, r), t + }, + 3499: function() { + r.canvas.addEventListener("keydown", (e => { + r.keyboardModifierState = r.keyboardModifierState || {}, r.keyboardModifierState.NumLock = e.getModifierState("NumLock") + })), document.addEventListener("keydown", (e => { + r.keyboardModifierState = r.keyboardModifierState || {}, r.keyboardModifierState.NumLock = e.getModifierState("NumLock") + })) + }, + 3889: function() { + if ("function" != typeof URLSearchParams) return 0; + const e = new URLSearchParams(window.location.search).get("wafsrc"); + if (e) { + let r; + if (e.startsWith("http://") || e.startsWith("https://")) r = e; + else if ("/" == e[0]) r = window.location.origin + e; + else { + let t = window.location.pathname.substr(0, window.location.pathname.lastIndexOf("/") + 1); + r = window.location.origin + t + e + } + const t = R(r) + 1, + n = Zr(t); + return B(r, n, t), n + } + return 0 + }, + 4531: function() { + if ("function" != typeof URLSearchParams) return !1; + return "gpu" == new URLSearchParams(window.location.search).get("wafm") + }, + 4718: function() { + let e = r.canvas.id; + if (!e) return 0; + e = "#" + e; + const t = R(e) + 1, + n = Zr(t); + return B(e, n, t), n + }, + 5713: function() { + return !(!r.options || !r.options.useMouseWheel) + }, + 6655: function() { + return r.keyboardModifierState.NumLock + }, + 6704: function() { + const e = r.canvas.wafActiveInputText; + e && r.canvas.parentNode.removeChild(e), r.canvas.wafActiveInputText = null, r.canvas.focus() + }, + 6877: function(e, t) { + const n = r.canvas.wafActiveInputText; + n && (n.wafSelectionChangedByEngine = !0, n.wafSelectionStart = n.selectionStart = e, n.wafSelectionEnd = n.selectionEnd = t) + }, + 7073: function(e) { + const t = r.canvas.wafActiveInputText; + if (t) { + const r = L(e); + t.value != r && (t.value = r, t.wafSelectionStart = t.selectionStart = r.length, t.wafSelectionEnd = t.selectionEnd = r.length) + } + }, + 264563: function(e, t) { + return { + high: 2, + medium: 1, + low: 0 + } [r.options.quality] || t + }, + 886362: function(e) { + var r = L(e) + "\n\nAbort/Retry/Ignore/AlwaysIgnore? [ariA] :", + t = window.prompt(r, "i"); + return null === t && (t = "i"), + function(e, r, t, n) { + var i, a; + "number" == typeof e ? (i = !0, a = e) : (i = !1, a = e.length); + var o, u = "string" == typeof r ? r : null; + if (o = 3 == t ? n : [Zr, wt, v][t](Math.max(a, u ? 1 : r.length)), i) { + var s; + for (n = o, D(0 == (3 & o)), s = o + (-4 & a); n < s; n += 4) q[n >> 2] = 0; + for (s = o + a; n < s;) O[n++ >> 0] = 0; + return o + } + if ("i8" === u) return e.subarray || e.slice ? G.set(e, o) : G.set(new Uint8Array(e), o), o; + for (var c, l, f, d = 0; d < a;) { + var m = e[d]; + 0 !== (c = u || r[d]) ? ("i64" == c && (c = "i32"), k(o + d, m, c), f !== c && (l = g(c), f = c), d += l) : d++ + } + return o + }(Qr(t), "i8", 0) + }, + 922252: function(e, t, n) { + var i = e, + a = t, + o = n; + r.SDL2 || (r.SDL2 = {}); + var u = r.SDL2; + u.ctxCanvas !== r.canvas && (u.ctx = r.createContext(r.canvas, !1, !0), u.ctxCanvas = r.canvas), u.w === i && u.h === a && u.imageCtx === u.ctx || (u.image = u.ctx.createImageData(i, a), u.w = i, u.h = a, u.imageCtx = u.ctx); + var s, c = u.image.data, + l = o >> 2, + f = 0; + if ("undefined" != typeof CanvasPixelArray && c instanceof CanvasPixelArray) + for (s = c.length; f < s;) { + var d = q[l]; + c[f] = 255 & d, c[f + 1] = d >> 8 & 255, c[f + 2] = d >> 16 & 255, c[f + 3] = 255, l++, f += 4 + } else { + u.data32Data !== c && (u.data32 = new Int32Array(c.buffer), u.data8 = new Uint8Array(c.buffer)); + var m = u.data32; + s = m.length, m.set(q.subarray(l, l + s)); + var p = u.data8, + v = 3, + g = v + 4 * s; + if (s % 8 == 0) + for (; v < g;) p[v] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, p[v = v + 4 | 0] = 255, v = v + 4 | 0; + else + for (; v < g;) p[v] = 255, v = v + 4 | 0 + } + return u.ctx.putImageData(u.image, 0, 0), 0 + }, + 923731: function(e, r, t, n, i) { + var a = e, + o = r, + u = t, + s = n, + c = i, + l = document.createElement("canvas"); + l.width = a, l.height = o; + var f, d = l.getContext("2d"), + m = d.createImageData(a, o), + p = m.data, + v = c >> 2, + g = 0; + if ("undefined" != typeof CanvasPixelArray && p instanceof CanvasPixelArray) + for (f = p.length; g < f;) { + var h = q[v]; + p[g] = 255 & h, p[g + 1] = h >> 8 & 255, p[g + 2] = h >> 16 & 255, p[g + 3] = h >> 24 & 255, v++, g += 4 + } else { + var _ = new Int32Array(p.buffer); + f = _.length, _.set(q.subarray(v, v + f)) + } + d.putImageData(m, 0, 0); + var b = 0 === u && 0 === s ? "url(" + l.toDataURL() + "), auto" : "url(" + l.toDataURL() + ") " + u + " " + s + ", auto", + y = Zr(b.length + 1); + return B(b, y, b.length + 1), y + }, + 924720: function(e) { + return r.canvas && (r.canvas.style.cursor = L(e)), 0 + }, + 924813: function() { + r.canvas && (r.canvas.style.cursor = "none") + }, + 926038: function() { + return screen.width + }, + 926065: function() { + return screen.height + }, + 926093: function() { + return window.innerWidth + }, + 926125: function() { + return window.innerHeight + }, + 926203: function(e) { + return void 0 !== s && s(L(e)), 0 + }, + 926337: function() { + return "undefined" != typeof AudioContext || "undefined" != typeof webkitAudioContext ? 1 : 0 + }, + 926503: function() { + return void 0 !== navigator.mediaDevices && void 0 !== navigator.mediaDevices.getUserMedia || void 0 !== navigator.webkitGetUserMedia ? 1 : 0 + }, + 926729: function(e) { + void 0 === r.SDL2 && (r.SDL2 = {}); + var t = r.SDL2; + return e ? t.capture = {} : t.audio = {}, t.audioContext || ("undefined" != typeof AudioContext ? t.audioContext = new AudioContext : "undefined" != typeof webkitAudioContext && (t.audioContext = new webkitAudioContext)), void 0 === t.audioContext ? -1 : 0 + }, + 927212: function() { + return r.SDL2.audioContext.sampleRate + }, + 927282: function(e, t, n, i) { + var a = r.SDL2, + o = function(r) { + void 0 !== a.capture.silenceTimer && (clearTimeout(a.capture.silenceTimer), a.capture.silenceTimer = void 0), a.capture.mediaStreamNode = a.audioContext.createMediaStreamSource(r), a.capture.scriptProcessorNode = a.audioContext.createScriptProcessor(t, e, 1), a.capture.scriptProcessorNode.onaudioprocess = function(e) { + void 0 !== a && void 0 !== a.capture && (e.outputBuffer.getChannelData(0).fill(0), a.capture.currentCaptureBuffer = e.inputBuffer, _("vi", n, [i])) + }, a.capture.mediaStreamNode.connect(a.capture.scriptProcessorNode), a.capture.scriptProcessorNode.connect(a.audioContext.destination), a.capture.stream = r + }, + u = function(e) {}; + a.capture.silenceBuffer = a.audioContext.createBuffer(e, t, a.audioContext.sampleRate), a.capture.silenceBuffer.getChannelData(0).fill(0); + a.capture.silenceTimer = setTimeout((function() { + a.capture.currentCaptureBuffer = a.capture.silenceBuffer, _("vi", n, [i]) + }), t / a.audioContext.sampleRate * 1e3), void 0 !== navigator.mediaDevices && void 0 !== navigator.mediaDevices.getUserMedia ? navigator.mediaDevices.getUserMedia({ + audio: !0, + video: !1 + }).then(o).catch(u) : void 0 !== navigator.webkitGetUserMedia && navigator.webkitGetUserMedia({ + audio: !0, + video: !1 + }, o, u) + }, + 928934: function(e, t, n, i) { + var a = r.SDL2; + a.audio.scriptProcessorNode = a.audioContext.createScriptProcessor(t, 0, e), a.audio.scriptProcessorNode.onaudioprocess = function(e) { + void 0 !== a && void 0 !== a.audio && (a.audio.currentOutputBuffer = e.outputBuffer, _("vi", n, [i])) + }, a.audio.scriptProcessorNode.connect(a.audioContext.destination) + }, + 929344: function(e, t) { + for (var n = r.SDL2, i = n.capture.currentCaptureBuffer.numberOfChannels, a = 0; a < i; ++a) { + var o = n.capture.currentCaptureBuffer.getChannelData(a); + if (o.length != t) throw "Web Audio capture buffer length mismatch! Destination size: " + o.length + " samples vs expected " + t + " samples!"; + if (1 == i) + for (var u = 0; u < t; ++u) k(e + 4 * u, o[u], "float"); + else + for (u = 0; u < t; ++u) k(e + 4 * (u * i + a), o[u], "float") + } + }, + 929949: function(e, t) { + for (var n = r.SDL2, i = n.audio.currentOutputBuffer.numberOfChannels, a = 0; a < i; ++a) { + var o = n.audio.currentOutputBuffer.getChannelData(a); + if (o.length != t) throw "Web Audio output buffer length mismatch! Destination size: " + o.length + " samples vs expected " + t + " samples!"; + for (var u = 0; u < t; ++u) o[u] = V[e + (u * i + a << 2) >> 2] + } + }, + 930429: function(e) { + var t = r.SDL2; + if (e) { + if (void 0 !== t.capture.silenceTimer && clearTimeout(t.capture.silenceTimer), void 0 !== t.capture.stream) { + for (var n = t.capture.stream.getAudioTracks(), i = 0; i < n.length; i++) t.capture.stream.removeTrack(n[i]); + t.capture.stream = void 0 + } + void 0 !== t.capture.scriptProcessorNode && (t.capture.scriptProcessorNode.onaudioprocess = function(e) {}, t.capture.scriptProcessorNode.disconnect(), t.capture.scriptProcessorNode = void 0), void 0 !== t.capture.mediaStreamNode && (t.capture.mediaStreamNode.disconnect(), t.capture.mediaStreamNode = void 0), void 0 !== t.capture.silenceBuffer && (t.capture.silenceBuffer = void 0), t.capture = void 0 + } else null != t.audio.scriptProcessorNode && (t.audio.scriptProcessorNode.disconnect(), t.audio.scriptProcessorNode = void 0), t.audio = void 0; + void 0 !== t.audioContext && void 0 === t.audio && void 0 === t.capture && (t.audioContext.close(), t.audioContext = void 0) + } + }; + + function Ee() { + var e = new Error; + if (!e.stack) { + try { + throw new Error + } catch (r) { + e = r + } + if (!e.stack) return "(no stack trace available)" + } + return e.stack.toString() + } + + function xe(e) { + return q[$r() >> 2] = e, e + } + $.push({ + func: function() { + Wr() + } + }); + var ke, Ce = { + 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 i = e[n]; + "." === i ? e.splice(n, 1) : ".." === i ? (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 = Ce.normalizeArray(e.split("/").filter((function(e) { + return !!e + })), !r).join("/")) || r || (e = "."), e && t && (e += "/"), (r ? "/" : "") + e + }, + dirname: function(e) { + var r = Ce.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 Ce.splitPath(e)[3] + }, + join: function() { + var e = Array.prototype.slice.call(arguments, 0); + return Ce.normalize(e.join("/")) + }, + join2: function(e, r) { + return Ce.normalize(e + "/" + r) + } + }, + Se = { + resolve: function() { + for (var e = "", r = !1, t = arguments.length - 1; t >= -1 && !r; t--) { + var n = t >= 0 ? arguments[t] : Pe.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 (r ? "/" : "") + (e = Ce.normalizeArray(e.split("/").filter((function(e) { + return !!e + })), !r).join("/")) || "." + }, + 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 = Se.resolve(e).substr(1), r = Se.resolve(r).substr(1); + for (var n = t(e.split("/")), i = t(r.split("/")), a = Math.min(n.length, i.length), o = a, u = 0; u < a; u++) + if (n[u] !== i[u]) { + o = u; + break + } var s = []; + for (u = o; u < n.length; u++) s.push(".."); + return (s = s.concat(i.slice(o))).join("/") + } + }, + De = { + ttys: [], + init: function() {}, + shutdown: function() {}, + register: function(e, r) { + De.ttys[e] = { + input: [], + output: [], + ops: r + }, Pe.registerDevice(e, De.stream_ops) + }, + stream_ops: { + open: function(e) { + var r = De.ttys[e.node.rdev]; + if (!r) throw new Pe.ErrnoError(43); + 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, i) { + if (!e.tty || !e.tty.ops.get_char) throw new Pe.ErrnoError(60); + for (var a = 0, o = 0; o < n; o++) { + var u; + try { + u = e.tty.ops.get_char(e.tty) + } catch (e) { + throw new Pe.ErrnoError(29) + } + if (void 0 === u && 0 === a) throw new Pe.ErrnoError(6); + if (null == u) break; + a++, r[t + o] = u + } + return a && (e.node.timestamp = Date.now()), a + }, + write: function(e, r, t, n, i) { + if (!e.tty || !e.tty.ops.put_char) throw new Pe.ErrnoError(60); + try { + for (var a = 0; a < n; a++) e.tty.ops.put_char(e.tty, r[t + a]) + } catch (e) { + throw new Pe.ErrnoError(29) + } + return n && (e.node.timestamp = Date.now()), a + } + }, + 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 = Qr(r, !0) + } + return e.input.shift() + }, + put_char: function(e, r) { + null === r || 10 === r ? (m(T(e.output, 0)), e.output = []) : 0 != r && e.output.push(r) + }, + flush: function(e) { + e.output && e.output.length > 0 && (m(T(e.output, 0)), e.output = []) + } + }, + default_tty1_ops: { + put_char: function(e, r) { + null === r || 10 === r ? (p(T(e.output, 0)), e.output = []) : 0 != r && e.output.push(r) + }, + flush: function(e) { + e.output && e.output.length > 0 && (p(T(e.output, 0)), e.output = []) + } + } + }, + Fe = { + ops_table: null, + mount: function(e) { + return Fe.createNode(null, "/", 16895, 0) + }, + createNode: function(e, r, t, n) { + if (Pe.isBlkdev(t) || Pe.isFIFO(t)) throw new Pe.ErrnoError(63); + Fe.ops_table || (Fe.ops_table = { + dir: { + node: { + getattr: Fe.node_ops.getattr, + setattr: Fe.node_ops.setattr, + lookup: Fe.node_ops.lookup, + mknod: Fe.node_ops.mknod, + rename: Fe.node_ops.rename, + unlink: Fe.node_ops.unlink, + rmdir: Fe.node_ops.rmdir, + readdir: Fe.node_ops.readdir, + symlink: Fe.node_ops.symlink + }, + stream: { + llseek: Fe.stream_ops.llseek + } + }, + file: { + node: { + getattr: Fe.node_ops.getattr, + setattr: Fe.node_ops.setattr + }, + stream: { + llseek: Fe.stream_ops.llseek, + read: Fe.stream_ops.read, + write: Fe.stream_ops.write, + allocate: Fe.stream_ops.allocate, + mmap: Fe.stream_ops.mmap, + msync: Fe.stream_ops.msync + } + }, + link: { + node: { + getattr: Fe.node_ops.getattr, + setattr: Fe.node_ops.setattr, + readlink: Fe.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: Fe.node_ops.getattr, + setattr: Fe.node_ops.setattr + }, + stream: Pe.chrdev_stream_ops + } + }); + var i = Pe.createNode(e, r, t, n); + return Pe.isDir(i.mode) ? (i.node_ops = Fe.ops_table.dir.node, i.stream_ops = Fe.ops_table.dir.stream, i.contents = {}) : Pe.isFile(i.mode) ? (i.node_ops = Fe.ops_table.file.node, i.stream_ops = Fe.ops_table.file.stream, i.usedBytes = 0, i.contents = null) : Pe.isLink(i.mode) ? (i.node_ops = Fe.ops_table.link.node, i.stream_ops = Fe.ops_table.link.stream) : Pe.isChrdev(i.mode) && (i.node_ops = Fe.ops_table.chrdev.node, i.stream_ops = Fe.ops_table.chrdev.stream), i.timestamp = Date.now(), e && (e.contents[r] = i), i + }, + 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(0) + }, + expandFileStorage: function(e, r) { + var t = e.contents ? e.contents.length : 0; + if (!(t >= r)) { + r = Math.max(r, t * (t < 1048576 ? 2 : 1.125) >>> 0), 0 != t && (r = Math.max(r, 256)); + var n = e.contents; + e.contents = new Uint8Array(r), e.usedBytes > 0 && e.contents.set(n.subarray(0, e.usedBytes), 0) + } + }, + resizeFileStorage: function(e, r) { + if (e.usedBytes != r) { + if (0 == r) return e.contents = null, void(e.usedBytes = 0); + if (!e.contents || e.contents.subarray) { + var t = e.contents; + return e.contents = new Uint8Array(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 = Pe.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, Pe.isDir(e.mode) ? r.size = 4096 : Pe.isFile(e.mode) ? r.size = e.usedBytes : Pe.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 && Fe.resizeFileStorage(e, r.size) + }, + lookup: function(e, r) { + throw Pe.genericErrors[44] + }, + mknod: function(e, r, t, n) { + return Fe.createNode(e, r, t, n) + }, + rename: function(e, r, t) { + if (Pe.isDir(e.mode)) { + var n; + try { + n = Pe.lookupNode(r, t) + } catch (e) {} + if (n) + for (var i in n.contents) throw new Pe.ErrnoError(55) + } + 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 = Pe.lookupNode(e, r); + for (var n in t.contents) throw new Pe.ErrnoError(55); + 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 = Fe.createNode(e, r, 41471, 0); + return n.link = t, n + }, + readlink: function(e) { + if (!Pe.isLink(e.mode)) throw new Pe.ErrnoError(28); + return e.link + } + }, + stream_ops: { + read: function(e, r, t, n, i) { + var a = e.node.contents; + if (i >= e.node.usedBytes) return 0; + var o = Math.min(e.node.usedBytes - i, n); + if (o > 8 && a.subarray) r.set(a.subarray(i, i + o), t); + else + for (var u = 0; u < o; u++) r[t + u] = a[i + u]; + return o + }, + write: function(e, r, t, n, i, a) { + if (r.buffer === O.buffer && (a = !1), !n) return 0; + var o = e.node; + if (o.timestamp = Date.now(), r.subarray && (!o.contents || o.contents.subarray)) { + if (a) return o.contents = r.subarray(t, t + n), o.usedBytes = n, n; + if (0 === o.usedBytes && 0 === i) return o.contents = r.slice(t, t + n), o.usedBytes = n, n; + if (i + n <= o.usedBytes) return o.contents.set(r.subarray(t, t + n), i), n + } + if (Fe.expandFileStorage(o, i + n), o.contents.subarray && r.subarray) o.contents.set(r.subarray(t, t + n), i); + else + for (var u = 0; u < n; u++) o.contents[i + u] = r[t + u]; + return o.usedBytes = Math.max(o.usedBytes, i + n), n + }, + llseek: function(e, r, t) { + var n = r; + if (1 === t ? n += e.position : 2 === t && Pe.isFile(e.node.mode) && (n += e.node.usedBytes), n < 0) throw new Pe.ErrnoError(28); + return n + }, + allocate: function(e, r, t) { + Fe.expandFileStorage(e.node, r + t), e.node.usedBytes = Math.max(e.node.usedBytes, r + t) + }, + mmap: function(e, r, t, n, i, a, o) { + if (!Pe.isFile(e.node.mode)) throw new Pe.ErrnoError(43); + var u, s, c = e.node.contents; + if (2 & o || c.buffer !== r.buffer) { + (i > 0 || i + n < c.length) && (c = c.subarray ? c.subarray(i, i + n) : Array.prototype.slice.call(c, i, i + n)), s = !0; + var l = r.buffer == O.buffer; + if (!(u = Zr(n))) throw new Pe.ErrnoError(48); + (l ? O : r).set(c, u) + } else s = !1, u = c.byteOffset; + return { + ptr: u, + allocated: s + } + }, + msync: function(e, r, t, n, i) { + if (!Pe.isFile(e.node.mode)) throw new Pe.ErrnoError(43); + if (2 & i) return 0; + Fe.stream_ops.write(e, r, 0, n, t, !1); + return 0 + } + } + }, + Ae = { + 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), D(e, "IDBFS used, but indexedDB not supported"), e + }, + DB_VERSION: 21, + DB_STORE_NAME: "FILE_DATA", + mount: function(e) { + return Fe.mount.apply(null, arguments) + }, + syncfs: function(e, r, t) { + Ae.getLocalSet(e, (function(n, i) { + if (n) return t(n); + Ae.getRemoteSet(e, (function(e, n) { + if (e) return t(e); + var a = r ? n : i, + o = r ? i : n; + Ae.reconcile(a, o, t) + })) + })) + }, + getDB: function(e, r) { + var t, n = Ae.dbs[e]; + if (n) return r(null, n); + try { + t = Ae.indexedDB().open(e, Ae.DB_VERSION) + } catch (e) { + return r(e) + } + if (!t) return r("Unable to connect to IndexedDB"); + t.onupgradeneeded = function(e) { + var r, t = e.target.result, + n = e.target.transaction; + (r = t.objectStoreNames.contains(Ae.DB_STORE_NAME) ? n.objectStore(Ae.DB_STORE_NAME) : t.createObjectStore(Ae.DB_STORE_NAME)).indexNames.contains("timestamp") || r.createIndex("timestamp", "timestamp", { + unique: !1 + }) + }, t.onsuccess = function() { + n = t.result, Ae.dbs[e] = n, r(null, n) + }, t.onerror = function(e) { + r(this.error), e.preventDefault() + } + }, + getLocalSet: function(e, r) { + var t = {}; + + function n(e) { + return "." !== e && ".." !== e + } + + function i(e) { + return function(r) { + return Ce.join2(e, r) + } + } + for (var a = Pe.readdir(e.mountpoint).filter(n).map(i(e.mountpoint)); a.length;) { + var o, u = a.pop(); + try { + o = Pe.stat(u) + } catch (e) { + return r(e) + } + Pe.isDir(o.mode) && a.push.apply(a, Pe.readdir(u).filter(n).map(i(u))), t[u] = { + timestamp: o.mtime + } + } + return r(null, { + type: "local", + entries: t + }) + }, + getRemoteSet: function(e, r) { + var t = {}; + Ae.getDB(e.mountpoint, (function(e, n) { + if (e) return r(e); + try { + var i = n.transaction([Ae.DB_STORE_NAME], "readonly"); + i.onerror = function(e) { + r(this.error), e.preventDefault() + }, i.objectStore(Ae.DB_STORE_NAME).index("timestamp").openKeyCursor().onsuccess = function(e) { + var i = e.target.result; + if (!i) return r(null, { + type: "remote", + db: n, + entries: t + }); + t[i.primaryKey] = { + timestamp: i.key + }, i.continue() + } + } catch (e) { + return r(e) + } + })) + }, + loadLocalEntry: function(e, r) { + var t, n; + try { + n = Pe.lookupPath(e).node, t = Pe.stat(e) + } catch (e) { + return r(e) + } + return Pe.isDir(t.mode) ? r(null, { + timestamp: t.mtime, + mode: t.mode + }) : Pe.isFile(t.mode) ? (n.contents = Fe.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 (Pe.isDir(r.mode)) Pe.mkdir(e, r.mode); + else { + if (!Pe.isFile(r.mode)) return t(new Error("node type not supported")); + Pe.writeFile(e, r.contents, { + canOwn: !0 + }) + } + Pe.chmod(e, r.mode), Pe.utime(e, r.timestamp, r.timestamp) + } catch (e) { + return t(e) + } + t(null) + }, + removeLocalEntry: function(e, r) { + try { + Pe.lookupPath(e); + var t = Pe.stat(e); + Pe.isDir(t.mode) ? Pe.rmdir(e) : Pe.isFile(t.mode) && Pe.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 i = e.put(t, r); + i.onsuccess = function() { + n(null) + }, i.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) { + var n = 0, + i = []; + Object.keys(e.entries).forEach((function(t) { + var a = e.entries[t], + o = r.entries[t]; + (!o || a.timestamp > o.timestamp) && (i.push(t), n++) + })); + var a = []; + if (Object.keys(r.entries).forEach((function(t) { + r.entries[t]; + e.entries[t] || (a.push(t), n++) + })), !n) return t(null); + var o = !1, + u = ("remote" === e.type ? e.db : r.db).transaction([Ae.DB_STORE_NAME], "readwrite"), + s = u.objectStore(Ae.DB_STORE_NAME); + + function c(e) { + if (e && !o) return o = !0, t(e) + } + u.onerror = function(e) { + c(this.error), e.preventDefault() + }, u.oncomplete = function(e) { + o || t(null) + }, i.sort().forEach((function(e) { + "local" === r.type ? Ae.loadRemoteEntry(s, e, (function(r, t) { + if (r) return c(r); + Ae.storeLocalEntry(e, t, c) + })) : Ae.loadLocalEntry(e, (function(r, t) { + if (r) return c(r); + Ae.storeRemoteEntry(s, e, t, c) + })) + })), a.sort().reverse().forEach((function(e) { + "local" === r.type ? Ae.removeLocalEntry(e, c) : Ae.removeRemoteEntry(s, e, c) + })) + } + }, + Pe = { + root: null, + mounts: [], + devices: {}, + 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 Pe.ErrnoError)) throw e + " : " + (t = Ee(), r.extraStackTrace && (t += "\n" + r.extraStackTrace()), t.replace(/\b_Z[\w\d_]+/g, (function(e) { + return e == e ? e : e + " [" + e + "]" + }))); + var t; + return xe(e.errno) + }, + lookupPath: function(e, r) { + if (r = r || {}, !(e = Se.resolve(Pe.cwd(), 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 Pe.ErrnoError(32); + for (var i = Ce.normalizeArray(e.split("/").filter((function(e) { + return !!e + })), !1), a = Pe.root, o = "/", u = 0; u < i.length; u++) { + var s = u === i.length - 1; + if (s && r.parent) break; + if (a = Pe.lookupNode(a, i[u]), o = Ce.join2(o, i[u]), Pe.isMountpoint(a) && (!s || s && r.follow_mount) && (a = a.mounted.root), !s || r.follow) + for (var c = 0; Pe.isLink(a.mode);) { + var l = Pe.readlink(o); + if (o = Se.resolve(Ce.dirname(o), l), a = Pe.lookupPath(o, { + recurse_count: r.recurse_count + }).node, c++ > 40) throw new Pe.ErrnoError(32) + } + } + return { + path: o, + node: a + } + }, + getPath: function(e) { + for (var r;;) { + if (Pe.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) % Pe.nameTable.length + }, + hashAddNode: function(e) { + var r = Pe.hashName(e.parent.id, e.name); + e.name_next = Pe.nameTable[r], Pe.nameTable[r] = e + }, + hashRemoveNode: function(e) { + var r = Pe.hashName(e.parent.id, e.name); + if (Pe.nameTable[r] === e) Pe.nameTable[r] = e.name_next; + else + for (var t = Pe.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 = Pe.mayLookup(e); + if (t) throw new Pe.ErrnoError(t, e); + for (var n = Pe.hashName(e.id, r), i = Pe.nameTable[n]; i; i = i.name_next) { + var a = i.name; + if (i.parent.id === e.id && a === r) return i + } + return Pe.lookup(e, r) + }, + createNode: function(e, r, t, n) { + var i = new Pe.FSNode(e, r, t, n); + return Pe.hashAddNode(i), i + }, + destroyNode: function(e) { + Pe.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 = Pe.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 Pe.ignorePermissions || (-1 === r.indexOf("r") || 292 & e.mode) && (-1 === r.indexOf("w") || 146 & e.mode) && (-1 === r.indexOf("x") || 73 & e.mode) ? 0 : 2 + }, + mayLookup: function(e) { + var r = Pe.nodePermissions(e, "x"); + return r || (e.node_ops.lookup ? 0 : 2) + }, + mayCreate: function(e, r) { + try { + Pe.lookupNode(e, r); + return 20 + } catch (e) {} + return Pe.nodePermissions(e, "wx") + }, + mayDelete: function(e, r, t) { + var n; + try { + n = Pe.lookupNode(e, r) + } catch (e) { + return e.errno + } + var i = Pe.nodePermissions(e, "wx"); + if (i) return i; + if (t) { + if (!Pe.isDir(n.mode)) return 54; + if (Pe.isRoot(n) || Pe.getPath(n) === Pe.cwd()) return 10 + } else if (Pe.isDir(n.mode)) return 31; + return 0 + }, + mayOpen: function(e, r) { + return e ? Pe.isLink(e.mode) ? 32 : Pe.isDir(e.mode) && ("r" !== Pe.flagsToPermissionString(r) || 512 & r) ? 31 : Pe.nodePermissions(e, Pe.flagsToPermissionString(r)) : 44 + }, + MAX_OPEN_FDS: 4096, + nextfd: function(e, r) { + e = e || 0, r = r || Pe.MAX_OPEN_FDS; + for (var t = e; t <= r; t++) + if (!Pe.streams[t]) return t; + throw new Pe.ErrnoError(33) + }, + getStream: function(e) { + return Pe.streams[e] + }, + createStream: function(e, r, t) { + Pe.FSStream || (Pe.FSStream = function() {}, Pe.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 Pe.FSStream; + for (var i in e) n[i] = e[i]; + e = n; + var a = Pe.nextfd(r, t); + return e.fd = a, Pe.streams[a] = e, e + }, + closeStream: function(e) { + Pe.streams[e] = null + }, + chrdev_stream_ops: { + open: function(e) { + var r = Pe.getDevice(e.node.rdev); + e.stream_ops = r.stream_ops, e.stream_ops.open && e.stream_ops.open(e) + }, + llseek: function() { + throw new Pe.ErrnoError(70) + } + }, + major: function(e) { + return e >> 8 + }, + minor: function(e) { + return 255 & e + }, + makedev: function(e, r) { + return e << 8 | r + }, + registerDevice: function(e, r) { + Pe.devices[e] = { + stream_ops: r + } + }, + getDevice: function(e) { + return Pe.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" == typeof e && (r = e, e = !1), Pe.syncFSRequests++, Pe.syncFSRequests > 1 && p("warning: " + Pe.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"); + var t = Pe.getMounts(Pe.root.mount), + n = 0; + + function i(e) { + return Pe.syncFSRequests--, r(e) + } + + function a(e) { + if (e) return a.errored ? void 0 : (a.errored = !0, i(e)); + ++n >= t.length && i(null) + } + t.forEach((function(r) { + if (!r.type.syncfs) return a(null); + r.type.syncfs(r, e, a) + })) + }, + mount: function(e, r, t) { + var n, i = "/" === t, + a = !t; + if (i && Pe.root) throw new Pe.ErrnoError(10); + if (!i && !a) { + var o = Pe.lookupPath(t, { + follow_mount: !1 + }); + if (t = o.path, n = o.node, Pe.isMountpoint(n)) throw new Pe.ErrnoError(10); + if (!Pe.isDir(n.mode)) throw new Pe.ErrnoError(54) + } + var u = { + type: e, + opts: r, + mountpoint: t, + mounts: [] + }, + s = e.mount(u); + return s.mount = u, u.root = s, i ? Pe.root = s : n && (n.mounted = u, n.mount && n.mount.mounts.push(u)), s + }, + unmount: function(e) { + var r = Pe.lookupPath(e, { + follow_mount: !1 + }); + if (!Pe.isMountpoint(r.node)) throw new Pe.ErrnoError(28); + var t = r.node, + n = t.mounted, + i = Pe.getMounts(n); + Object.keys(Pe.nameTable).forEach((function(e) { + for (var r = Pe.nameTable[e]; r;) { + var t = r.name_next; - 1 !== i.indexOf(r.mount) && Pe.destroyNode(r), r = t + } + })), t.mounted = null; + var a = t.mount.mounts.indexOf(n); + t.mount.mounts.splice(a, 1) + }, + lookup: function(e, r) { + return e.node_ops.lookup(e, r) + }, + mknod: function(e, r, t) { + var n = Pe.lookupPath(e, { + parent: !0 + }).node, + i = Ce.basename(e); + if (!i || "." === i || ".." === i) throw new Pe.ErrnoError(28); + var a = Pe.mayCreate(n, i); + if (a) throw new Pe.ErrnoError(a); + if (!n.node_ops.mknod) throw new Pe.ErrnoError(63); + return n.node_ops.mknod(n, i, r, t) + }, + create: function(e, r) { + return r = void 0 !== r ? r : 438, r &= 4095, r |= 32768, Pe.mknod(e, r, 0) + }, + mkdir: function(e, r) { + return r = void 0 !== r ? r : 511, r &= 1023, r |= 16384, Pe.mknod(e, r, 0) + }, + mkdirTree: function(e, r) { + for (var t = e.split("/"), n = "", i = 0; i < t.length; ++i) + if (t[i]) { + n += "/" + t[i]; + try { + Pe.mkdir(n, r) + } catch (e) { + if (20 != e.errno) throw e + } + } + }, + mkdev: function(e, r, t) { + return void 0 === t && (t = r, r = 438), r |= 8192, Pe.mknod(e, r, t) + }, + symlink: function(e, r) { + if (!Se.resolve(e)) throw new Pe.ErrnoError(44); + var t = Pe.lookupPath(r, { + parent: !0 + }).node; + if (!t) throw new Pe.ErrnoError(44); + var n = Ce.basename(r), + i = Pe.mayCreate(t, n); + if (i) throw new Pe.ErrnoError(i); + if (!t.node_ops.symlink) throw new Pe.ErrnoError(63); + return t.node_ops.symlink(t, n, e) + }, + rename: function(e, r) { + var t, n, i = Ce.dirname(e), + a = Ce.dirname(r), + o = Ce.basename(e), + u = Ce.basename(r); + try { + t = Pe.lookupPath(e, { + parent: !0 + }).node, n = Pe.lookupPath(r, { + parent: !0 + }).node + } catch (e) { + throw new Pe.ErrnoError(10) + } + if (!t || !n) throw new Pe.ErrnoError(44); + if (t.mount !== n.mount) throw new Pe.ErrnoError(75); + var s, c = Pe.lookupNode(t, o), + l = Se.relative(e, a); + if ("." !== l.charAt(0)) throw new Pe.ErrnoError(28); + if ("." !== (l = Se.relative(r, i)).charAt(0)) throw new Pe.ErrnoError(55); + try { + s = Pe.lookupNode(n, u) + } catch (e) {} + if (c !== s) { + var f = Pe.isDir(c.mode), + d = Pe.mayDelete(t, o, f); + if (d) throw new Pe.ErrnoError(d); + if (d = s ? Pe.mayDelete(n, u, f) : Pe.mayCreate(n, u)) throw new Pe.ErrnoError(d); + if (!t.node_ops.rename) throw new Pe.ErrnoError(63); + if (Pe.isMountpoint(c) || s && Pe.isMountpoint(s)) throw new Pe.ErrnoError(10); + if (n !== t && (d = Pe.nodePermissions(t, "w"))) throw new Pe.ErrnoError(d); + try { + Pe.trackingDelegate.willMovePath && Pe.trackingDelegate.willMovePath(e, r) + } catch (t) { + p("FS.trackingDelegate['willMovePath']('" + e + "', '" + r + "') threw an exception: " + t.message) + } + Pe.hashRemoveNode(c); + try { + t.node_ops.rename(c, n, u) + } catch (e) { + throw e + } finally { + Pe.hashAddNode(c) + } + try { + Pe.trackingDelegate.onMovePath && Pe.trackingDelegate.onMovePath(e, r) + } catch (t) { + p("FS.trackingDelegate['onMovePath']('" + e + "', '" + r + "') threw an exception: " + t.message) + } + } + }, + rmdir: function(e) { + var r = Pe.lookupPath(e, { + parent: !0 + }).node, + t = Ce.basename(e), + n = Pe.lookupNode(r, t), + i = Pe.mayDelete(r, t, !0); + if (i) throw new Pe.ErrnoError(i); + if (!r.node_ops.rmdir) throw new Pe.ErrnoError(63); + if (Pe.isMountpoint(n)) throw new Pe.ErrnoError(10); + try { + Pe.trackingDelegate.willDeletePath && Pe.trackingDelegate.willDeletePath(e) + } catch (r) { + p("FS.trackingDelegate['willDeletePath']('" + e + "') threw an exception: " + r.message) + } + r.node_ops.rmdir(r, t), Pe.destroyNode(n); + try { + Pe.trackingDelegate.onDeletePath && Pe.trackingDelegate.onDeletePath(e) + } catch (r) { + p("FS.trackingDelegate['onDeletePath']('" + e + "') threw an exception: " + r.message) + } + }, + readdir: function(e) { + var r = Pe.lookupPath(e, { + follow: !0 + }).node; + if (!r.node_ops.readdir) throw new Pe.ErrnoError(54); + return r.node_ops.readdir(r) + }, + unlink: function(e) { + var r = Pe.lookupPath(e, { + parent: !0 + }).node, + t = Ce.basename(e), + n = Pe.lookupNode(r, t), + i = Pe.mayDelete(r, t, !1); + if (i) throw new Pe.ErrnoError(i); + if (!r.node_ops.unlink) throw new Pe.ErrnoError(63); + if (Pe.isMountpoint(n)) throw new Pe.ErrnoError(10); + try { + Pe.trackingDelegate.willDeletePath && Pe.trackingDelegate.willDeletePath(e) + } catch (r) { + p("FS.trackingDelegate['willDeletePath']('" + e + "') threw an exception: " + r.message) + } + r.node_ops.unlink(r, t), Pe.destroyNode(n); + try { + Pe.trackingDelegate.onDeletePath && Pe.trackingDelegate.onDeletePath(e) + } catch (r) { + p("FS.trackingDelegate['onDeletePath']('" + e + "') threw an exception: " + r.message) + } + }, + readlink: function(e) { + var r = Pe.lookupPath(e).node; + if (!r) throw new Pe.ErrnoError(44); + if (!r.node_ops.readlink) throw new Pe.ErrnoError(28); + return Se.resolve(Pe.getPath(r.parent), r.node_ops.readlink(r)) + }, + stat: function(e, r) { + var t = Pe.lookupPath(e, { + follow: !r + }).node; + if (!t) throw new Pe.ErrnoError(44); + if (!t.node_ops.getattr) throw new Pe.ErrnoError(63); + return t.node_ops.getattr(t) + }, + lstat: function(e) { + return Pe.stat(e, !0) + }, + chmod: function(e, r, t) { + var n; + "string" == typeof e ? n = Pe.lookupPath(e, { + follow: !t + }).node : n = e; + if (!n.node_ops.setattr) throw new Pe.ErrnoError(63); + n.node_ops.setattr(n, { + mode: 4095 & r | -4096 & n.mode, + timestamp: Date.now() + }) + }, + lchmod: function(e, r) { + Pe.chmod(e, r, !0) + }, + fchmod: function(e, r) { + var t = Pe.getStream(e); + if (!t) throw new Pe.ErrnoError(8); + Pe.chmod(t.node, r) + }, + chown: function(e, r, t, n) { + var i; + "string" == typeof e ? i = Pe.lookupPath(e, { + follow: !n + }).node : i = e; + if (!i.node_ops.setattr) throw new Pe.ErrnoError(63); + i.node_ops.setattr(i, { + timestamp: Date.now() + }) + }, + lchown: function(e, r, t) { + Pe.chown(e, r, t, !0) + }, + fchown: function(e, r, t) { + var n = Pe.getStream(e); + if (!n) throw new Pe.ErrnoError(8); + Pe.chown(n.node, r, t) + }, + truncate: function(e, r) { + if (r < 0) throw new Pe.ErrnoError(28); + var t; + "string" == typeof e ? t = Pe.lookupPath(e, { + follow: !0 + }).node : t = e; + if (!t.node_ops.setattr) throw new Pe.ErrnoError(63); + if (Pe.isDir(t.mode)) throw new Pe.ErrnoError(31); + if (!Pe.isFile(t.mode)) throw new Pe.ErrnoError(28); + var n = Pe.nodePermissions(t, "w"); + if (n) throw new Pe.ErrnoError(n); + t.node_ops.setattr(t, { + size: r, + timestamp: Date.now() + }) + }, + ftruncate: function(e, r) { + var t = Pe.getStream(e); + if (!t) throw new Pe.ErrnoError(8); + if (0 == (2097155 & t.flags)) throw new Pe.ErrnoError(28); + Pe.truncate(t.node, r) + }, + utime: function(e, r, t) { + var n = Pe.lookupPath(e, { + follow: !0 + }).node; + n.node_ops.setattr(n, { + timestamp: Math.max(r, t) + }) + }, + open: function(e, t, n, i, a) { + if ("" === e) throw new Pe.ErrnoError(44); + var o; + if (n = void 0 === n ? 438 : n, n = 64 & (t = "string" == typeof t ? Pe.modeStringToFlags(t) : t) ? 4095 & n | 32768 : 0, "object" == typeof e) o = e; + else { + e = Ce.normalize(e); + try { + o = Pe.lookupPath(e, { + follow: !(131072 & t) + }).node + } catch (e) {} + } + var u = !1; + if (64 & t) + if (o) { + if (128 & t) throw new Pe.ErrnoError(20) + } else o = Pe.mknod(e, n, 0), u = !0; + if (!o) throw new Pe.ErrnoError(44); + if (Pe.isChrdev(o.mode) && (t &= -513), 65536 & t && !Pe.isDir(o.mode)) throw new Pe.ErrnoError(54); + if (!u) { + var s = Pe.mayOpen(o, t); + if (s) throw new Pe.ErrnoError(s) + } + 512 & t && Pe.truncate(o, 0), t &= -131713; + var c = Pe.createStream({ + node: o, + path: Pe.getPath(o), + flags: t, + seekable: !0, + position: 0, + stream_ops: o.stream_ops, + ungotten: [], + error: !1 + }, i, a); + c.stream_ops.open && c.stream_ops.open(c), !r.logReadFiles || 1 & t || (Pe.readFiles || (Pe.readFiles = {}), e in Pe.readFiles || (Pe.readFiles[e] = 1, p("FS.trackingDelegate error on read file: " + e))); + try { + if (Pe.trackingDelegate.onOpenFile) { + var l = 0; + 1 != (2097155 & t) && (l |= Pe.tracking.openFlags.READ), 0 != (2097155 & t) && (l |= Pe.tracking.openFlags.WRITE), Pe.trackingDelegate.onOpenFile(e, l) + } + } catch (r) { + p("FS.trackingDelegate['onOpenFile']('" + e + "', flags) threw an exception: " + r.message) + } + return c + }, + close: function(e) { + if (Pe.isClosed(e)) throw new Pe.ErrnoError(8); + e.getdents && (e.getdents = null); + try { + e.stream_ops.close && e.stream_ops.close(e) + } catch (e) { + throw e + } finally { + Pe.closeStream(e.fd) + } + e.fd = null + }, + isClosed: function(e) { + return null === e.fd + }, + llseek: function(e, r, t) { + if (Pe.isClosed(e)) throw new Pe.ErrnoError(8); + if (!e.seekable || !e.stream_ops.llseek) throw new Pe.ErrnoError(70); + if (0 != t && 1 != t && 2 != t) throw new Pe.ErrnoError(28); + return e.position = e.stream_ops.llseek(e, r, t), e.ungotten = [], e.position + }, + read: function(e, r, t, n, i) { + if (n < 0 || i < 0) throw new Pe.ErrnoError(28); + if (Pe.isClosed(e)) throw new Pe.ErrnoError(8); + if (1 == (2097155 & e.flags)) throw new Pe.ErrnoError(8); + if (Pe.isDir(e.node.mode)) throw new Pe.ErrnoError(31); + if (!e.stream_ops.read) throw new Pe.ErrnoError(28); + var a = void 0 !== i; + if (a) { + if (!e.seekable) throw new Pe.ErrnoError(70) + } else i = e.position; + var o = e.stream_ops.read(e, r, t, n, i); + return a || (e.position += o), o + }, + write: function(e, r, t, n, i, a) { + if (n < 0 || i < 0) throw new Pe.ErrnoError(28); + if (Pe.isClosed(e)) throw new Pe.ErrnoError(8); + if (0 == (2097155 & e.flags)) throw new Pe.ErrnoError(8); + if (Pe.isDir(e.node.mode)) throw new Pe.ErrnoError(31); + if (!e.stream_ops.write) throw new Pe.ErrnoError(28); + e.seekable && 1024 & e.flags && Pe.llseek(e, 0, 2); + var o = void 0 !== i; + if (o) { + if (!e.seekable) throw new Pe.ErrnoError(70) + } else i = e.position; + var u = e.stream_ops.write(e, r, t, n, i, a); + o || (e.position += u); + try { + e.path && Pe.trackingDelegate.onWriteToFile && Pe.trackingDelegate.onWriteToFile(e.path) + } catch (r) { + p("FS.trackingDelegate['onWriteToFile']('" + e.path + "') threw an exception: " + r.message) + } + return u + }, + allocate: function(e, r, t) { + if (Pe.isClosed(e)) throw new Pe.ErrnoError(8); + if (r < 0 || t <= 0) throw new Pe.ErrnoError(28); + if (0 == (2097155 & e.flags)) throw new Pe.ErrnoError(8); + if (!Pe.isFile(e.node.mode) && !Pe.isDir(e.node.mode)) throw new Pe.ErrnoError(43); + if (!e.stream_ops.allocate) throw new Pe.ErrnoError(138); + e.stream_ops.allocate(e, r, t) + }, + mmap: function(e, r, t, n, i, a, o) { + if (0 != (2 & a) && 0 == (2 & o) && 2 != (2097155 & e.flags)) throw new Pe.ErrnoError(2); + if (1 == (2097155 & e.flags)) throw new Pe.ErrnoError(2); + if (!e.stream_ops.mmap) throw new Pe.ErrnoError(43); + return e.stream_ops.mmap(e, r, t, n, i, a, o) + }, + msync: function(e, r, t, n, i) { + return e && e.stream_ops.msync ? e.stream_ops.msync(e, r, t, n, i) : 0 + }, + munmap: function(e) { + return 0 + }, + ioctl: function(e, r, t) { + if (!e.stream_ops.ioctl) throw new Pe.ErrnoError(59); + return e.stream_ops.ioctl(e, r, t) + }, + readFile: function(e, r) { + if ((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 = Pe.open(e, r.flags), + i = Pe.stat(e).size, + a = new Uint8Array(i); + return Pe.read(n, a, 0, i, 0), "utf8" === r.encoding ? t = T(a, 0) : "binary" === r.encoding && (t = a), Pe.close(n), t + }, + writeFile: function(e, r, t) { + (t = t || {}).flags = t.flags || "w"; + var n = Pe.open(e, t.flags, t.mode); + if ("string" == typeof r) { + var i = new Uint8Array(R(r) + 1), + a = I(r, i, 0, i.length); + Pe.write(n, i, 0, a, void 0, t.canOwn) + } else { + if (!ArrayBuffer.isView(r)) throw new Error("Unsupported data type"); + Pe.write(n, r, 0, r.byteLength, void 0, t.canOwn) + } + Pe.close(n) + }, + cwd: function() { + return Pe.currentPath + }, + chdir: function(e) { + var r = Pe.lookupPath(e, { + follow: !0 + }); + if (null === r.node) throw new Pe.ErrnoError(44); + if (!Pe.isDir(r.node.mode)) throw new Pe.ErrnoError(54); + var t = Pe.nodePermissions(r.node, "x"); + if (t) throw new Pe.ErrnoError(t); + Pe.currentPath = r.path + }, + createDefaultDirectories: function() { + Pe.mkdir("/tmp"), Pe.mkdir("/home"), Pe.mkdir("/home/web_user") + }, + createDefaultDevices: function() { + var e; + if (Pe.mkdir("/dev"), Pe.registerDevice(Pe.makedev(1, 3), { + read: function() { + return 0 + }, + write: function(e, r, t, n, i) { + return n + } + }), Pe.mkdev("/dev/null", Pe.makedev(1, 3)), De.register(Pe.makedev(5, 0), De.default_tty_ops), De.register(Pe.makedev(6, 0), De.default_tty1_ops), Pe.mkdev("/dev/tty", Pe.makedev(5, 0)), Pe.mkdev("/dev/tty1", Pe.makedev(6, 0)), "object" == typeof crypto && "function" == typeof crypto.getRandomValues) { + var r = new Uint8Array(1); + e = function() { + return crypto.getRandomValues(r), r[0] + } + } + e || (e = function() { + pe("random_device") + }), Pe.createDevice("/dev", "random", e), Pe.createDevice("/dev", "urandom", e), Pe.mkdir("/dev/shm"), Pe.mkdir("/dev/shm/tmp") + }, + createSpecialDirectories: function() { + Pe.mkdir("/proc"), Pe.mkdir("/proc/self"), Pe.mkdir("/proc/self/fd"), Pe.mount({ + mount: function() { + var e = Pe.createNode("/proc/self", "fd", 16895, 73); + return e.node_ops = { + lookup: function(e, r) { + var t = +r, + n = Pe.getStream(t); + if (!n) throw new Pe.ErrnoError(8); + var i = { + parent: null, + mount: { + mountpoint: "fake" + }, + node_ops: { + readlink: function() { + return n.path + } + } + }; + return i.parent = i, i + } + }, e + } + }, {}, "/proc/self/fd") + }, + createStandardStreams: function() { + r.stdin ? Pe.createDevice("/dev", "stdin", r.stdin) : Pe.symlink("/dev/tty", "/dev/stdin"), r.stdout ? Pe.createDevice("/dev", "stdout", null, r.stdout) : Pe.symlink("/dev/tty", "/dev/stdout"), r.stderr ? Pe.createDevice("/dev", "stderr", null, r.stderr) : Pe.symlink("/dev/tty1", "/dev/stderr"); + Pe.open("/dev/stdin", "r"), Pe.open("/dev/stdout", "w"), Pe.open("/dev/stderr", "w") + }, + ensureErrnoError: function() { + Pe.ErrnoError || (Pe.ErrnoError = function(e, r) { + this.node = r, this.setErrno = function(e) { + this.errno = e + }, this.setErrno(e), this.message = "FS error" + }, Pe.ErrnoError.prototype = new Error, Pe.ErrnoError.prototype.constructor = Pe.ErrnoError, [44].forEach((function(e) { + Pe.genericErrors[e] = new Pe.ErrnoError(e), Pe.genericErrors[e].stack = "" + }))) + }, + staticInit: function() { + Pe.ensureErrnoError(), Pe.nameTable = new Array(4096), Pe.mount(Fe, {}, "/"), Pe.createDefaultDirectories(), Pe.createDefaultDevices(), Pe.createSpecialDirectories(), Pe.filesystems = { + MEMFS: Fe, + IDBFS: Ae + } + }, + init: function(e, t, n) { + Pe.init.initialized = !0, Pe.ensureErrnoError(), r.stdin = e || r.stdin, r.stdout = t || r.stdout, r.stderr = n || r.stderr, Pe.createStandardStreams() + }, + quit: function() { + Pe.init.initialized = !1; + var e = r._fflush; + e && e(0); + for (var t = 0; t < Pe.streams.length; t++) { + var n = Pe.streams[t]; + n && Pe.close(n) + } + }, + getMode: function(e, r) { + var t = 0; + return e && (t |= 365), r && (t |= 146), t + }, + joinPath: function(e, r) { + var t = Ce.join.apply(null, e); + return r && "/" == t[0] && (t = t.substr(1)), t + }, + absolutePath: function(e, r) { + return Se.resolve(r, e) + }, + standardizePath: function(e) { + return Ce.normalize(e) + }, + findObject: function(e, r) { + var t = Pe.analyzePath(e, r); + return t.exists ? t.object : (xe(t.error), null) + }, + analyzePath: function(e, r) { + try { + e = (n = Pe.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 = Pe.lookupPath(e, { + parent: !0 + }); + t.parentExists = !0, t.parentPath = n.path, t.parentObject = n.node, t.name = Ce.basename(e), n = Pe.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 i = Ce.join2("string" == typeof e ? e : Pe.getPath(e), r), + a = Pe.getMode(t, n); + return Pe.mkdir(i, a) + }, + createPath: function(e, r, t, n) { + e = "string" == typeof e ? e : Pe.getPath(e); + for (var i = r.split("/").reverse(); i.length;) { + var a = i.pop(); + if (a) { + var o = Ce.join2(e, a); + try { + Pe.mkdir(o) + } catch (e) {} + e = o + } + } + return o + }, + createFile: function(e, r, t, n, i) { + var a = Ce.join2("string" == typeof e ? e : Pe.getPath(e), r), + o = Pe.getMode(n, i); + return Pe.create(a, o) + }, + createDataFile: function(e, r, t, n, i, a) { + var o = r ? Ce.join2("string" == typeof e ? e : Pe.getPath(e), r) : e, + u = Pe.getMode(n, i), + s = Pe.create(o, u); + if (t) { + if ("string" == typeof t) { + for (var c = new Array(t.length), l = 0, f = t.length; l < f; ++l) c[l] = t.charCodeAt(l); + t = c + } + Pe.chmod(s, 146 | u); + var d = Pe.open(s, "w"); + Pe.write(d, t, 0, t.length, 0, a), Pe.close(d), Pe.chmod(s, u) + } + return s + }, + createDevice: function(e, r, t, n) { + var i = Ce.join2("string" == typeof e ? e : Pe.getPath(e), r), + a = Pe.getMode(!!t, !!n); + Pe.createDevice.major || (Pe.createDevice.major = 64); + var o = Pe.makedev(Pe.createDevice.major++, 0); + return Pe.registerDevice(o, { + open: function(e) { + e.seekable = !1 + }, + close: function(e) { + n && n.buffer && n.buffer.length && n(10) + }, + read: function(e, r, n, i, a) { + for (var o = 0, u = 0; u < i; u++) { + var s; + try { + s = t() + } catch (e) { + throw new Pe.ErrnoError(29) + } + if (void 0 === s && 0 === o) throw new Pe.ErrnoError(6); + if (null == s) break; + o++, r[n + u] = s + } + return o && (e.node.timestamp = Date.now()), o + }, + write: function(e, r, t, i, a) { + for (var o = 0; o < i; o++) try { + n(r[t + o]) + } catch (e) { + throw new Pe.ErrnoError(29) + } + return i && (e.node.timestamp = Date.now()), o + } + }), Pe.mkdev(i, a, o) + }, + createLink: function(e, r, t, n, i) { + var a = Ce.join2("string" == typeof e ? e : Pe.getPath(e), r); + return Pe.symlink(t, a) + }, + 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 (!a) throw new Error("Cannot load without read() or XMLHttpRequest."); + try { + e.contents = Qr(a(e.url), !0), e.usedBytes = e.contents.length + } catch (e) { + r = !1 + } + return r || xe(29), r + }, + createLazyFile: function(e, r, t, n, i) { + function a() { + this.lengthKnown = !1, this.chunks = [] + } + if (a.prototype.get = function(e) { + if (!(e > this.length - 1 || e < 0)) { + var r = e % this.chunkSize, + t = e / this.chunkSize | 0; + return this.getter(t)[r] + } + }, a.prototype.setDataGetter = function(e) { + this.getter = e + }, a.prototype.cacheLength = function() { + var e = 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")), + i = (r = e.getResponseHeader("Accept-Ranges")) && "bytes" === r, + a = (r = e.getResponseHeader("Content-Encoding")) && "gzip" === r, + o = 1048576; + i || (o = n); + var u = this; + u.setDataGetter((function(e) { + var r = e * o, + i = (e + 1) * o - 1; + if (i = Math.min(i, n - 1), void 0 === u.chunks[e] && (u.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 i = new XMLHttpRequest; + if (i.open("GET", t, !1), n !== o && i.setRequestHeader("Range", "bytes=" + e + "-" + r), "undefined" != typeof Uint8Array && (i.responseType = "arraybuffer"), i.overrideMimeType && i.overrideMimeType("text/plain; charset=x-user-defined"), i.send(null), !(i.status >= 200 && i.status < 300 || 304 === i.status)) throw new Error("Couldn't load " + t + ". Status: " + i.status); + return void 0 !== i.response ? new Uint8Array(i.response || []) : Qr(i.responseText || "", !0) + }(r, i)), void 0 === u.chunks[e]) throw new Error("doXHR failed!"); + return u.chunks[e] + })), !a && n || (o = n = 1, n = this.getter(0).length, o = n, m("LazyFiles on gzip forces download of the whole file when length is accessed")), this._length = n, this._chunkSize = o, this.lengthKnown = !0 + }, "undefined" != typeof XMLHttpRequest) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; + var o = { + isDevice: !1, + url: t + }, + u = Pe.createFile(e, r, o, n, i); + o.contents ? u.contents = o.contents : o.url && (u.contents = null, u.url = o.url), Object.defineProperties(u, { + usedBytes: { + get: function() { + return this.contents.length + } + } + }); + var s = {}; + return Object.keys(u.stream_ops).forEach((function(e) { + var r = u.stream_ops[e]; + s[e] = function() { + if (!Pe.forceLoadFile(u)) throw new Pe.ErrnoError(29); + return r.apply(null, arguments) + } + })), s.read = function(e, r, t, n, i) { + if (!Pe.forceLoadFile(u)) throw new Pe.ErrnoError(29); + var a = e.node.contents; + if (i >= a.length) return 0; + var o = Math.min(a.length - i, n); + if (a.slice) + for (var s = 0; s < o; s++) r[t + s] = a[i + s]; + else + for (s = 0; s < o; s++) r[t + s] = a.get(i + s); + return o + }, u.stream_ops = s, u + }, + createPreloadedFile: function(e, t, n, i, a, o, u, s, c, l) { + Be.init(); + var f = t ? Se.resolve(Ce.join2(e, t)) : e; + + function d(n) { + function d(r) { + l && l(), s || Pe.createDataFile(e, t, r, i, a, c), o && o(), me() + } + var m = !1; + r.preloadPlugins.forEach((function(e) { + m || e.canHandle(f) && (e.handle(n, f, d, (function() { + u && u(), me() + })), m = !0) + })), m || d(n) + } + de(), "string" == typeof n ? Be.asyncLoad(n, (function(e) { + d(e) + }), u) : d(n) + }, + 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 = Pe.indexedDB(); + try { + var i = n.open(Pe.DB_NAME(), Pe.DB_VERSION) + } catch (e) { + return t(e) + } + i.onupgradeneeded = function() { + m("creating db"), i.result.createObjectStore(Pe.DB_STORE_NAME) + }, i.onsuccess = function() { + var n = i.result.transaction([Pe.DB_STORE_NAME], "readwrite"), + a = n.objectStore(Pe.DB_STORE_NAME), + o = 0, + u = 0, + s = e.length; + + function c() { + 0 == u ? r() : t() + } + e.forEach((function(e) { + var r = a.put(Pe.analyzePath(e).object.contents, e); + r.onsuccess = function() { + ++o + u == s && c() + }, r.onerror = function() { + u++, o + u == s && c() + } + })), n.onerror = t + }, i.onerror = t + }, + loadFilesFromDB: function(e, r, t) { + r = r || function() {}, t = t || function() {}; + var n = Pe.indexedDB(); + try { + var i = n.open(Pe.DB_NAME(), Pe.DB_VERSION) + } catch (e) { + return t(e) + } + i.onupgradeneeded = t, i.onsuccess = function() { + var n = i.result; + try { + var a = n.transaction([Pe.DB_STORE_NAME], "readonly") + } catch (e) { + return void t(e) + } + var o = a.objectStore(Pe.DB_STORE_NAME), + u = 0, + s = 0, + c = e.length; + + function l() { + 0 == s ? r() : t() + } + e.forEach((function(e) { + var r = o.get(e); + r.onsuccess = function() { + Pe.analyzePath(e).exists && Pe.unlink(e), Pe.createDataFile(Ce.dirname(e), Ce.basename(e), r.result, !0, !0, !0), ++u + s == c && l() + }, r.onerror = function() { + s++, u + s == c && l() + } + })), a.onerror = t + }, i.onerror = t + } + }, + Te = { + mappings: {}, + DEFAULT_POLLMASK: 5, + umask: 511, + calculateAt: function(e, r) { + if ("/" !== r[0]) { + var t; + if (-100 === e) t = Pe.cwd(); + else { + var n = Pe.getStream(e); + if (!n) throw new Pe.ErrnoError(8); + t = n.path + } + r = Ce.join2(t, r) + } + return r + }, + doStat: function(e, r, t) { + try { + var n = e(r) + } catch (e) { + if (e && e.node && Ce.normalize(r) !== Ce.normalize(Pe.getPath(e.node))) return -54; + throw e + } + return q[t >> 2] = n.dev, q[t + 4 >> 2] = 0, q[t + 8 >> 2] = n.ino, q[t + 12 >> 2] = n.mode, q[t + 16 >> 2] = n.nlink, q[t + 20 >> 2] = n.uid, q[t + 24 >> 2] = n.gid, q[t + 28 >> 2] = n.rdev, q[t + 32 >> 2] = 0, _e = [n.size >>> 0, (he = n.size, +ae(he) >= 1 ? he > 0 ? (0 | se(+ue(he / 4294967296), 4294967295)) >>> 0 : ~~+oe((he - +(~~he >>> 0)) / 4294967296) >>> 0 : 0)], q[t + 40 >> 2] = _e[0], q[t + 44 >> 2] = _e[1], q[t + 48 >> 2] = 4096, q[t + 52 >> 2] = n.blocks, q[t + 56 >> 2] = n.atime.getTime() / 1e3 | 0, q[t + 60 >> 2] = 0, q[t + 64 >> 2] = n.mtime.getTime() / 1e3 | 0, q[t + 68 >> 2] = 0, q[t + 72 >> 2] = n.ctime.getTime() / 1e3 | 0, q[t + 76 >> 2] = 0, _e = [n.ino >>> 0, (he = n.ino, +ae(he) >= 1 ? he > 0 ? (0 | se(+ue(he / 4294967296), 4294967295)) >>> 0 : ~~+oe((he - +(~~he >>> 0)) / 4294967296) >>> 0 : 0)], q[t + 80 >> 2] = _e[0], q[t + 84 >> 2] = _e[1], 0 + }, + doMsync: function(e, r, t, n, i) { + var a = G.slice(e, e + t); + Pe.msync(r, a, i, t, n) + }, + doMkdir: function(e, r) { + return "/" === (e = Ce.normalize(e))[e.length - 1] && (e = e.substr(0, e.length - 1)), Pe.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 -28 + } + return Pe.mknod(e, r, t), 0 + }, + doReadlink: function(e, r, t) { + if (t <= 0) return -28; + var n = Pe.readlink(e), + i = Math.min(t, R(n)), + a = O[r + i]; + return B(n, r, t + 1), O[r + i] = a, i + }, + doAccess: function(e, r) { + if (-8 & r) return -28; + var t; + if (!(t = Pe.lookupPath(e, { + follow: !0 + }).node)) return -44; + var n = ""; + return 4 & r && (n += "r"), 2 & r && (n += "w"), 1 & r && (n += "x"), n && Pe.nodePermissions(t, n) ? -2 : 0 + }, + doDup: function(e, r, t) { + var n = Pe.getStream(t); + return n && Pe.close(n), Pe.open(e, r, 0, t, t).fd + }, + doReadv: function(e, r, t, n) { + for (var i = 0, a = 0; a < t; a++) { + var o = q[r + 8 * a >> 2], + u = q[r + (8 * a + 4) >> 2], + s = Pe.read(e, O, o, u, n); + if (s < 0) return -1; + if (i += s, s < u) break + } + return i + }, + doWritev: function(e, r, t, n) { + for (var i = 0, a = 0; a < t; a++) { + var o = q[r + 8 * a >> 2], + u = q[r + (8 * a + 4) >> 2], + s = Pe.write(e, O, o, u, n); + if (s < 0) return -1; + i += s + } + return i + }, + varargs: void 0, + get: function() { + return Te.varargs += 4, q[Te.varargs - 4 >> 2] + }, + getStr: function(e) { + return L(e) + }, + getStreamFromFD: function(e) { + var r = Pe.getStream(e); + if (!r) throw new Pe.ErrnoError(8); + return r + }, + get64: function(e, r) { + return e + } + }; + + function Le(e, r) { + if (Be.mainLoop.timingMode = e, Be.mainLoop.timingValue = r, !Be.mainLoop.func) return 1; + if (0 == e) Be.mainLoop.scheduler = function() { + var e = 0 | Math.max(0, Be.mainLoop.tickStartTime + r - ke()); + setTimeout(Be.mainLoop.runner, e) + }, Be.mainLoop.method = "timeout"; + else if (1 == e) Be.mainLoop.scheduler = function() { + Be.requestAnimationFrame(Be.mainLoop.runner) + }, Be.mainLoop.method = "rAF"; + else if (2 == e) { + if ("undefined" == typeof setImmediate) { + var t = [], + n = "setimmediate"; + addEventListener("message", (function(e) { + e.data !== n && e.data.target !== n || (e.stopPropagation(), t.shift()()) + }), !0), setImmediate = function(e) { + t.push(e), postMessage(n, "*") + } + } + Be.mainLoop.scheduler = function() { + setImmediate(Be.mainLoop.runner) + }, Be.mainLoop.method = "immediate" + } + return 0 + } + + function Ie(e, t, n, i, a) { + var o; + y = !0, D(!Be.mainLoop.func, "emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."), Be.mainLoop.func = e, Be.mainLoop.arg = i, o = void 0 !== i ? function() { + r.dynCall_vi(e, i) + } : function() { + r.dynCall_v(e) + }; + var u = Be.mainLoop.currentlyRunningMainloop; + if (Be.mainLoop.runner = function() { + if (!S) + if (Be.mainLoop.queue.length > 0) { + var e = Date.now(), + r = Be.mainLoop.queue.shift(); + if (r.func(r.arg), Be.mainLoop.remainingBlockers) { + var t = Be.mainLoop.remainingBlockers, + n = t % 1 == 0 ? t - 1 : Math.floor(t); + r.counted ? Be.mainLoop.remainingBlockers = n : (n += .5, Be.mainLoop.remainingBlockers = (8 * t + n) / 9) + } + if (console.log('main loop blocker "' + r.name + '" took ' + (Date.now() - e) + " ms"), Be.mainLoop.updateStatus(), u < Be.mainLoop.currentlyRunningMainloop) return; + setTimeout(Be.mainLoop.runner, 0) + } else u < Be.mainLoop.currentlyRunningMainloop || (Be.mainLoop.currentFrameNumber = Be.mainLoop.currentFrameNumber + 1 | 0, 1 == Be.mainLoop.timingMode && Be.mainLoop.timingValue > 1 && Be.mainLoop.currentFrameNumber % Be.mainLoop.timingValue != 0 ? Be.mainLoop.scheduler() : (0 == Be.mainLoop.timingMode && (Be.mainLoop.tickStartTime = ke()), Be.mainLoop.runIter(o), u < Be.mainLoop.currentlyRunningMainloop || ("object" == typeof SDL && SDL.audio && SDL.audio.queueNewAudioData && SDL.audio.queueNewAudioData(), Be.mainLoop.scheduler()))) + }, a || (t && t > 0 ? Le(0, 1e3 / t) : Le(1, 1), Be.mainLoop.scheduler()), n) throw "unwind" + } + ke = function() { + return performance.now() + }; + var Be = { + mainLoop: { + scheduler: null, + method: "", + currentlyRunningMainloop: 0, + func: null, + arg: 0, + timingMode: 0, + timingValue: 0, + currentFrameNumber: 0, + queue: [], + pause: function() { + Be.mainLoop.scheduler = null, Be.mainLoop.currentlyRunningMainloop++ + }, + resume: function() { + Be.mainLoop.currentlyRunningMainloop++; + var e = Be.mainLoop.timingMode, + r = Be.mainLoop.timingValue, + t = Be.mainLoop.func; + Be.mainLoop.func = null, Ie(t, 0, !1, Be.mainLoop.arg, !0), Le(e, r), Be.mainLoop.scheduler() + }, + updateStatus: function() { + if (r.setStatus) { + var e = r.statusMessage || "Please wait...", + t = Be.mainLoop.remainingBlockers, + n = Be.mainLoop.expectedBlockers; + t ? t < n ? r.setStatus(e + " (" + (n - t) + "/" + n + ")") : r.setStatus(e) : r.setStatus("") + } + }, + runIter: function(e) { + if (!S) { + if (r.preMainLoop) + if (!1 === r.preMainLoop()) return; + try { + e() + } catch (e) { + if (e instanceof xt) return; + throw e && "object" == typeof e && e.stack && p("exception thrown: " + [e, e.stack]), e + } + r.postMainLoop && r.postMainLoop() + } + } + }, + isFullscreen: !1, + pointerLock: !1, + moduleContextCreatedCallbacks: [], + workers: [], + init: function() { + if (r.preloadPlugins || (r.preloadPlugins = []), !Be.initted) { + Be.initted = !0; + try { + new Blob, Be.hasBlobConstructor = !0 + } catch (e) { + Be.hasBlobConstructor = !1, console.log("warning: no blob constructor, cannot create blobs with mimetypes") + } + Be.BlobBuilder = "undefined" != typeof MozBlobBuilder ? MozBlobBuilder : "undefined" != typeof WebKitBlobBuilder ? WebKitBlobBuilder : Be.hasBlobConstructor ? null : console.log("warning: no BlobBuilder"), Be.URLObject = "undefined" != typeof window ? window.URL ? window.URL : window.webkitURL : void 0, r.noImageDecoding || void 0 !== Be.URLObject || (console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."), r.noImageDecoding = !0); + var e = { + canHandle: function(e) { + return !r.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(e) + }, + handle: function(e, t, n, i) { + var a = null; + if (Be.hasBlobConstructor) try { + (a = new Blob([e], { + type: Be.getMimetype(t) + })).size !== e.length && (a = new Blob([new Uint8Array(e).buffer], { + type: Be.getMimetype(t) + })) + } catch (e) { + h("Blob constructor present but fails: " + e + "; falling back to blob builder") + } + if (!a) { + var o = new Be.BlobBuilder; + o.append(new Uint8Array(e).buffer), a = o.getBlob() + } + var u = Be.URLObject.createObjectURL(a), + s = new Image; + s.onload = function() { + D(s.complete, "Image " + t + " could not be decoded"); + var i = document.createElement("canvas"); + i.width = s.width, i.height = s.height, i.getContext("2d").drawImage(s, 0, 0), r.preloadedImages[t] = i, Be.URLObject.revokeObjectURL(u), n && n(e) + }, s.onerror = function(e) { + console.log("Image " + u + " could not be decoded"), i && i() + }, s.src = u + } + }; + r.preloadPlugins.push(e); + var t = { + canHandle: function(e) { + return !r.noAudioDecoding && e.substr(-4) in { + ".ogg": 1, + ".wav": 1, + ".mp3": 1 + } + }, + handle: function(e, t, n, i) { + var a = !1; + + function o(i) { + a || (a = !0, r.preloadedAudios[t] = i, n && n(e)) + } + + function u() { + a || (a = !0, r.preloadedAudios[t] = new Audio, i && i()) + } + if (!Be.hasBlobConstructor) return u(); + try { + var s = new Blob([e], { + type: Be.getMimetype(t) + }) + } catch (e) { + return u() + } + var c = Be.URLObject.createObjectURL(s), + l = new Audio; + l.addEventListener("canplaythrough", (function() { + o(l) + }), !1), l.onerror = function(r) { + a || (console.log("warning: browser could not fully decode audio " + t + ", trying slower base64 approach"), l.src = "data:audio/x-" + t.substr(-3) + ";base64," + function(e) { + for (var r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", t = "", n = 0, i = 0, a = 0; a < e.length; a++) + for (n = n << 8 | e[a], i += 8; i >= 6;) { + var o = n >> i - 6 & 63; + i -= 6, t += r[o] + } + return 2 == i ? (t += r[(3 & n) << 4], t += "==") : 4 == i && (t += r[(15 & n) << 2], t += "="), t + }(e), o(l)) + }, l.src = c, Be.safeSetTimeout((function() { + o(l) + }), 1e4) + } + }; + r.preloadPlugins.push(t); + var n = r.canvas; + n && (n.requestPointerLock = n.requestPointerLock || n.mozRequestPointerLock || n.webkitRequestPointerLock || n.msRequestPointerLock || function() {}, n.exitPointerLock = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock || document.msExitPointerLock || function() {}, n.exitPointerLock = n.exitPointerLock.bind(document), document.addEventListener("pointerlockchange", i, !1), document.addEventListener("mozpointerlockchange", i, !1), document.addEventListener("webkitpointerlockchange", i, !1), document.addEventListener("mspointerlockchange", i, !1), r.elementPointerLock && n.addEventListener("click", (function(e) { + !Be.pointerLock && r.canvas.requestPointerLock && (r.canvas.requestPointerLock(), e.preventDefault()) + }), !1)) + } + + function i() { + Be.pointerLock = document.pointerLockElement === r.canvas || document.mozPointerLockElement === r.canvas || document.webkitPointerLockElement === r.canvas || document.msPointerLockElement === r.canvas + } + }, + createContext: function(e, t, n, i) { + if (t && r.ctx && e == r.canvas) return r.ctx; + var a, o; + if (t) { + var u = { + antialias: !1, + alpha: !1, + majorVersion: 2 + }; + if (i) + for (var s in i) u[s] = i[s]; + void 0 !== Ue && (o = Ue.createContext(e, u)) && (a = Ue.getContext(o).GLctx) + } else a = e.getContext("2d"); + return a ? (n && (t || D(void 0 === Or, "cannot set in module if GLctx is used, but we are a non-GL context that would replace it"), r.ctx = a, t && Ue.makeContextCurrent(o), r.useWebGL = t, Be.moduleContextCreatedCallbacks.forEach((function(e) { + e() + })), Be.init()), a) : null + }, + destroyContext: function(e, r, t) {}, + fullscreenHandlersInstalled: !1, + lockPointer: void 0, + resizeCanvas: void 0, + requestFullscreen: function(e, t) { + Be.lockPointer = e, Be.resizeCanvas = t, void 0 === Be.lockPointer && (Be.lockPointer = !0), void 0 === Be.resizeCanvas && (Be.resizeCanvas = !1); + var n = r.canvas; + + function i() { + Be.isFullscreen = !1; + var e = n.parentNode; + (document.fullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.webkitFullscreenElement || document.webkitCurrentFullScreenElement) === e ? (n.exitFullscreen = Be.exitFullscreen, Be.lockPointer && n.requestPointerLock(), Be.isFullscreen = !0, Be.resizeCanvas ? Be.setFullscreenCanvasSize() : Be.updateCanvasDimensions(n)) : (e.parentNode.insertBefore(n, e), e.parentNode.removeChild(e), Be.resizeCanvas ? Be.setWindowedCanvasSize() : Be.updateCanvasDimensions(n)), r.onFullScreen && r.onFullScreen(Be.isFullscreen), r.onFullscreen && r.onFullscreen(Be.isFullscreen) + } + Be.fullscreenHandlersInstalled || (Be.fullscreenHandlersInstalled = !0, document.addEventListener("fullscreenchange", i, !1), document.addEventListener("mozfullscreenchange", i, !1), document.addEventListener("webkitfullscreenchange", i, !1), document.addEventListener("MSFullscreenChange", i, !1)); + var a = document.createElement("div"); + n.parentNode.insertBefore(a, n), a.appendChild(n), a.requestFullscreen = a.requestFullscreen || a.mozRequestFullScreen || a.msRequestFullscreen || (a.webkitRequestFullscreen ? function() { + a.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT) + } : null) || (a.webkitRequestFullScreen ? function() { + a.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT) + } : null), a.requestFullscreen() + }, + exitFullscreen: function() { + return !!Be.isFullscreen && ((document.exitFullscreen || document.cancelFullScreen || document.mozCancelFullScreen || document.msExitFullscreen || document.webkitCancelFullScreen || function() {}).apply(document, []), !0) + }, + nextRAF: 0, + fakeRequestAnimationFrame: function(e) { + var r = Date.now(); + if (0 === Be.nextRAF) Be.nextRAF = r + 1e3 / 60; + else + for (; r + 2 >= Be.nextRAF;) Be.nextRAF += 1e3 / 60; + var t = Math.max(Be.nextRAF - r, 0); + setTimeout(e, t) + }, + requestAnimationFrame: function(e) { + "function" != typeof requestAnimationFrame ? (0, Be.fakeRequestAnimationFrame)(e) : requestAnimationFrame(e) + }, + safeCallback: function(e) { + return function() { + if (!S) return e.apply(null, arguments) + } + }, + allowAsyncCallbacks: !0, + queuedAsyncCallbacks: [], + pauseAsyncCallbacks: function() { + Be.allowAsyncCallbacks = !1 + }, + resumeAsyncCallbacks: function() { + if (Be.allowAsyncCallbacks = !0, Be.queuedAsyncCallbacks.length > 0) { + var e = Be.queuedAsyncCallbacks; + Be.queuedAsyncCallbacks = [], e.forEach((function(e) { + e() + })) + } + }, + safeRequestAnimationFrame: function(e) { + return Be.requestAnimationFrame((function() { + S || (Be.allowAsyncCallbacks ? e() : Be.queuedAsyncCallbacks.push(e)) + })) + }, + safeSetTimeout: function(e, r) { + return y = !0, setTimeout((function() { + S || (Be.allowAsyncCallbacks ? e() : Be.queuedAsyncCallbacks.push(e)) + }), r) + }, + safeSetInterval: function(e, r) { + return y = !0, setInterval((function() { + S || Be.allowAsyncCallbacks && e() + }), r) + }, + getMimetype: function(e) { + return { + jpg: "image/jpeg", + jpeg: "image/jpeg", + png: "image/png", + bmp: "image/bmp", + ogg: "audio/ogg", + wav: "audio/wav", + mp3: "audio/mpeg" + } [e.substr(e.lastIndexOf(".") + 1)] + }, + getUserMedia: function(e) { + window.getUserMedia || (window.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia), window.getUserMedia(e) + }, + getMovementX: function(e) { + return e.movementX || e.mozMovementX || e.webkitMovementX || 0 + }, + getMovementY: function(e) { + return e.movementY || e.mozMovementY || e.webkitMovementY || 0 + }, + getMouseWheelDelta: function(e) { + var r = 0; + switch (e.type) { + case "DOMMouseScroll": + r = e.detail / 3; + break; + case "mousewheel": + r = e.wheelDelta / 120; + break; + case "wheel": + switch (r = e.deltaY, e.deltaMode) { + case 0: + r /= 100; + break; + case 1: + r /= 3; + break; + case 2: + r *= 80; + break; + default: + throw "unrecognized mouse wheel delta mode: " + e.deltaMode + } + break; + default: + throw "unrecognized mouse wheel event: " + e.type + } + return r + }, + mouseX: 0, + mouseY: 0, + mouseMovementX: 0, + mouseMovementY: 0, + touches: {}, + lastTouches: {}, + calculateMouseEvent: function(e) { + if (Be.pointerLock) "mousemove" != e.type && "mozMovementX" in e ? Be.mouseMovementX = Be.mouseMovementY = 0 : (Be.mouseMovementX = Be.getMovementX(e), Be.mouseMovementY = Be.getMovementY(e)), "undefined" != typeof SDL ? (Be.mouseX = SDL.mouseX + Be.mouseMovementX, Be.mouseY = SDL.mouseY + Be.mouseMovementY) : (Be.mouseX += Be.mouseMovementX, Be.mouseY += Be.mouseMovementY); + else { + var t = r.canvas.getBoundingClientRect(), + n = r.canvas.width, + i = r.canvas.height, + a = void 0 !== window.scrollX ? window.scrollX : window.pageXOffset, + o = void 0 !== window.scrollY ? window.scrollY : window.pageYOffset; + if ("touchstart" === e.type || "touchend" === e.type || "touchmove" === e.type) { + var u = e.touch; + if (void 0 === u) return; + var s = u.pageX - (a + t.left), + c = u.pageY - (o + t.top), + l = { + x: s *= n / t.width, + y: c *= i / t.height + }; + if ("touchstart" === e.type) Be.lastTouches[u.identifier] = l, Be.touches[u.identifier] = l; + else if ("touchend" === e.type || "touchmove" === e.type) { + var f = Be.touches[u.identifier]; + f || (f = l), Be.lastTouches[u.identifier] = f, Be.touches[u.identifier] = l + } + return + } + var d = e.pageX - (a + t.left), + m = e.pageY - (o + t.top); + d *= n / t.width, m *= i / t.height, Be.mouseMovementX = d - Be.mouseX, Be.mouseMovementY = m - Be.mouseY, Be.mouseX = d, Be.mouseY = m + } + }, + asyncLoad: function(e, r, t, n) { + var i = n ? "" : "al " + e; + o(e, (function(t) { + D(t, 'Loading data file "' + e + '" failed (no arrayBuffer).'), r(new Uint8Array(t)), i && me() + }), (function(r) { + if (!t) throw 'Loading data file "' + e + '" failed.'; + t() + })), i && de() + }, + resizeListeners: [], + updateResizeListeners: function() { + var e = r.canvas; + Be.resizeListeners.forEach((function(r) { + r(e.width, e.height) + })) + }, + setCanvasSize: function(e, t, n) { + var i = r.canvas; + Be.updateCanvasDimensions(i, e, t), n || Be.updateResizeListeners() + }, + windowedWidth: 0, + windowedHeight: 0, + setFullscreenCanvasSize: function() { + if ("undefined" != typeof SDL) { + var e = Q[SDL.screen >> 2]; + e |= 8388608, q[SDL.screen >> 2] = e + } + Be.updateCanvasDimensions(r.canvas), Be.updateResizeListeners() + }, + setWindowedCanvasSize: function() { + if ("undefined" != typeof SDL) { + var e = Q[SDL.screen >> 2]; + e &= -8388609, q[SDL.screen >> 2] = e + } + Be.updateCanvasDimensions(r.canvas), Be.updateResizeListeners() + }, + updateCanvasDimensions: function(e, t, n) { + t && n ? (e.widthNative = t, e.heightNative = n) : (t = e.widthNative, n = e.heightNative); + var i = t, + a = n; + if (r.forcedAspectRatio && r.forcedAspectRatio > 0 && (i / a < r.forcedAspectRatio ? i = Math.round(a * r.forcedAspectRatio) : a = Math.round(i / r.forcedAspectRatio)), (document.fullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.webkitFullscreenElement || document.webkitCurrentFullScreenElement) === e.parentNode && "undefined" != typeof screen) { + var o = Math.min(screen.width / i, screen.height / a); + i = Math.round(i * o), a = Math.round(a * o) + } + Be.resizeCanvas ? (e.width != i && (e.width = i), e.height != a && (e.height = a), void 0 !== e.style && (e.style.removeProperty("width"), e.style.removeProperty("height"))) : (e.width != t && (e.width = t), e.height != n && (e.height = n), void 0 !== e.style && (i != t || a != n ? (e.style.setProperty("width", i + "px", "important"), e.style.setProperty("height", a + "px", "important")) : (e.style.removeProperty("width"), e.style.removeProperty("height")))) + }, + wgetRequests: {}, + nextWgetRequestHandle: 0, + getNextWgetRequestHandle: function() { + var e = Be.nextWgetRequestHandle; + return Be.nextWgetRequestHandle++, e + } + }, + Re = { + QUEUE_INTERVAL: 25, + QUEUE_LOOKAHEAD: .1, + DEVICE_NAME: "Emscripten OpenAL", + CAPTURE_DEVICE_NAME: "Emscripten OpenAL capture", + ALC_EXTENSIONS: { + ALC_SOFT_pause_device: !0, + ALC_SOFT_HRTF: !0 + }, + AL_EXTENSIONS: { + AL_EXT_float32: !0, + AL_SOFT_loop_points: !0, + AL_SOFT_source_length: !0, + AL_EXT_source_distance_model: !0, + AL_SOFT_source_spatialize: !0 + }, + _alcErr: 0, + alcErr: 0, + deviceRefCounts: {}, + alcStringCache: {}, + paused: !1, + stringCache: {}, + contexts: {}, + currentCtx: null, + buffers: { + 0: { + id: 0, + refCount: 0, + audioBuf: null, + frequency: 0, + bytesPerSample: 2, + channels: 1, + length: 0 + } + }, + paramArray: [], + _nextId: 1, + newId: function() { + return Re.freeIds.length > 0 ? Re.freeIds.pop() : Re._nextId++ + }, + freeIds: [], + scheduleContextAudio: function(e) { + if (1 !== Be.mainLoop.timingMode || "visible" == document.visibilityState) + for (var r in e.sources) Re.scheduleSourceAudio(e.sources[r]) + }, + scheduleSourceAudio: function(e, r) { + if ((1 !== Be.mainLoop.timingMode || "visible" == document.visibilityState) && 4114 === e.state) { + for (var t = Re.updateSourceTime(e), n = e.bufStartTime, i = e.bufOffset, a = e.bufsProcessed, o = 0; o < e.audioQueue.length; o++) { + n = (l = e.audioQueue[o])._startTime + l._duration, i = 0, a += l._skipCount + 1 + } + r || (r = Re.QUEUE_LOOKAHEAD); + for (var u = t + r, s = 0; n < u;) { + if (a >= e.bufQueue.length) { + if (!e.looping) break; + a %= e.bufQueue.length + } + var c = e.bufQueue[a % e.bufQueue.length]; + if (0 === c.length) { + if (++s === e.bufQueue.length) break + } else { + var l; + (l = e.context.audioCtx.createBufferSource()).buffer = c.audioBuf, l.playbackRate.value = e.playbackRate, (c.audioBuf._loopStart || c.audioBuf._loopEnd) && (l.loopStart = c.audioBuf._loopStart, l.loopEnd = c.audioBuf._loopEnd); + var f = 0; + 4136 === e.type && e.looping ? (f = Number.POSITIVE_INFINITY, l.loop = !0, c.audioBuf._loopStart && (l.loopStart = c.audioBuf._loopStart), c.audioBuf._loopEnd && (l.loopEnd = c.audioBuf._loopEnd)) : f = (c.audioBuf.duration - i) / e.playbackRate, l._startOffset = i, l._duration = f, l._skipCount = s, s = 0, l.connect(e.gain), void 0 !== l.start ? (n = Math.max(n, e.context.audioCtx.currentTime), l.start(n, i)) : void 0 !== l.noteOn && (n = Math.max(n, e.context.audioCtx.currentTime), l.noteOn(n)), l._startTime = n, e.audioQueue.push(l), n += f + } + i = 0, a++ + } + } + }, + updateSourceTime: function(e) { + var r = e.context.audioCtx.currentTime; + if (4114 !== e.state) return r; + isFinite(e.bufStartTime) || (e.bufStartTime = r - e.bufOffset / e.playbackRate, e.bufOffset = 0); + for (var t = 0; e.audioQueue.length;) { + var n = e.audioQueue[0]; + if (e.bufsProcessed += n._skipCount, r < (t = n._startTime + n._duration)) break; + e.audioQueue.shift(), e.bufStartTime = t, e.bufOffset = 0, e.bufsProcessed++ + } + if (e.bufsProcessed >= e.bufQueue.length && !e.looping) Re.setSourceState(e, 4116); + else if (4136 === e.type && e.looping) { + if (0 === (c = e.bufQueue[0]).length) e.bufOffset = 0; + else { + var i = (r - e.bufStartTime) * e.playbackRate, + a = c.audioBuf._loopStart || 0, + o = c.audioBuf._loopEnd || c.audioBuf.duration; + o <= a && (o = c.audioBuf.duration), e.bufOffset = i < o ? i : a + (i - a) % (o - a) + } + } else if (e.audioQueue[0]) e.bufOffset = (r - e.audioQueue[0]._startTime) * e.playbackRate; + else { + if (4136 !== e.type && e.looping) { + var u = Re.sourceDuration(e) / e.playbackRate; + u > 0 && (e.bufStartTime += Math.floor((r - e.bufStartTime) / u) * u) + } + for (var s = 0; s < e.bufQueue.length; s++) { + if (e.bufsProcessed >= e.bufQueue.length) { + if (!e.looping) { + Re.setSourceState(e, 4116); + break + } + e.bufsProcessed %= e.bufQueue.length + } + var c; + if ((c = e.bufQueue[e.bufsProcessed]).length > 0) { + if (r < (t = e.bufStartTime + c.audioBuf.duration / e.playbackRate)) { + e.bufOffset = (r - e.bufStartTime) * e.playbackRate; + break + } + e.bufStartTime = t + } + e.bufOffset = 0, e.bufsProcessed++ + } + } + return r + }, + cancelPendingSourceAudio: function(e) { + Re.updateSourceTime(e); + for (var r = 1; r < e.audioQueue.length; r++) { + e.audioQueue[r].stop() + } + e.audioQueue.length > 1 && (e.audioQueue.length = 1) + }, + stopSourceAudio: function(e) { + for (var r = 0; r < e.audioQueue.length; r++) e.audioQueue[r].stop(); + e.audioQueue.length = 0 + }, + setSourceState: function(e, r) { + 4114 === r ? (4114 !== e.state && 4116 != e.state || (e.bufsProcessed = 0, e.bufOffset = 0), Re.stopSourceAudio(e), e.state = 4114, e.bufStartTime = Number.NEGATIVE_INFINITY, Re.scheduleSourceAudio(e)) : 4115 === r ? 4114 === e.state && (Re.updateSourceTime(e), Re.stopSourceAudio(e), e.state = 4115) : 4116 === r ? 4113 !== e.state && (e.state = 4116, e.bufsProcessed = e.bufQueue.length, e.bufStartTime = Number.NEGATIVE_INFINITY, e.bufOffset = 0, Re.stopSourceAudio(e)) : 4113 === r && 4113 !== e.state && (e.state = 4113, e.bufsProcessed = 0, e.bufStartTime = Number.NEGATIVE_INFINITY, e.bufOffset = 0, Re.stopSourceAudio(e)) + }, + initSourcePanner: function(e) { + if (4144 !== e.type) { + for (var r = Re.buffers[0], t = 0; t < e.bufQueue.length; t++) + if (0 !== e.bufQueue[t].id) { + r = e.bufQueue[t]; + break + } if (1 === e.spatialize || 2 === e.spatialize && 1 === r.channels) { + if (e.panner) return; + e.panner = e.context.audioCtx.createPanner(), Re.updateSourceGlobal(e), Re.updateSourceSpace(e), e.panner.connect(e.context.gain), e.gain.disconnect(), e.gain.connect(e.panner) + } else { + if (!e.panner) return; + e.panner.disconnect(), e.gain.disconnect(), e.gain.connect(e.context.gain), e.panner = null + } + } + }, + updateContextGlobal: function(e) { + for (var r in e.sources) Re.updateSourceGlobal(e.sources[r]) + }, + updateSourceGlobal: function(e) { + var r = e.panner; + if (r) switch (r.refDistance = e.refDistance, r.maxDistance = e.maxDistance, r.rolloffFactor = e.rolloffFactor, r.panningModel = e.context.hrtf ? "HRTF" : "equalpower", e.context.sourceDistanceModel ? e.distanceModel : e.context.distanceModel) { + case 0: + r.distanceModel = "inverse", r.refDistance = 340282e33; + break; + case 53249: + case 53250: + r.distanceModel = "inverse"; + break; + case 53251: + case 53252: + r.distanceModel = "linear"; + break; + case 53253: + case 53254: + r.distanceModel = "exponential" + } + }, + updateListenerSpace: function(e) { + var r = e.audioCtx.listener; + for (var t in r.positionX ? (r.positionX.value = e.listener.position[0], r.positionY.value = e.listener.position[1], r.positionZ.value = e.listener.position[2]) : r.setPosition(e.listener.position[0], e.listener.position[1], e.listener.position[2]), r.forwardX ? (r.forwardX.value = e.listener.direction[0], r.forwardY.value = e.listener.direction[1], r.forwardZ.value = e.listener.direction[2], r.upX.value = e.listener.up[0], r.upY.value = e.listener.up[1], r.upZ.value = e.listener.up[2]) : r.setOrientation(e.listener.direction[0], e.listener.direction[1], e.listener.direction[2], e.listener.up[0], e.listener.up[1], e.listener.up[2]), e.sources) Re.updateSourceSpace(e.sources[t]) + }, + updateSourceSpace: function(e) { + if (e.panner) { + var r = e.panner, + t = e.position[0], + n = e.position[1], + i = e.position[2], + a = e.direction[0], + o = e.direction[1], + u = e.direction[2], + s = e.context.listener, + c = s.position[0], + l = s.position[1], + f = s.position[2]; + if (e.relative) { + var d = -s.direction[0], + m = -s.direction[1], + p = -s.direction[2], + v = s.up[0], + g = s.up[1], + h = s.up[2], + _ = function(e, r, t) { + var n = Math.sqrt(e * e + r * r + t * t); + return n < Number.EPSILON ? 0 : 1 / n + }, + b = _(d, m, p); + d *= b, m *= b, p *= b; + var y = (g *= b = _(v, g, h)) * p - (h *= b) * m, + w = h * d - (v *= b) * p, + E = v * m - g * d, + x = a, + k = o, + C = u; + a = x * (y *= b = _(y, w, E)) + k * (v = m * (E *= b) - p * (w *= b)) + C * d, o = x * w + k * (g = p * y - d * E) + C * m, u = x * E + k * (h = d * w - m * y) + C * p, t = (x = t) * y + (k = n) * v + (C = i) * d, n = x * w + k * g + C * m, i = x * E + k * h + C * p, t += c, n += l, i += f + } + r.positionX ? (r.positionX.value = t, r.positionY.value = n, r.positionZ.value = i) : r.setPosition(t, n, i), r.orientationX ? (r.orientationX.value = a, r.orientationY.value = o, r.orientationZ.value = u) : r.setOrientation(a, o, u); + var S = e.dopplerShift, + D = e.velocity[0], + F = e.velocity[1], + A = e.velocity[2], + P = s.velocity[0], + T = s.velocity[1], + L = s.velocity[2]; + if (t === c && n === l && i === f || D === P && F === T && A === L) e.dopplerShift = 1; + else { + var I = e.context.speedOfSound, + B = e.context.dopplerFactor, + R = c - t, + M = l - n, + N = f - i, + U = Math.sqrt(R * R + M * M + N * N), + O = (R * P + M * T + N * L) / U, + G = (R * D + M * F + N * A) / U; + O = Math.min(O, I / B), G = Math.min(G, I / B), e.dopplerShift = (I - B * O) / (I - B * G) + } + e.dopplerShift !== S && Re.updateSourceRate(e) + } + }, + updateSourceRate: function(e) { + if (4114 === e.state) { + Re.cancelPendingSourceAudio(e); + var r, t = e.audioQueue[0]; + if (!t) return; + r = 4136 === e.type && e.looping ? Number.POSITIVE_INFINITY : (t.buffer.duration - t._startOffset) / e.playbackRate, t._duration = r, t.playbackRate.value = e.playbackRate, Re.scheduleSourceAudio(e) + } + }, + sourceDuration: function(e) { + for (var r = 0, t = 0; t < e.bufQueue.length; t++) { + var n = e.bufQueue[t].audioBuf; + r += n ? n.duration : 0 + } + return r + }, + sourceTell: function(e) { + Re.updateSourceTime(e); + for (var r = 0, t = 0; t < e.bufsProcessed; t++) r += e.bufQueue[t].audioBuf.duration; + return r += e.bufOffset + }, + sourceSeek: function(e, r) { + var t = 4114 == e.state; + if (t && Re.setSourceState(e, 4113), null !== e.bufQueue[e.bufsProcessed].audioBuf) { + for (e.bufsProcessed = 0; r > e.bufQueue[e.bufsProcessed].audioBuf.duration;) r -= e.bufQueue[e.bufsProcessed].audiobuf.duration, e.bufsProcessed++; + e.bufOffset = r + } + t && Re.setSourceState(e, 4114) + }, + getGlobalParam: function(e, r) { + if (!Re.currentCtx) return null; + switch (r) { + case 49152: + return Re.currentCtx.dopplerFactor; + case 49155: + return Re.currentCtx.speedOfSound; + case 53248: + return Re.currentCtx.distanceModel; + default: + return Re.currentCtx.err = 40962, null + } + }, + setGlobalParam: function(e, r, t) { + if (Re.currentCtx) switch (r) { + case 49152: + if (!Number.isFinite(t) || t < 0) return void(Re.currentCtx.err = 40963); + Re.currentCtx.dopplerFactor = t, Re.updateListenerSpace(Re.currentCtx); + break; + case 49155: + if (!Number.isFinite(t) || t <= 0) return void(Re.currentCtx.err = 40963); + Re.currentCtx.speedOfSound = t, Re.updateListenerSpace(Re.currentCtx); + break; + case 53248: + switch (t) { + case 0: + case 53249: + case 53250: + case 53251: + case 53252: + case 53253: + case 53254: + Re.currentCtx.distanceModel = t, Re.updateContextGlobal(Re.currentCtx); + break; + default: + return void(Re.currentCtx.err = 40963) + } + break; + default: + return void(Re.currentCtx.err = 40962) + } + }, + getListenerParam: function(e, r) { + if (!Re.currentCtx) return null; + switch (r) { + case 4100: + return Re.currentCtx.listener.position; + case 4102: + return Re.currentCtx.listener.velocity; + case 4111: + return Re.currentCtx.listener.direction.concat(Re.currentCtx.listener.up); + case 4106: + return Re.currentCtx.gain.gain.value; + default: + return Re.currentCtx.err = 40962, null + } + }, + setListenerParam: function(e, r, t) { + if (Re.currentCtx) + if (null !== t) { + var n = Re.currentCtx.listener; + switch (r) { + case 4100: + if (!Number.isFinite(t[0]) || !Number.isFinite(t[1]) || !Number.isFinite(t[2])) return void(Re.currentCtx.err = 40963); + n.position[0] = t[0], n.position[1] = t[1], n.position[2] = t[2], Re.updateListenerSpace(Re.currentCtx); + break; + case 4102: + if (!Number.isFinite(t[0]) || !Number.isFinite(t[1]) || !Number.isFinite(t[2])) return void(Re.currentCtx.err = 40963); + n.velocity[0] = t[0], n.velocity[1] = t[1], n.velocity[2] = t[2], Re.updateListenerSpace(Re.currentCtx); + break; + case 4106: + if (!Number.isFinite(t) || t < 0) return void(Re.currentCtx.err = 40963); + Re.currentCtx.gain.gain.value = t; + break; + case 4111: + if (!(Number.isFinite(t[0]) && Number.isFinite(t[1]) && Number.isFinite(t[2]) && Number.isFinite(t[3]) && Number.isFinite(t[4]) && Number.isFinite(t[5]))) return void(Re.currentCtx.err = 40963); + n.direction[0] = t[0], n.direction[1] = t[1], n.direction[2] = t[2], n.up[0] = t[3], n.up[1] = t[4], n.up[2] = t[5], Re.updateListenerSpace(Re.currentCtx); + break; + default: + return void(Re.currentCtx.err = 40962) + } + } else Re.currentCtx.err = 40962 + }, + getBufferParam: function(e, r, t) { + if (Re.currentCtx) { + var n = Re.buffers[r]; + if (n && 0 !== r) switch (t) { + case 8193: + return n.frequency; + case 8194: + return 8 * n.bytesPerSample; + case 8195: + return n.channels; + case 8196: + return n.length * n.bytesPerSample * n.channels; + case 8213: + return 0 === n.length ? [0, 0] : [(n.audioBuf._loopStart || 0) * n.frequency, (n.audioBuf._loopEnd || n.length) * n.frequency]; + default: + return Re.currentCtx.err = 40962, null + } else Re.currentCtx.err = 40961 + } + }, + setBufferParam: function(e, r, t, n) { + if (Re.currentCtx) { + var i = Re.buffers[r]; + if (i && 0 !== r) + if (null !== n) switch (t) { + case 8196: + if (0 !== n) return void(Re.currentCtx.err = 40963); + break; + case 8213: + if (n[0] < 0 || n[0] > i.length || n[1] < 0 || n[1] > i.Length || n[0] >= n[1]) return void(Re.currentCtx.err = 40963); + if (i.refCount > 0) return void(Re.currentCtx.err = 40964); + i.audioBuf && (i.audioBuf._loopStart = n[0] / i.frequency, i.audioBuf._loopEnd = n[1] / i.frequency); + break; + default: + return void(Re.currentCtx.err = 40962) + } else Re.currentCtx.err = 40962; + else Re.currentCtx.err = 40961 + } + }, + getSourceParam: function(e, r, t) { + if (!Re.currentCtx) return null; + var n = Re.currentCtx.sources[r]; + if (!n) return Re.currentCtx.err = 40961, null; + switch (t) { + case 514: + return n.relative; + case 4097: + return n.coneInnerAngle; + case 4098: + return n.coneOuterAngle; + case 4099: + return n.pitch; + case 4100: + return n.position; + case 4101: + return n.direction; + case 4102: + return n.velocity; + case 4103: + return n.looping; + case 4105: + return 4136 === n.type ? n.bufQueue[0].id : 0; + case 4106: + return n.gain.gain.value; + case 4109: + return n.minGain; + case 4110: + return n.maxGain; + case 4112: + return n.state; + case 4117: + return 1 === n.bufQueue.length && 0 === n.bufQueue[0].id ? 0 : n.bufQueue.length; + case 4118: + return 1 === n.bufQueue.length && 0 === n.bufQueue[0].id || n.looping ? 0 : n.bufsProcessed; + case 4128: + return n.refDistance; + case 4129: + return n.rolloffFactor; + case 4130: + return n.coneOuterGain; + case 4131: + return n.maxDistance; + case 4132: + return Re.sourceTell(n); + case 4133: + return (i = Re.sourceTell(n)) > 0 && (i *= n.bufQueue[0].frequency), i; + case 4134: + var i; + return (i = Re.sourceTell(n)) > 0 && (i *= n.bufQueue[0].frequency * n.bufQueue[0].bytesPerSample), i; + case 4135: + return n.type; + case 4628: + return n.spatialize; + case 8201: + for (var a = 0, o = 0, u = 0; u < n.bufQueue.length; u++) a += n.bufQueue[u].length, 0 !== n.bufQueue[u].id && (o = n.bufQueue[u].bytesPerSample * n.bufQueue[u].channels); + return a * o; + case 8202: + for (a = 0, u = 0; u < n.bufQueue.length; u++) a += n.bufQueue[u].length; + return a; + case 8203: + return Re.sourceDuration(n); + case 53248: + return n.distanceModel; + default: + return Re.currentCtx.err = 40962, null + } + }, + setSourceParam: function(e, r, t, n) { + if (Re.currentCtx) { + var i = Re.currentCtx.sources[r]; + if (i) + if (null !== n) switch (t) { + case 514: + if (1 === n) i.relative = !0, Re.updateSourceSpace(i); + else { + if (0 !== n) return void(Re.currentCtx.err = 40963); + i.relative = !1, Re.updateSourceSpace(i) + } + break; + case 4097: + if (!Number.isFinite(n)) return void(Re.currentCtx.err = 40963); + i.coneInnerAngle = n, i.panner && (i.panner.coneInnerAngle = n % 360); + break; + case 4098: + if (!Number.isFinite(n)) return void(Re.currentCtx.err = 40963); + i.coneOuterAngle = n, i.panner && (i.panner.coneOuterAngle = n % 360); + break; + case 4099: + if (!Number.isFinite(n) || n <= 0) return void(Re.currentCtx.err = 40963); + if (i.pitch === n) break; + i.pitch = n, Re.updateSourceRate(i); + break; + case 4100: + if (!Number.isFinite(n[0]) || !Number.isFinite(n[1]) || !Number.isFinite(n[2])) return void(Re.currentCtx.err = 40963); + i.position[0] = n[0], i.position[1] = n[1], i.position[2] = n[2], Re.updateSourceSpace(i); + break; + case 4101: + if (!Number.isFinite(n[0]) || !Number.isFinite(n[1]) || !Number.isFinite(n[2])) return void(Re.currentCtx.err = 40963); + i.direction[0] = n[0], i.direction[1] = n[1], i.direction[2] = n[2], Re.updateSourceSpace(i); + break; + case 4102: + if (!Number.isFinite(n[0]) || !Number.isFinite(n[1]) || !Number.isFinite(n[2])) return void(Re.currentCtx.err = 40963); + i.velocity[0] = n[0], i.velocity[1] = n[1], i.velocity[2] = n[2], Re.updateSourceSpace(i); + break; + case 4103: + if (1 === n) { + if (i.looping = !0, Re.updateSourceTime(i), 4136 === i.type && i.audioQueue.length > 0)(a = i.audioQueue[0]).loop = !0, a._duration = Number.POSITIVE_INFINITY + } else { + if (0 !== n) return void(Re.currentCtx.err = 40963); + i.looping = !1; + var a, o = Re.updateSourceTime(i); + 4136 === i.type && i.audioQueue.length > 0 && ((a = i.audioQueue[0]).loop = !1, a._duration = i.bufQueue[0].audioBuf.duration / i.playbackRate, a._startTime = o - i.bufOffset / i.playbackRate) + } + break; + case 4105: + if (4114 === i.state || 4115 === i.state) return void(Re.currentCtx.err = 40964); + if (0 === n) { + for (var u = 0; u < i.bufQueue.length; u++) i.bufQueue[u].refCount--; + i.bufQueue.length = 1, i.bufQueue[0] = Re.buffers[0], i.bufsProcessed = 0, i.type = 4144 + } else { + if (!(d = Re.buffers[n])) return void(Re.currentCtx.err = 40963); + for (u = 0; u < i.bufQueue.length; u++) i.bufQueue[u].refCount--; + i.bufQueue.length = 0, d.refCount++, i.bufQueue = [d], i.bufsProcessed = 0, i.type = 4136 + } + Re.initSourcePanner(i), Re.scheduleSourceAudio(i); + break; + case 4106: + if (!Number.isFinite(n) || n < 0) return void(Re.currentCtx.err = 40963); + i.gain.gain.value = n; + break; + case 4109: + if (!Number.isFinite(n) || n < 0 || n > Math.min(i.maxGain, 1)) return void(Re.currentCtx.err = 40963); + i.minGain = n; + break; + case 4110: + if (!Number.isFinite(n) || n < Math.max(0, i.minGain) || n > 1) return void(Re.currentCtx.err = 40963); + i.maxGain = n; + break; + case 4128: + if (!Number.isFinite(n) || n < 0) return void(Re.currentCtx.err = 40963); + i.refDistance = n, i.panner && (i.panner.refDistance = n); + break; + case 4129: + if (!Number.isFinite(n) || n < 0) return void(Re.currentCtx.err = 40963); + i.rolloffFactor = n, i.panner && (i.panner.rolloffFactor = n); + break; + case 4130: + if (!Number.isFinite(n) || n < 0 || n > 1) return void(Re.currentCtx.err = 40963); + i.coneOuterGain = n, i.panner && (i.panner.coneOuterGain = n); + break; + case 4131: + if (!Number.isFinite(n) || n < 0) return void(Re.currentCtx.err = 40963); + i.maxDistance = n, i.panner && (i.panner.maxDistance = n); + break; + case 4132: + if (n < 0 || n > Re.sourceDuration(i)) return void(Re.currentCtx.err = 40963); + Re.sourceSeek(i, n); + break; + case 4133: + if ((l = Re.sourceDuration(i)) > 0) { + var s; + for (var c in i.bufQueue) + if (c) { + s = i.bufQueue[c].frequency; + break + } n /= s + } + if (n < 0 || n > l) return void(Re.currentCtx.err = 40963); + Re.sourceSeek(i, n); + break; + case 4134: + var l; + if ((l = Re.sourceDuration(i)) > 0) { + var f; + for (var c in i.bufQueue) + if (c) { + var d; + f = (d = i.bufQueue[c]).frequency * d.bytesPerSample * d.channels; + break + } n /= f + } + if (n < 0 || n > l) return void(Re.currentCtx.err = 40963); + Re.sourceSeek(i, n); + break; + case 4628: + if (0 !== n && 1 !== n && 2 !== n) return void(Re.currentCtx.err = 40963); + i.spatialize = n, Re.initSourcePanner(i); + break; + case 8201: + case 8202: + case 8203: + Re.currentCtx.err = 40964; + break; + case 53248: + switch (n) { + case 0: + case 53249: + case 53250: + case 53251: + case 53252: + case 53253: + case 53254: + i.distanceModel = n, Re.currentCtx.sourceDistanceModel && Re.updateContextGlobal(Re.currentCtx); + break; + default: + return void(Re.currentCtx.err = 40963) + } + break; + default: + return void(Re.currentCtx.err = 40962) + } else Re.currentCtx.err = 40962; + else Re.currentCtx.err = 40961 + } + }, + captures: {}, + sharedCaptureAudioCtx: null, + requireValidCaptureDevice: function(e, r) { + if (0 === e) return Re.alcErr = 40961, null; + var t = Re.captures[e]; + return t ? t.mediaStreamError ? (Re.alcErr = 40961, null) : t : (Re.alcErr = 40961, null) + } + }; + + function Me(e, r, t) { + switch (r) { + case 514: + case 4097: + case 4098: + case 4103: + case 4105: + case 4128: + case 4129: + case 4131: + case 4132: + case 4133: + case 4134: + case 4628: + case 8201: + case 8202: + case 53248: + Re.setSourceParam("alSourcei", e, r, t); + break; + default: + Re.setSourceParam("alSourcei", e, r, null) + } + } + var Ne = { + errorCode: 12288, + defaultDisplayInitialized: !1, + currentContext: 0, + currentReadSurface: 0, + currentDrawSurface: 0, + contextAttributes: { + alpha: !1, + depth: !1, + stencil: !1, + antialias: !1 + }, + stringCache: {}, + setErrorCode: function(e) { + Ne.errorCode = e + }, + chooseConfig: function(e, r, t, n, i) { + if (62e3 != e) return Ne.setErrorCode(12296), 0; + if (r) + for (;;) { + var a = q[r >> 2]; + if (12321 == a) { + var o = q[r + 4 >> 2]; + Ne.contextAttributes.alpha = o > 0 + } else if (12325 == a) { + var u = q[r + 4 >> 2]; + Ne.contextAttributes.depth = u > 0 + } else if (12326 == a) { + var s = q[r + 4 >> 2]; + Ne.contextAttributes.stencil = s > 0 + } else if (12337 == a) { + var c = q[r + 4 >> 2]; + Ne.contextAttributes.antialias = c > 0 + } else if (12338 == a) { + c = q[r + 4 >> 2]; + Ne.contextAttributes.antialias = 1 == c + } else if (12544 == a) { + var l = q[r + 4 >> 2]; + Ne.contextAttributes.lowLatency = 12547 != l + } else if (12344 == a) break; + r += 8 + } + return t && n || i ? (i && (q[i >> 2] = 1), t && n > 0 && (q[t >> 2] = 62002), Ne.setErrorCode(12288), 1) : (Ne.setErrorCode(12300), 0) + } + }; + var Ue = { + counter: 1, + lastError: 0, + buffers: [], + mappedBuffers: {}, + programs: [], + framebuffers: [], + renderbuffers: [], + textures: [], + uniforms: [], + shaders: [], + vaos: [], + contexts: [], + currentContext: null, + offscreenCanvases: {}, + timerQueriesEXT: [], + queries: [], + samplers: [], + transformFeedbacks: [], + syncs: [], + programInfos: {}, + stringCache: {}, + stringiCache: {}, + unpackAlignment: 4, + init: function() { + for (var e = new Float32Array(Ue.MINI_TEMP_BUFFER_SIZE), r = 0; r < Ue.MINI_TEMP_BUFFER_SIZE; r++) Ue.miniTempBufferFloatViews[r] = e.subarray(0, r + 1); + var t = new Int32Array(Ue.MINI_TEMP_BUFFER_SIZE); + for (r = 0; r < Ue.MINI_TEMP_BUFFER_SIZE; r++) Ue.miniTempBufferIntViews[r] = t.subarray(0, r + 1) + }, + recordError: function(e) { + Ue.lastError || (Ue.lastError = e) + }, + getNewId: function(e) { + for (var r = Ue.counter++, t = e.length; t < r; t++) e[t] = null; + return r + }, + MINI_TEMP_BUFFER_SIZE: 256, + miniTempBufferFloatViews: [0], + miniTempBufferIntViews: [0], + getSource: function(e, r, t, n) { + for (var i = "", a = 0; a < r; ++a) { + var o = n ? q[n + 4 * a >> 2] : -1; + i += L(q[t + 4 * a >> 2], o < 0 ? void 0 : o) + } + return i + }, + createContext: function(e, r) { + var t = r.majorVersion > 1 ? e.getContext("webgl2", r) : e.getContext("webgl", r); + return t ? Ue.registerContext(t, r) : 0 + }, + registerContext: function(e, r) { + var t = Ue.getNewId(Ue.contexts), + n = { + handle: t, + attributes: r, + version: r.majorVersion, + GLctx: e + }; + return e.canvas && (e.canvas.GLctxObject = n), Ue.contexts[t] = n, (void 0 === r.enableExtensionsByDefault || r.enableExtensionsByDefault) && Ue.initExtensions(n), t + }, + makeContextCurrent: function(e) { + return Ue.currentContext = Ue.contexts[e], r.ctx = Or = Ue.currentContext && Ue.currentContext.GLctx, !(e && !Or) + }, + getContext: function(e) { + return Ue.contexts[e] + }, + deleteContext: function(e) { + Ue.currentContext === Ue.contexts[e] && (Ue.currentContext = null), "object" == typeof Oe && Oe.removeAllHandlersOnTarget(Ue.contexts[e].GLctx.canvas), Ue.contexts[e] && Ue.contexts[e].GLctx.canvas && (Ue.contexts[e].GLctx.canvas.GLctxObject = void 0), Ue.contexts[e] = null + }, + initExtensions: function(e) { + if (e || (e = Ue.currentContext), !e.initExtensionsDone) { + e.initExtensionsDone = !0; + var r, t = e.GLctx; + (r = t).dibvbi = r.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"), t.disjointTimerQueryExt = t.getExtension("EXT_disjoint_timer_query"); + var n = ["OES_texture_float", "OES_texture_half_float", "OES_standard_derivatives", "OES_vertex_array_object", "WEBGL_compressed_texture_s3tc", "WEBGL_depth_texture", "OES_element_index_uint", "EXT_texture_filter_anisotropic", "EXT_frag_depth", "WEBGL_draw_buffers", "ANGLE_instanced_arrays", "OES_texture_float_linear", "OES_texture_half_float_linear", "EXT_blend_minmax", "EXT_shader_texture_lod", "EXT_texture_norm16", "WEBGL_compressed_texture_pvrtc", "EXT_color_buffer_half_float", "WEBGL_color_buffer_float", "EXT_sRGB", "WEBGL_compressed_texture_etc1", "EXT_disjoint_timer_query", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_astc", "EXT_color_buffer_float", "WEBGL_compressed_texture_s3tc_srgb", "EXT_disjoint_timer_query_webgl2", "WEBKIT_WEBGL_compressed_texture_pvrtc"]; + (t.getSupportedExtensions() || []).forEach((function(e) { + -1 != n.indexOf(e) && t.getExtension(e) + })) + } + }, + populateUniformTable: function(e) { + for (var r = Ue.programs[e], t = Ue.programInfos[e] = { + uniforms: {}, + maxUniformLength: 0, + maxAttributeLength: -1, + maxUniformBlockNameLength: -1 + }, n = t.uniforms, i = Or.getProgramParameter(r, 35718), a = 0; a < i; ++a) { + var o = Or.getActiveUniform(r, a), + u = o.name; + t.maxUniformLength = Math.max(t.maxUniformLength, u.length + 1), "]" == u.slice(-1) && (u = u.slice(0, u.lastIndexOf("["))); + var s = Or.getUniformLocation(r, u); + if (s) { + var c = Ue.getNewId(Ue.uniforms); + n[u] = [o.size, c], Ue.uniforms[c] = s; + for (var l = 1; l < o.size; ++l) { + var f = u + "[" + l + "]"; + s = Or.getUniformLocation(r, f), c = Ue.getNewId(Ue.uniforms), Ue.uniforms[c] = s + } + } + } + } + }; + var Oe = { + keyEvent: 0, + mouseEvent: 0, + wheelEvent: 0, + uiEvent: 0, + focusEvent: 0, + deviceOrientationEvent: 0, + deviceMotionEvent: 0, + fullscreenChangeEvent: 0, + pointerlockChangeEvent: 0, + visibilityChangeEvent: 0, + touchEvent: 0, + previousFullscreenElement: null, + previousScreenX: null, + previousScreenY: null, + removeEventListenersRegistered: !1, + removeAllEventListeners: function() { + for (var e = Oe.eventHandlers.length - 1; e >= 0; --e) Oe._removeHandler(e); + Oe.eventHandlers = [], Oe.deferredCalls = [] + }, + registerRemoveEventListeners: function() { + Oe.removeEventListenersRegistered || (ee.push(Oe.removeAllEventListeners), Oe.removeEventListenersRegistered = !0) + }, + deferredCalls: [], + deferCall: function(e, r, t) { + function n(e, r) { + if (e.length != r.length) return !1; + for (var t in e) + if (e[t] != r[t]) return !1; + return !0 + } + for (var i in Oe.deferredCalls) { + var a = Oe.deferredCalls[i]; + if (a.targetFunction == e && n(a.argsList, t)) return + } + Oe.deferredCalls.push({ + targetFunction: e, + precedence: r, + argsList: t + }), Oe.deferredCalls.sort((function(e, r) { + return e.precedence < r.precedence + })) + }, + removeDeferredCalls: function(e) { + for (var r = 0; r < Oe.deferredCalls.length; ++r) Oe.deferredCalls[r].targetFunction == e && (Oe.deferredCalls.splice(r, 1), --r) + }, + canPerformEventHandlerRequests: function() { + return Oe.inEventHandler && Oe.currentEventHandler.allowsDeferredCalls + }, + runDeferredCalls: function() { + if (Oe.canPerformEventHandlerRequests()) + for (var e = 0; e < Oe.deferredCalls.length; ++e) { + var r = Oe.deferredCalls[e]; + Oe.deferredCalls.splice(e, 1), --e, r.targetFunction.apply(null, r.argsList) + } + }, + inEventHandler: 0, + currentEventHandler: null, + eventHandlers: [], + removeAllHandlersOnTarget: function(e, r) { + for (var t = 0; t < Oe.eventHandlers.length; ++t) Oe.eventHandlers[t].target != e || r && r != Oe.eventHandlers[t].eventTypeString || Oe._removeHandler(t--) + }, + _removeHandler: function(e) { + var r = Oe.eventHandlers[e]; + r.target.removeEventListener(r.eventTypeString, r.eventListenerFunc, r.useCapture), Oe.eventHandlers.splice(e, 1) + }, + registerOrRemoveHandler: function(e) { + var r = function(r) { + ++Oe.inEventHandler, Oe.currentEventHandler = e, Oe.runDeferredCalls(), e.handlerFunc(r), Oe.runDeferredCalls(), --Oe.inEventHandler + }; + if (e.callbackfunc) e.eventListenerFunc = r, e.target.addEventListener(e.eventTypeString, r, e.useCapture), Oe.eventHandlers.push(e), Oe.registerRemoveEventListeners(); + else + for (var t = 0; t < Oe.eventHandlers.length; ++t) Oe.eventHandlers[t].target == e.target && Oe.eventHandlers[t].eventTypeString == e.eventTypeString && Oe._removeHandler(t--) + }, + getNodeNameForTarget: function(e) { + return e ? e == window ? "#window" : e == screen ? "#screen" : e && e.nodeName ? e.nodeName : "" : "" + }, + fullscreenEnabled: function() { + return document.fullscreenEnabled || document.webkitFullscreenEnabled + } + }, + Ge = {}; + var je = [0, document, window]; + + function ze(e) { + var r; + return e = (r = e) > 2 ? L(r) : r, je[e] || document.querySelector(e) + } + + function qe(e) { + return ze(e) + } + + function Qe(e, r, t) { + var n = qe(e); + if (!n) return -4; + q[r >> 2] = n.width, q[t >> 2] = n.height + } + + function Ve(e) { + var r = yt(), + t = wt(8), + n = t + 4, + i = wt(e.id.length + 1); + B(e.id, i, e.id.length + 1); + Qe(i, t, n); + var a = [q[t >> 2], q[n >> 2]]; + return Et(r), a + } + + function Xe(e, r, t) { + var n = qe(e); + return n ? (n.width = r, n.height = t, 0) : -4 + } + + function He(e, r, t) { + if (e.controlTransferredOffscreen) { + var n = yt(), + i = wt(e.id.length + 1); + B(e.id, i, e.id.length + 1), Xe(i, r, t), Et(n) + } else e.width = r, e.height = t + } + + function We(e, r, t) { + e.style.paddingLeft = e.style.paddingRight = t + "px", e.style.paddingTop = e.style.paddingBottom = r + "px" + } + + function Ye(e) { + return je.indexOf(e) < 0 ? e.getBoundingClientRect() : { + left: 0, + top: 0 + } + } + + function Ze(e, r) { + var t = function(e) { + var r = Ve(e), + t = r[0], + n = r[1], + i = e.style.width, + a = e.style.height, + o = e.style.backgroundColor, + u = document.body.style.backgroundColor, + s = e.style.paddingLeft, + c = e.style.paddingRight, + l = e.style.paddingTop, + f = e.style.paddingBottom, + d = e.style.marginLeft, + m = e.style.marginRight, + p = e.style.marginTop, + v = e.style.marginBottom, + g = document.body.style.margin, + h = document.documentElement.style.overflow, + _ = document.body.scroll, + b = e.style.imageRendering; + + function y() { + document.fullscreenElement || document.webkitFullscreenElement || document.msFullscreenElement || (document.removeEventListener("fullscreenchange", y), document.removeEventListener("webkitfullscreenchange", y), He(e, t, n), e.style.width = i, e.style.height = a, e.style.backgroundColor = o, u || (document.body.style.backgroundColor = "white"), document.body.style.backgroundColor = u, e.style.paddingLeft = s, e.style.paddingRight = c, e.style.paddingTop = l, e.style.paddingBottom = f, e.style.marginLeft = d, e.style.marginRight = m, e.style.marginTop = p, e.style.marginBottom = v, document.body.style.margin = g, document.documentElement.style.overflow = h, document.body.scroll = _, e.style.imageRendering = b, e.GLctxObject && e.GLctxObject.GLctx.viewport(0, 0, t, n), Ge.canvasResizedCallback && mt(Ge.canvasResizedCallback, 37, 0, Ge.canvasResizedCallbackUserData)) + } + return document.addEventListener("fullscreenchange", y), document.addEventListener("webkitfullscreenchange", y), y + }(e), + n = r.softFullscreen ? innerWidth : screen.width, + i = r.softFullscreen ? innerHeight : screen.height, + a = Ye(e), + o = a.width, + u = a.height, + s = Ve(e), + c = s[0], + l = s[1]; + if (3 == r.scaleMode) We(e, (i - u) / 2, (n - o) / 2), n = o, i = u; + else if (2 == r.scaleMode) + if (n * l < c * i) { + var f = l * n / c; + We(e, (i - f) / 2, 0), i = f + } else { + var d = c * i / l; + We(e, 0, (n - d) / 2), n = d + } e.style.backgroundColor || (e.style.backgroundColor = "black"), document.body.style.backgroundColor || (document.body.style.backgroundColor = "black"), e.style.width = n + "px", e.style.height = i + "px", 1 == r.filteringMode && (e.style.imageRendering = "optimizeSpeed", e.style.imageRendering = "-moz-crisp-edges", e.style.imageRendering = "-o-crisp-edges", e.style.imageRendering = "-webkit-optimize-contrast", e.style.imageRendering = "optimize-contrast", e.style.imageRendering = "crisp-edges", e.style.imageRendering = "pixelated"); + var m = 2 == r.canvasResolutionScaleMode ? devicePixelRatio : 1; + if (0 != r.canvasResolutionScaleMode) { + var p = n * m | 0, + v = i * m | 0; + He(e, p, v), e.GLctxObject && e.GLctxObject.GLctx.viewport(0, 0, p, v) + } + return t + } + + function Ke(e, r) { + if (0 == r.scaleMode && 0 == r.canvasResolutionScaleMode || Ze(e, r), e.requestFullscreen) e.requestFullscreen(); + else { + if (!e.webkitRequestFullscreen) return Oe.fullscreenEnabled() ? -3 : -1; + e.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT) + } + return Ge = r, r.canvasResizedCallback && mt(r.canvasResizedCallback, 37, 0, r.canvasResizedCallbackUserData), 0 + } + + function $e(e) { + if (e.requestPointerLock) e.requestPointerLock(); + else { + if (!e.msRequestPointerLock) return document.body.requestPointerLock || document.body.msRequestPointerLock ? -3 : -1; + e.msRequestPointerLock() + } + return 0 + } + + function Je(e) { + var r = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement, + t = !!r; + q[e >> 2] = t, q[e + 4 >> 2] = Oe.fullscreenEnabled(); + var n = t ? r : Oe.previousFullscreenElement, + i = Oe.getNodeNameForTarget(n), + a = n && n.id ? n.id : ""; + B(i, e + 8, 128), B(a, e + 136, 128), q[e + 264 >> 2] = n ? n.clientWidth : 0, q[e + 268 >> 2] = n ? n.clientHeight : 0, q[e + 272 >> 2] = screen.width, q[e + 276 >> 2] = screen.height, t && (Oe.previousFullscreenElement = r) + } + + function er(e, r) { + X[e >> 3] = r.timestamp; + for (var t = 0; t < r.axes.length; ++t) X[e + 8 * t + 16 >> 3] = r.axes[t]; + for (t = 0; t < r.buttons.length; ++t) "object" == typeof r.buttons[t] ? X[e + 8 * t + 528 >> 3] = r.buttons[t].value : X[e + 8 * t + 528 >> 3] = r.buttons[t]; + for (t = 0; t < r.buttons.length; ++t) "object" == typeof r.buttons[t] ? q[e + 4 * t + 1040 >> 2] = r.buttons[t].pressed : q[e + 4 * t + 1040 >> 2] = 1 == r.buttons[t]; + q[e + 1296 >> 2] = r.connected, q[e + 1300 >> 2] = r.index, q[e + 8 >> 2] = r.axes.length, q[e + 12 >> 2] = r.buttons.length, B(r.id, e + 1304, 64), B(r.mapping, e + 1368, 64) + } + + function rr(e, r) { + return (e >>> 0) + 4294967296 * r + } + var tr = []; + + function nr(e, r, t, n) { + Or.drawElements(e, r, t, n) + } + + function ir(e, r, t, n) { + for (var i = 0; i < e; i++) { + var a = Or[t](), + o = a && Ue.getNewId(n); + a ? (a.name = o, n[o] = a) : Ue.recordError(1282), q[r + 4 * i >> 2] = o + } + } + + function ar(e, r) { + Q[e >> 2] = r, Q[e + 4 >> 2] = (r - Q[e >> 2]) / 4294967296 + } + + function or(e, r, t) { + if (r) { + var n = void 0; + switch (e) { + case 36346: + n = 1; + break; + case 36344: + return void(0 != t && 1 != t && Ue.recordError(1280)); + case 34814: + case 36345: + n = 0; + break; + case 34466: + var i = Or.getParameter(34467); + n = i ? i.length : 0; + break; + case 33309: + if (Ue.currentContext.version < 2) return void Ue.recordError(1282); + n = 2 * (Or.getSupportedExtensions() || []).length; + break; + case 33307: + case 33308: + if (Ue.currentContext.version < 2) return void Ue.recordError(1280); + n = 33307 == e ? 3 : 0 + } + if (void 0 === n) { + var a = Or.getParameter(e); + switch (typeof a) { + case "number": + n = a; + break; + case "boolean": + n = a ? 1 : 0; + break; + case "string": + return void Ue.recordError(1280); + case "object": + if (null === a) switch (e) { + case 34964: + case 35725: + case 34965: + case 36006: + case 36007: + case 32873: + case 34229: + case 36662: + case 36663: + case 35053: + case 35055: + case 36010: + case 35097: + case 35869: + case 32874: + case 36389: + case 35983: + case 35368: + case 34068: + n = 0; + break; + default: + return void Ue.recordError(1280) + } else { + if (a instanceof Float32Array || a instanceof Uint32Array || a instanceof Int32Array || a instanceof Array) { + for (var o = 0; o < a.length; ++o) switch (t) { + case 0: + q[r + 4 * o >> 2] = a[o]; + break; + case 2: + V[r + 4 * o >> 2] = a[o]; + break; + case 4: + O[r + o >> 0] = a[o] ? 1 : 0 + } + return + } + try { + n = 0 | a.name + } catch (r) { + return Ue.recordError(1280), void p("GL_INVALID_ENUM in glGet" + t + "v: Unknown object returned from WebGL getParameter(" + e + ")! (error: " + r + ")") + } + } + break; + default: + return Ue.recordError(1280), void p("GL_INVALID_ENUM in glGet" + t + "v: Native code calling glGet" + t + "v(" + e + ") and it returns " + a + " of type " + typeof a + "!") + } + } + switch (t) { + case 1: + ar(r, n); + break; + case 0: + q[r >> 2] = n; + break; + case 2: + V[r >> 2] = n; + break; + case 4: + O[r >> 0] = n ? 1 : 0 + } + } else Ue.recordError(1281) + } + + function ur(e, r, t, n) { + if (t) { + var i, a = Or.getIndexedParameter(e, r); + switch (typeof a) { + case "boolean": + i = a ? 1 : 0; + break; + case "number": + i = a; + break; + case "object": + if (null === a) switch (e) { + case 35983: + case 35368: + i = 0; + break; + default: + return void Ue.recordError(1280) + } else { + if (!(a instanceof WebGLBuffer)) return void Ue.recordError(1280); + i = 0 | a.name + } + break; + default: + return void Ue.recordError(1280) + } + switch (n) { + case 1: + ar(t, i); + break; + case 0: + q[t >> 2] = i; + break; + case 2: + V[t >> 2] = i; + break; + case 4: + O[t >> 0] = i ? 1 : 0; + break; + default: + throw "internal emscriptenWebGLGetIndexed() error, bad type: " + n + } + } else Ue.recordError(1281) + } + + function sr(e) { + var r = R(e) + 1, + t = Zr(r); + return B(e, t, r), t + } + + function cr(e) { + return parseInt(e) + } + + function lr(e, r, t, n) { + if (t) { + var i = Or.getUniform(Ue.programs[e], Ue.uniforms[r]); + if ("number" == typeof i || "boolean" == typeof i) switch (n) { + case 0: + q[t >> 2] = i; + break; + case 2: + V[t >> 2] = i; + break; + default: + throw "internal emscriptenWebGLGetUniform() error, bad type: " + n + } else + for (var a = 0; a < i.length; a++) switch (n) { + case 0: + q[t + 4 * a >> 2] = i[a]; + break; + case 2: + V[t + 4 * a >> 2] = i[a]; + break; + default: + throw "internal emscriptenWebGLGetUniform() error, bad type: " + n + } + } else Ue.recordError(1281) + } + + function fr(e, r, t, n) { + if (t) { + var i = Or.getVertexAttrib(e, r); + if (34975 == r) q[t >> 2] = i && i.name; + else if ("number" == typeof i || "boolean" == typeof i) switch (n) { + case 0: + q[t >> 2] = i; + break; + case 2: + V[t >> 2] = i; + break; + case 5: + q[t >> 2] = Math.fround(i); + break; + default: + throw "internal emscriptenWebGLGetVertexAttrib() error, bad type: " + n + } else + for (var a = 0; a < i.length; a++) switch (n) { + case 0: + q[t + 4 * a >> 2] = i[a]; + break; + case 2: + V[t + 4 * a >> 2] = i[a]; + break; + case 5: + q[t + 4 * a >> 2] = Math.fround(i[a]); + break; + default: + throw "internal emscriptenWebGLGetVertexAttrib() error, bad type: " + n + } + } else Ue.recordError(1281) + } + + function dr(e) { + return 0 == (e -= 5120) ? O : 1 == e ? G : 2 == e ? j : 4 == e ? q : 6 == e ? V : 5 == e || 28922 == e || 28520 == e || 30779 == e || 30782 == e ? Q : z + } + + function mr(e) { + return 31 - Math.clz32(e.BYTES_PER_ELEMENT) + } + + function pr(e, r, t, n, i, a) { + var o = dr(e), + u = mr(o), + s = 1 << u, + c = function(e, r, t, n) { + var i; + return r * (e * t + (i = n) - 1 & -i) + }(t, n, function(e) { + return { + 5: 3, + 6: 4, + 8: 2, + 29502: 3, + 29504: 4, + 26917: 2, + 26918: 2, + 29846: 3, + 29847: 4 + } [e - 6402] || 1 + }(r) * s, Ue.unpackAlignment); + return o.subarray(i >> u, i + c >> u) + } + + function vr(e) { + if (!e || !e.callee || !e.callee.name) return [null, "", ""]; + e.callee.toString(); + var r = e.callee.name, + t = "(", + n = !0; + for (var i in e) { + var a = e[i]; + n || (t += ", "), n = !1, t += "number" == typeof a || "string" == typeof a ? a : "(" + typeof a + ")" + } + t += ")"; + var o = e.callee.caller; + return n && (t = ""), [e = o ? o.arguments : [], r, t] + } + + function gr(e, r) { + 24 & e && (r = r.replace(/\s+$/, ""), r += (r.length > 0 ? "\n" : "") + function(e) { + var r = Ee(), + t = r.lastIndexOf("_emscripten_log"), + n = r.lastIndexOf("_emscripten_get_callstack"), + i = r.indexOf("\n", Math.max(t, n)) + 1; + r = r.slice(i), 8 & e && "undefined" == typeof emscripten_source_map && (h('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.'), e ^= 8, e |= 16); + var a = null; + if (128 & e) + for (a = vr(arguments); a[1].indexOf("_emscripten_") >= 0;) a = vr(a[0]); + var o = r.split("\n"); + r = ""; + var u = new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"), + s = new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"), + c = new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)"); + for (var l in o) { + var f = o[l], + d = "", + m = "", + p = 0, + v = 0, + g = c.exec(f); + if (g && 5 == g.length) d = g[1], m = g[2], p = g[3], v = g[4]; + else { + if ((g = u.exec(f)) || (g = s.exec(f)), !(g && g.length >= 4)) { + r += f + "\n"; + continue + } + d = g[1], m = g[2], p = g[3], v = 0 | g[4] + } + var _ = d; + _ || (_ = d); + var b = !1; + if (8 & e) { + var y = emscripten_source_map.originalPositionFor({ + line: p, + column: v + }); + (b = y && y.source) && (64 & e && (y.source = y.source.substring(y.source.replace(/\\/g, "/").lastIndexOf("/") + 1)), r += " at " + _ + " (" + y.source + ":" + y.line + ":" + y.column + ")\n") + }(16 & e || !b) && (64 & e && (m = m.substring(m.replace(/\\/g, "/").lastIndexOf("/") + 1)), r += (b ? " = " + d : " at " + _) + " (" + m + ":" + p + ":" + v + ")\n"), 128 & e && a[0] && (a[1] == d && a[2].length > 0 && (r = r.replace(/\s+$/, ""), r += " with values: " + a[1] + a[2] + "\n"), a = vr(a[0])) + } + return r.replace(/\s+$/, "") + }(e)), 1 & e ? 4 & e ? console.error(r) : 2 & e ? console.warn(r) : 512 & e ? console.info(r) : 256 & e ? console.debug(r) : console.log(r) : 6 & e ? p(r) : m(r) + } + var hr = 0; + + function _r(e) { + try { + return w.grow(e - U.byteLength + 65535 >>> 16), H(w.buffer), 1 + } catch (e) {} + } + + function br(e, r, t, n, i, a, o) { + Oe.focusEvent || (Oe.focusEvent = Zr(256)); + var u = { + target: ze(e), + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t = e || event, + a = Oe.getNodeNameForTarget(t.target), + o = t.target.id ? t.target.id : "", + u = Oe.focusEvent; + B(a, u + 0, 128), B(o, u + 128, 128), mt(n, i, u, r) && t.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function yr(e, r, t, n, i, a, o) { + Oe.fullscreenChangeEvent || (Oe.fullscreenChangeEvent = Zr(280)); + var u = { + target: e, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t = e || event, + a = Oe.fullscreenChangeEvent; + Je(a), mt(n, i, a, r) && t.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function wr(e, r, t, n, i, a, o) { + Oe.gamepadEvent || (Oe.gamepadEvent = Zr(1432)); + var u = { + target: ze(e), + allowsDeferredCalls: !0, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t = e || event, + a = Oe.gamepadEvent; + er(a, t.gamepad), mt(n, i, a, r) && t.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function Er(e, r, t, n, i, a, o) { + Oe.keyEvent || (Oe.keyEvent = Zr(164)); + var u = { + target: ze(e), + allowsDeferredCalls: !0, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t = e || event, + a = Oe.keyEvent; + B(t.key ? t.key : "", a + 0, 32), B(t.code ? t.code : "", a + 32, 32), q[a + 64 >> 2] = t.location, q[a + 68 >> 2] = t.ctrlKey, q[a + 72 >> 2] = t.shiftKey, q[a + 76 >> 2] = t.altKey, q[a + 80 >> 2] = t.metaKey, q[a + 84 >> 2] = t.repeat, B(t.locale ? t.locale : "", a + 88, 32), B(t.char ? t.char : "", a + 120, 32), q[a + 152 >> 2] = t.charCode, q[a + 156 >> 2] = t.keyCode, q[a + 160 >> 2] = t.which, mt(n, i, a, r) && t.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function xr(e, r, t) { + q[e >> 2] = r.screenX, q[e + 4 >> 2] = r.screenY, q[e + 8 >> 2] = r.clientX, q[e + 12 >> 2] = r.clientY, q[e + 16 >> 2] = r.ctrlKey, q[e + 20 >> 2] = r.shiftKey, q[e + 24 >> 2] = r.altKey, q[e + 28 >> 2] = r.metaKey, j[e + 32 >> 1] = r.button, j[e + 34 >> 1] = r.buttons; + var n = r.movementX || r.screenX - Oe.previousScreenX, + i = r.movementY || r.screenY - Oe.previousScreenY; + q[e + 36 >> 2] = n, q[e + 40 >> 2] = i; + var a = Ye(t); + q[e + 44 >> 2] = r.clientX - a.left, q[e + 48 >> 2] = r.clientY - a.top, "wheel" !== r.type && "mousewheel" !== r.type && (Oe.previousScreenX = r.screenX, Oe.previousScreenY = r.screenY) + } + + function kr(e, r, t, n, i, a, o) { + Oe.mouseEvent || (Oe.mouseEvent = Zr(64)); + var u = { + target: e = ze(e), + allowsDeferredCalls: "mousemove" != a && "mouseenter" != a && "mouseleave" != a, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(t) { + var a = t || event; + xr(Oe.mouseEvent, a, e), mt(n, i, Oe.mouseEvent, r) && a.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function Cr(e, r, t, n, i, a, o) { + Oe.pointerlockChangeEvent || (Oe.pointerlockChangeEvent = Zr(260)); + var u = { + target: e, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t = e || event, + a = Oe.pointerlockChangeEvent; + ! function(e) { + var r = document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement || document.msPointerLockElement, + t = !!r; + q[e >> 2] = t; + var n = Oe.getNodeNameForTarget(r), + i = r && r.id ? r.id : ""; + B(n, e + 4, 128), B(i, e + 132, 128) + }(a), mt(n, i, a, r) && t.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function Sr(e, r, t, n, i, a, o) { + Oe.touchEvent || (Oe.touchEvent = Zr(1684)); + var u = { + target: e = ze(e), + allowsDeferredCalls: "touchstart" == a || "touchend" == a, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(t) { + for (var a = t || event, o = {}, u = 0; u < a.touches.length; ++u) { + (s = a.touches[u]).changed = !1, o[s.identifier] = s + } + for (u = 0; u < a.changedTouches.length; ++u) { + o[(s = a.changedTouches[u]).identifier] = s, s.changed = !0 + } + for (u = 0; u < a.targetTouches.length; ++u) { + var s; + o[(s = a.targetTouches[u]).identifier].onTarget = !0 + } + var c = Oe.touchEvent, + l = c; + q[l + 4 >> 2] = a.ctrlKey, q[l + 8 >> 2] = a.shiftKey, q[l + 12 >> 2] = a.altKey, q[l + 16 >> 2] = a.metaKey, l += 20; + var f = Ye(e), + d = 0; + for (var u in o) { + var m = o[u]; + if (q[l >> 2] = m.identifier, q[l + 4 >> 2] = m.screenX, q[l + 8 >> 2] = m.screenY, q[l + 12 >> 2] = m.clientX, q[l + 16 >> 2] = m.clientY, q[l + 20 >> 2] = m.pageX, q[l + 24 >> 2] = m.pageY, q[l + 28 >> 2] = m.changed, q[l + 32 >> 2] = m.onTarget, q[l + 36 >> 2] = m.clientX - f.left, q[l + 40 >> 2] = m.clientY - f.top, l += 52, ++d >= 32) break + } + q[c >> 2] = d, mt(n, i, c, r) && a.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function Dr(e, r, t, n, i, a, o) { + Oe.visibilityChangeEvent || (Oe.visibilityChangeEvent = Zr(8)); + var u = { + target: e, + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t, a, o = e || event, + u = Oe.visibilityChangeEvent; + t = u, a = ["hidden", "visible", "prerender", "unloaded"].indexOf(document.visibilityState), q[t >> 2] = document.hidden, q[t + 4 >> 2] = a, mt(n, i, u, r) && o.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + + function Fr(e, r, t, n, i, a, o) { + Oe.wheelEvent || (Oe.wheelEvent = Zr(96)); + var u = { + target: e, + allowsDeferredCalls: !0, + eventTypeString: a, + callbackfunc: n, + handlerFunc: "wheel" == a ? function(t) { + var a = t || event, + o = Oe.wheelEvent; + xr(o, a, e), X[o + 64 >> 3] = a.deltaX, X[o + 72 >> 3] = a.deltaY, X[o + 80 >> 3] = a.deltaZ, q[o + 88 >> 2] = a.deltaMode, mt(n, i, o, r) && a.preventDefault() + } : function(t) { + var a = t || event; + xr(Oe.wheelEvent, a, e), X[Oe.wheelEvent + 64 >> 3] = a.wheelDeltaX || 0; + var o = -(a.wheelDeltaY || a.wheelDelta); + X[Oe.wheelEvent + 72 >> 3] = o, X[Oe.wheelEvent + 80 >> 3] = 0, q[Oe.wheelEvent + 88 >> 2] = 0, mt(n, i, Oe.wheelEvent, r) && a.preventDefault() + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + } + var Ar = { + xhrs: [], + setu64: function(e, r) { + Q[e >> 2] = r, Q[e + 4 >> 2] = r / 4294967296 | 0 + }, + openDatabase: function(e, r, t, n) { + try { + var i = indexedDB.open(e, r) + } catch (e) { + return n(e) + } + i.onupgradeneeded = function(e) { + var r = e.target.result; + r.objectStoreNames.contains("FILES") && r.deleteObjectStore("FILES"), r.createObjectStore("FILES") + }, i.onsuccess = function(e) { + t(e.target.result) + }, i.onerror = function(e) { + n(e) + } + }, + staticInit: function() { + Ar.openDatabase("emscripten_filesystem", 1, (function(e) { + Ar.dbInstance = e, me() + }), (function() { + Ar.dbInstance = !1, me() + })), "undefined" != typeof ENVIRONMENT_IS_FETCH_WORKER && ENVIRONMENT_IS_FETCH_WORKER || de() + } + }; + + function Pr(e, r, t, n, i) { + var a = Q[e + 8 >> 2]; + if (a) { + var o = L(a), + u = e + 112, + s = L(u); + s || (s = "GET"); + Q[u + 32 >> 2]; + var c = Q[u + 52 >> 2], + l = Q[u + 56 >> 2], + f = !!Q[u + 60 >> 2], + d = (Q[u + 64 >> 2], Q[u + 68 >> 2]), + m = Q[u + 72 >> 2], + p = Q[u + 76 >> 2], + v = Q[u + 80 >> 2], + g = Q[u + 84 >> 2], + h = Q[u + 88 >> 2], + _ = !!(1 & c), + b = !!(2 & c), + y = !!(64 & c), + w = d ? L(d) : void 0, + E = m ? L(m) : void 0, + x = v ? L(v) : void 0, + k = new XMLHttpRequest; + if (k.withCredentials = f, k.open(s, o, !y, w, E), y || (k.timeout = l), k.url_ = o, k.responseType = "arraybuffer", v && k.overrideMimeType(x), p) + for (;;) { + var C = Q[p >> 2]; + if (!C) break; + var S = Q[p + 4 >> 2]; + if (!S) break; + p += 8; + var D = L(C), + F = L(S); + k.setRequestHeader(D, F) + } + Ar.xhrs.push(k); + var A = Ar.xhrs.length; + Q[e + 0 >> 2] = A; + var P = g && h ? G.slice(g, g + h) : null; + k.onload = function(n) { + var i = k.response ? k.response.byteLength : 0, + a = 0, + o = 0; + _ && !b && (a = Zr(o = i), G.set(new Uint8Array(k.response), a)), Q[e + 12 >> 2] = a, Ar.setu64(e + 16, o), Ar.setu64(e + 24, 0), i && Ar.setu64(e + 32, i), z[e + 40 >> 1] = k.readyState, 4 === k.readyState && 0 === k.status && (k.status = i > 0 ? 200 : 404), z[e + 42 >> 1] = k.status, k.statusText && B(k.statusText, e + 44, 64), k.status >= 200 && k.status < 300 ? r && r(e, k, n) : t && t(e, k, n) + }, k.onerror = function(r) { + var n = k.status; + 4 === k.readyState && 0 === n && (n = 404), Q[e + 12 >> 2] = 0, Ar.setu64(e + 16, 0), Ar.setu64(e + 24, 0), Ar.setu64(e + 32, 0), z[e + 40 >> 1] = k.readyState, z[e + 42 >> 1] = n, t && t(e, k, r) + }, k.ontimeout = function(r) { + t && t(e, k, r) + }, k.onprogress = function(r) { + var t = _ && b && k.response ? k.response.byteLength : 0, + i = 0; + _ && b && (i = Zr(t), G.set(new Uint8Array(k.response), i)), Q[e + 12 >> 2] = i, Ar.setu64(e + 16, t), Ar.setu64(e + 24, r.loaded - t), Ar.setu64(e + 32, r.total), z[e + 40 >> 1] = k.readyState, k.readyState >= 3 && 0 === k.status && r.loaded > 0 && (k.status = 200), z[e + 42 >> 1] = k.status, k.statusText && B(k.statusText, e + 44, 64), n && n(e, k, r) + }, k.onreadystatechange = function(r) { + z[e + 40 >> 1] = k.readyState, k.readyState >= 2 && (z[e + 42 >> 1] = k.status), i && i(e, k, r) + }; + try { + k.send(P) + } catch (r) { + t && t(e, k, r) + } + } else t(e, 0, "no url specified!") + } + + function Tr(e, r, t, n, i) { + if (e) { + var a = Q[r + 112 + 64 >> 2]; + a || (a = Q[r + 8 >> 2]); + var o = L(a); + try { + var u = e.transaction(["FILES"], "readwrite").objectStore("FILES").put(t, o); + u.onsuccess = function(e) { + z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 200, B("OK", r + 44, 64), n(r, 0, o) + }, u.onerror = function(e) { + z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 413, B("Payload Too Large", r + 44, 64), i(r, 0, e) + } + } catch (e) { + i(r, 0, e) + } + } else i(r, 0, "IndexedDB not available!") + } + var Lr = {}; + + function Ir() { + if (!Ir.strings) { + var e = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: ("object" == typeof navigator && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", + _: l || "./this.program" + }; + for (var r in Lr) e[r] = Lr[r]; + var t = []; + for (var r in e) t.push(r + "=" + e[r]); + Ir.strings = t + } + return Ir.strings + } + var Br = (B("GMT", 1052560, 4), 1052560); + + function Rr() { + if (!Rr.called) { + Rr.called = !0, q[tt() >> 2] = 60 * (new Date).getTimezoneOffset(); + var e = (new Date).getFullYear(), + r = new Date(e, 0, 1), + t = new Date(e, 6, 1); + q[rt() >> 2] = Number(r.getTimezoneOffset() != t.getTimezoneOffset()); + var n = u(r), + i = u(t), + a = M(n), + o = M(i); + t.getTimezoneOffset() < r.getTimezoneOffset() ? (q[et() >> 2] = a, q[et() + 4 >> 2] = o) : (q[et() >> 2] = o, q[et() + 4 >> 2] = a) + } + + function u(e) { + var r = e.toTimeString().match(/\(([A-Za-z ]+)\)$/); + return r ? r[1] : "GMT" + } + } + + function Mr(e, r) { + Rr(); + var t = new Date(1e3 * q[e >> 2]); + q[r >> 2] = t.getSeconds(), q[r + 4 >> 2] = t.getMinutes(), q[r + 8 >> 2] = t.getHours(), q[r + 12 >> 2] = t.getDate(), q[r + 16 >> 2] = t.getMonth(), q[r + 20 >> 2] = t.getFullYear() - 1900, q[r + 24 >> 2] = t.getDay(); + var n = new Date(t.getFullYear(), 0, 1), + i = (t.getTime() - n.getTime()) / 864e5 | 0; + q[r + 28 >> 2] = i, q[r + 36 >> 2] = -60 * t.getTimezoneOffset(); + var a = new Date(t.getFullYear(), 6, 1).getTimezoneOffset(), + o = n.getTimezoneOffset(), + u = 0 | (a != o && t.getTimezoneOffset() == Math.min(o, a)); + q[r + 32 >> 2] = u; + var s = q[et() + (u ? 4 : 0) >> 2]; + return q[r + 40 >> 2] = s, r + } + + function Nr(e) { + for (var r = ke(); ke() - r < e / 1e3;); + } + + function Ur(e, r) { + Ur.array || (Ur.array = []); + var t, n = Ur.array; + for (n.length = 0; t = G[e++];) 100 === t || 102 === t ? (r = r + 7 & -8, n.push(X[r >> 3]), r += 8) : (r = r + 3 & -4, n.push(q[r >> 2]), r += 4); + return n + } + var Or, Gr = function(e, r, t, n) { + e || (e = this), this.parent = e, this.mount = e.mount, this.mounted = null, this.id = Pe.nextInode++, this.name = r, this.mode = t, this.node_ops = {}, this.stream_ops = {}, this.rdev = n + }, + jr = 365, + zr = 146; + Object.defineProperties(Gr.prototype, { + read: { + get: function() { + return (this.mode & jr) === jr + }, + set: function(e) { + e ? this.mode |= jr : this.mode &= -366 + } + }, + write: { + get: function() { + return (this.mode & zr) === zr + }, + set: function(e) { + e ? this.mode |= zr : this.mode &= -147 + } + }, + isFolder: { + get: function() { + return Pe.isDir(this.mode) + } + }, + isDevice: { + get: function() { + return Pe.isChrdev(this.mode) + } + } + }), Pe.FSNode = Gr, Pe.staticInit(), r.FS_createFolder = Pe.createFolder, r.FS_createPath = Pe.createPath, r.FS_createDataFile = Pe.createDataFile, r.FS_createPreloadedFile = Pe.createPreloadedFile, r.FS_createLazyFile = Pe.createLazyFile, r.FS_createLink = Pe.createLink, r.FS_createDevice = Pe.createDevice, r.FS_unlink = Pe.unlink, r.requestFullscreen = function(e, r) { + Be.requestFullscreen(e, r) + }, r.requestAnimationFrame = function(e) { + Be.requestAnimationFrame(e) + }, r.setCanvasSize = function(e, r, t) { + Be.setCanvasSize(e, r, t) + }, r.pauseMainLoop = function() { + Be.mainLoop.pause() + }, r.resumeMainLoop = function() { + Be.mainLoop.resume() + }, r.getUserMedia = function() { + Be.getUserMedia() + }, r.createContext = function(e, r, t, n) { + return Be.createContext(e, r, t, n) + }, Ue.init(); + for (var qr = 0; qr < 32; qr++) tr.push(new Array(qr)); + Ar.staticInit(); + + function Qr(e, r, t) { + var n = t > 0 ? t : R(e) + 1, + i = new Array(n), + a = I(e, i, 0, i.length); + return r && (i.length = a), i + } + var Vr = { + __cxa_atexit: function(e, r) { + return t = e, n = r, void ee.unshift({ + func: t, + arg: n + }); + var t, n + }, + __sys_fcntl64: function(e, r, t) { + Te.varargs = t; + try { + var n = Te.getStreamFromFD(e); + switch (r) { + case 0: + return (i = Te.get()) < 0 ? -28 : Pe.open(n.path, n.flags, 0, i).fd; + case 1: + case 2: + return 0; + case 3: + return n.flags; + case 4: + var i = Te.get(); + return n.flags |= i, 0; + case 12: + i = Te.get(); + return j[i + 0 >> 1] = 2, 0; + case 13: + case 14: + return 0; + case 16: + case 8: + return -28; + case 9: + return xe(28), -1; + default: + return -28 + } + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno + } + }, + __sys_fstat64: function(e, r) { + try { + var t = Te.getStreamFromFD(e); + return Te.doStat(Pe.stat, t.path, r) + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno + } + }, + __sys_ioctl: function(e, r, t) { + Te.varargs = t; + try { + var n = Te.getStreamFromFD(e); + switch (r) { + case 21509: + case 21505: + return n.tty ? 0 : -59; + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: + return n.tty ? 0 : -59; + case 21519: + if (!n.tty) return -59; + var i = Te.get(); + return q[i >> 2] = 0, 0; + case 21520: + return n.tty ? -28 : -59; + case 21531: + i = Te.get(); + return Pe.ioctl(n, r, i); + case 21523: + case 21524: + return n.tty ? 0 : -59; + default: + pe("bad ioctl syscall " + r) + } + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno + } + }, + __sys_open: function(e, r, t) { + Te.varargs = t; + try { + var n = Te.getStr(e), + i = Te.get(); + return Pe.open(n, r, i).fd + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno + } + }, + __sys_stat64: function(e, r) { + try { + return e = Te.getStr(e), Te.doStat(Pe.stat, e, r) + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), -e.errno + } + }, + _emscripten_fetch_free: function(e) { + delete Ar.xhrs[e - 1] + }, + abort: function() { + pe() + }, + alBufferData: function(e, r, t, n, i) { + if (Re.currentCtx) { + var a = Re.buffers[e]; + if (a) + if (i <= 0) Re.currentCtx.err = 40963; + else { + var o = null; + try { + switch (r) { + case 4352: + if (n > 0) + for (var u = (o = Re.currentCtx.audioCtx.createBuffer(1, n, i)).getChannelData(0), s = 0; s < n; ++s) u[s] = .0078125 * G[t++] - 1; + a.bytesPerSample = 1, a.channels = 1, a.length = n; + break; + case 4353: + if (n > 0) { + u = (o = Re.currentCtx.audioCtx.createBuffer(1, n >> 1, i)).getChannelData(0); + t >>= 1; + for (s = 0; s < n >> 1; ++s) u[s] = 30517578125e-15 * j[t++] + } + a.bytesPerSample = 2, a.channels = 1, a.length = n >> 1; + break; + case 4354: + if (n > 0) { + u = (o = Re.currentCtx.audioCtx.createBuffer(2, n >> 1, i)).getChannelData(0); + var c = o.getChannelData(1); + for (s = 0; s < n >> 1; ++s) u[s] = .0078125 * G[t++] - 1, c[s] = .0078125 * G[t++] - 1 + } + a.bytesPerSample = 1, a.channels = 2, a.length = n >> 1; + break; + case 4355: + if (n > 0) { + u = (o = Re.currentCtx.audioCtx.createBuffer(2, n >> 2, i)).getChannelData(0), c = o.getChannelData(1); + t >>= 1; + for (s = 0; s < n >> 2; ++s) u[s] = 30517578125e-15 * j[t++], c[s] = 30517578125e-15 * j[t++] + } + a.bytesPerSample = 2, a.channels = 2, a.length = n >> 2; + break; + case 65552: + if (n > 0) { + u = (o = Re.currentCtx.audioCtx.createBuffer(1, n >> 2, i)).getChannelData(0); + t >>= 2; + for (s = 0; s < n >> 2; ++s) u[s] = V[t++] + } + a.bytesPerSample = 4, a.channels = 1, a.length = n >> 2; + break; + case 65553: + if (n > 0) { + u = (o = Re.currentCtx.audioCtx.createBuffer(2, n >> 3, i)).getChannelData(0), c = o.getChannelData(1); + t >>= 2; + for (s = 0; s < n >> 3; ++s) u[s] = V[t++], c[s] = V[t++] + } + a.bytesPerSample = 4, a.channels = 2, a.length = n >> 3; + break; + default: + return void(Re.currentCtx.err = 40963) + } + a.frequency = i, a.audioBuf = o + } catch (e) { + return void(Re.currentCtx.err = 40963) + } + } + else Re.currentCtx.err = 40963 + } + }, + alDeleteBuffers: function(e, r) { + if (Re.currentCtx) { + for (var t = 0; t < e; ++t) { + if (0 !== (n = q[r + 4 * t >> 2])) { + if (!Re.buffers[n]) return void(Re.currentCtx.err = 40961); + if (Re.buffers[n].refCount) return void(Re.currentCtx.err = 40964) + } + } + for (t = 0; t < e; ++t) { + var n; + 0 !== (n = q[r + 4 * t >> 2]) && (Re.deviceRefCounts[Re.buffers[n].deviceId]--, delete Re.buffers[n], Re.freeIds.push(n)) + } + } + }, + alDeleteSources: function(e, r) { + if (Re.currentCtx) { + for (var t = 0; t < e; ++t) { + var n = q[r + 4 * t >> 2]; + if (!Re.currentCtx.sources[n]) return void(Re.currentCtx.err = 40961) + } + for (t = 0; t < e; ++t) { + n = q[r + 4 * t >> 2]; + Re.setSourceState(Re.currentCtx.sources[n], 4116), Me(n, 4105, 0), delete Re.currentCtx.sources[n], Re.freeIds.push(n) + } + } + }, + alGenBuffers: function(e, r) { + if (Re.currentCtx) + for (var t = 0; t < e; ++t) { + var n = { + deviceId: Re.currentCtx.deviceId, + id: Re.newId(), + refCount: 0, + audioBuf: null, + frequency: 0, + bytesPerSample: 2, + channels: 1, + length: 0 + }; + Re.deviceRefCounts[n.deviceId]++, Re.buffers[n.id] = n, q[r + 4 * t >> 2] = n.id + } + }, + alGenSources: function(e, r) { + if (Re.currentCtx) + for (var t = 0; t < e; ++t) { + var n = Re.currentCtx.audioCtx.createGain(); + n.connect(Re.currentCtx.gain); + var i = { + context: Re.currentCtx, + id: Re.newId(), + type: 4144, + state: 4113, + bufQueue: [Re.buffers[0]], + audioQueue: [], + looping: !1, + pitch: 1, + dopplerShift: 1, + gain: n, + minGain: 0, + maxGain: 1, + panner: null, + bufsProcessed: 0, + bufStartTime: Number.NEGATIVE_INFINITY, + bufOffset: 0, + relative: !1, + refDistance: 1, + maxDistance: 340282e33, + rolloffFactor: 1, + position: [0, 0, 0], + velocity: [0, 0, 0], + direction: [0, 0, 0], + coneOuterGain: 0, + coneInnerAngle: 360, + coneOuterAngle: 360, + distanceModel: 53250, + spatialize: 2, + get playbackRate() { + return this.pitch * this.dopplerShift + } + }; + Re.currentCtx.sources[i.id] = i, q[r + 4 * t >> 2] = i.id + } + }, + alGetSourcei: function(e, r, t) { + var n = Re.getSourceParam("alGetSourcei", e, r); + if (null !== n) + if (t) switch (r) { + case 514: + case 4097: + case 4098: + case 4103: + case 4105: + case 4112: + case 4117: + case 4118: + case 4128: + case 4129: + case 4131: + case 4132: + case 4133: + case 4134: + case 4135: + case 4628: + case 8201: + case 8202: + case 53248: + q[t >> 2] = n; + break; + default: + return void(Re.currentCtx.err = 40962) + } else Re.currentCtx.err = 40963 + }, + alSource3i: function(e, r, t, n, i) { + switch (r) { + case 4100: + case 4101: + case 4102: + Re.paramArray[0] = t, Re.paramArray[1] = n, Re.paramArray[2] = i, Re.setSourceParam("alSource3i", e, r, Re.paramArray); + break; + default: + Re.setSourceParam("alSource3i", e, r, null) + } + }, + alSourcePlay: function(e) { + if (Re.currentCtx) { + var r = Re.currentCtx.sources[e]; + r ? Re.setSourceState(r, 4114) : Re.currentCtx.err = 40961 + } + }, + alSourceQueueBuffers: function(e, r, t) { + if (Re.currentCtx) { + var n = Re.currentCtx.sources[e]; + if (n) + if (4136 !== n.type) { + if (0 !== r) { + for (var i = Re.buffers[0], a = 0; a < n.bufQueue.length; a++) + if (0 !== n.bufQueue[a].id) { + i = n.bufQueue[a]; + break + } for (a = 0; a < r; ++a) { + var o = q[t + 4 * a >> 2]; + if (!(u = Re.buffers[o])) return void(Re.currentCtx.err = 40961); + 0 === i.id || u.frequency === i.frequency && u.bytesPerSample === i.bytesPerSample && u.channels === i.channels || (Re.currentCtx.err = 40964) + } + 1 === n.bufQueue.length && 0 === n.bufQueue[0].id && (n.bufQueue.length = 0), n.type = 4137; + for (a = 0; a < r; ++a) { + var u; + o = q[t + 4 * a >> 2]; + (u = Re.buffers[o]).refCount++, n.bufQueue.push(u) + } + n.looping && Re.cancelPendingSourceAudio(n), Re.initSourcePanner(n), Re.scheduleSourceAudio(n) + } + } else Re.currentCtx.err = 40964; + else Re.currentCtx.err = 40961 + } + }, + alSourceStop: function(e) { + if (Re.currentCtx) { + var r = Re.currentCtx.sources[e]; + r ? Re.setSourceState(r, 4116) : Re.currentCtx.err = 40961 + } + }, + alSourceUnqueueBuffers: function(e, r, t) { + if (Re.currentCtx) { + var n = Re.currentCtx.sources[e]; + if (n) { + if (r > (1 === n.bufQueue.length && 0 === n.bufQueue[0].id ? 0 : n.bufsProcessed)) Re.currentCtx.err = 40963; + else if (0 !== r) { + for (var i = 0; i < r; i++) { + var a = n.bufQueue.shift(); + a.refCount--, q[t + 4 * i >> 2] = a.id, n.bufsProcessed-- + } + 0 === n.bufQueue.length && n.bufQueue.push(Re.buffers[0]), Re.initSourcePanner(n), Re.scheduleSourceAudio(n) + } + } else Re.currentCtx.err = 40961 + } + }, + alSourcef: function(e, r, t) { + switch (r) { + case 4097: + case 4098: + case 4099: + case 4106: + case 4109: + case 4110: + case 4128: + case 4129: + case 4130: + case 4131: + case 4132: + case 4133: + case 4134: + case 8203: + Re.setSourceParam("alSourcef", e, r, t); + break; + default: + Re.setSourceParam("alSourcef", e, r, null) + } + }, + alSourcei: Me, + alcCloseDevice: function(e) { + return !(e in Re.deviceRefCounts) || Re.deviceRefCounts[e] > 0 ? 0 : (delete Re.deviceRefCounts[e], Re.freeIds.push(e), 1) + }, + alcCreateContext: function(e, t) { + if (!(e in Re.deviceRefCounts)) return Re.alcErr = 40961, 0; + var n = null, + i = [], + a = null; + if (t >>= 2) + for (var o = 0, u = 0; o = q[t++], i.push(o), 0 !== o;) switch (u = q[t++], i.push(u), o) { + case 4103: + n || (n = {}), n.sampleRate = u; + break; + case 4112: + case 4113: + break; + case 6546: + switch (u) { + case 0: + a = !1; + break; + case 1: + a = !0; + break; + case 2: + break; + default: + return Re.alcErr = 40964, 0 + } + break; + case 6550: + if (0 !== u) return Re.alcErr = 40964, 0; + break; + default: + return Re.alcErr = 40964, 0 + } + var s = window.AudioContext || window.webkitAudioContext, + c = null; + try { + c = n ? new s(n) : new s + } catch (e) { + return "NotSupportedError" === e.name ? Re.alcErr = 40964 : Re.alcErr = 40961, 0 + }! function(e, t) { + t || (t = [document, r.canvas]), ["keydown", "mousedown", "touchstart"].forEach((function(r) { + t.forEach((function(t) { + t && function(e, r, t) { + e.addEventListener(r, t, { + once: !0 + }) + }(t, r, (function() { + "suspended" === e.state && e.resume().then((() => {})) + })) + })) + })) + }(c), void 0 === c.createGain && (c.createGain = c.createGainNode); + var l = c.createGain(); + l.connect(c.destination); + var f = { + deviceId: e, + id: Re.newId(), + attrs: i, + audioCtx: c, + listener: { + position: [0, 0, 0], + velocity: [0, 0, 0], + direction: [0, 0, 0], + up: [0, 0, 0] + }, + sources: [], + interval: setInterval((function() { + Re.scheduleContextAudio(f) + }), Re.QUEUE_INTERVAL), + gain: l, + distanceModel: 53250, + speedOfSound: 343.3, + dopplerFactor: 1, + sourceDistanceModel: !1, + hrtf: a || !1, + _err: 0, + get err() { + return this._err + }, + set err(e) { + 0 !== this._err && 0 !== e || (this._err = e) + } + }; + if (Re.deviceRefCounts[e]++, Re.contexts[f.id] = f, null !== a) + for (var d in Re.contexts) { + var m = Re.contexts[d]; + m.deviceId === e && (m.hrtf = a, Re.updateContextGlobal(m)) + } + return f.id + }, + alcDestroyContext: function(e) { + var r = Re.contexts[e]; + Re.currentCtx !== r ? (Re.contexts[e].interval && clearInterval(Re.contexts[e].interval), Re.deviceRefCounts[r.deviceId]--, delete Re.contexts[e], Re.freeIds.push(e)) : Re.alcErr = 40962 + }, + alcGetIntegerv: function(e, r, t, n) { + if (0 !== t && n) switch (r) { + case 4096: + case 4097: + q[n >> 2] = 1; + break; + case 4098: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + if (!Re.currentCtx) return void(Re.alcErr = 40962); + q[n >> 2] = Re.currentCtx.attrs.length; + break; + case 4099: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + if (!Re.currentCtx) return void(Re.alcErr = 40962); + for (var i = 0; i < Re.currentCtx.attrs.length; i++) q[n + 4 * i >> 2] = Re.currentCtx.attrs[i]; + break; + case 4103: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + if (!Re.currentCtx) return void(Re.alcErr = 40962); + q[n >> 2] = Re.currentCtx.audioCtx.sampleRate; + break; + case 4112: + case 4113: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + if (!Re.currentCtx) return void(Re.alcErr = 40962); + q[n >> 2] = 2147483647; + break; + case 6546: + case 6547: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + var a = 0; + for (var o in Re.contexts) { + var u = Re.contexts[o]; + u.deviceId === e && (a = u.hrtf ? 1 : 0) + } + q[n >> 2] = a; + break; + case 6548: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + q[n >> 2] = 1; + break; + case 131075: + if (!(e in Re.deviceRefCounts)) return void(Re.alcErr = 40961); + if (!Re.currentCtx) return void(Re.alcErr = 40962); + q[n >> 2] = 1; + case 786: + var s = Re.requireValidCaptureDevice(e, "alcGetIntegerv"); + if (!s) return; + var c = s.capturedFrameCount, + l = s.requestedSampleRate, + f = s.audioCtx.sampleRate, + d = Math.floor(c * (l / f)); + q[n >> 2] = d; + break; + default: + return void(Re.alcErr = 40963) + } + }, + alcMakeContextCurrent: function(e) { + return 0 === e ? (Re.currentCtx = null, 0) : (Re.currentCtx = Re.contexts[e], 1) + }, + alcOpenDevice: function(e) { + if (e && L(e) !== Re.DEVICE_NAME) return 0; + if ("undefined" != typeof AudioContext || "undefined" != typeof webkitAudioContext) { + var r = Re.newId(); + return Re.deviceRefCounts[r] = 0, r + } + return 0 + }, + changeCursor: function(e) { + const t = r.canvas; + t && (t.style.cursor = L(e)) + }, + clock_gettime: function(e, r) { + var t; + if (0 === e) t = Date.now(); + else { + if (1 !== e && 4 !== e) return xe(28), -1; + t = ke() + } + return q[r >> 2] = t / 1e3 | 0, q[r + 4 >> 2] = t % 1e3 * 1e3 * 1e3 | 0, 0 + }, + dlclose: function(e) { + pe("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking") + }, + eglBindAPI: function(e) { + return 12448 == e ? (Ne.setErrorCode(12288), 1) : (Ne.setErrorCode(12300), 0) + }, + eglChooseConfig: function(e, r, t, n, i) { + return Ne.chooseConfig(e, r, t, n, i) + }, + eglCreateContext: function(e, t, n, i) { + if (62e3 != e) return Ne.setErrorCode(12296), 0; + for (var a = 1;;) { + var o = q[i >> 2]; + if (12440 != o) { + if (12344 == o) break; + return Ne.setErrorCode(12292), 0 + } + a = q[i + 4 >> 2], i += 8 + } + return a < 2 || a > 3 ? (Ne.setErrorCode(12293), 0) : (Ne.contextAttributes.majorVersion = a - 1, Ne.contextAttributes.minorVersion = 0, Ne.context = Ue.createContext(r.canvas, Ne.contextAttributes), 0 != Ne.context ? (Ne.setErrorCode(12288), Ue.makeContextCurrent(Ne.context), r.useWebGL = !0, Be.moduleContextCreatedCallbacks.forEach((function(e) { + e() + })), Ue.makeContextCurrent(null), 62004) : (Ne.setErrorCode(12297), 0)) + }, + eglCreateWindowSurface: function(e, r, t, n) { + return 62e3 != e ? (Ne.setErrorCode(12296), 0) : 62002 != r ? (Ne.setErrorCode(12293), 0) : (Ne.setErrorCode(12288), 62006) + }, + eglDestroyContext: function(e, r) { + return 62e3 != e ? (Ne.setErrorCode(12296), 0) : 62004 != r ? (Ne.setErrorCode(12294), 0) : (Ue.deleteContext(Ne.context), Ne.setErrorCode(12288), Ne.currentContext == r && (Ne.currentContext = 0), 1) + }, + eglDestroySurface: function(e, r) { + return 62e3 != e ? (Ne.setErrorCode(12296), 0) : 62006 != r ? (Ne.setErrorCode(12301), 1) : (Ne.currentReadSurface == r && (Ne.currentReadSurface = 0), Ne.currentDrawSurface == r && (Ne.currentDrawSurface = 0), Ne.setErrorCode(12288), 1) + }, + eglGetConfigAttrib: function(e, r, t, n) { + if (62e3 != e) return Ne.setErrorCode(12296), 0; + if (62002 != r) return Ne.setErrorCode(12293), 0; + if (!n) return Ne.setErrorCode(12300), 0; + switch (Ne.setErrorCode(12288), t) { + case 12320: + return q[n >> 2] = Ne.contextAttributes.alpha ? 32 : 24, 1; + case 12321: + return q[n >> 2] = Ne.contextAttributes.alpha ? 8 : 0, 1; + case 12322: + case 12323: + case 12324: + return q[n >> 2] = 8, 1; + case 12325: + return q[n >> 2] = Ne.contextAttributes.depth ? 24 : 0, 1; + case 12326: + return q[n >> 2] = Ne.contextAttributes.stencil ? 8 : 0, 1; + case 12327: + return q[n >> 2] = 12344, 1; + case 12328: + return q[n >> 2] = 62002, 1; + case 12329: + return q[n >> 2] = 0, 1; + case 12330: + return q[n >> 2] = 4096, 1; + case 12331: + return q[n >> 2] = 16777216, 1; + case 12332: + return q[n >> 2] = 4096, 1; + case 12333: + case 12334: + return q[n >> 2] = 0, 1; + case 12335: + return q[n >> 2] = 12344, 1; + case 12337: + return q[n >> 2] = Ne.contextAttributes.antialias ? 4 : 0, 1; + case 12338: + return q[n >> 2] = Ne.contextAttributes.antialias ? 1 : 0, 1; + case 12339: + return q[n >> 2] = 4, 1; + case 12340: + return q[n >> 2] = 12344, 1; + case 12341: + case 12342: + case 12343: + return q[n >> 2] = -1, 1; + case 12345: + case 12346: + case 12347: + return q[n >> 2] = 0, 1; + case 12348: + return q[n >> 2] = 1, 1; + case 12349: + case 12350: + return q[n >> 2] = 0, 1; + case 12351: + return q[n >> 2] = 12430, 1; + case 12352: + return q[n >> 2] = 4, 1; + case 12354: + return q[n >> 2] = 0, 1; + default: + return Ne.setErrorCode(12292), 0 + } + }, + eglGetDisplay: function(e) { + return Ne.setErrorCode(12288), 62e3 + }, + eglGetError: function() { + return Ne.errorCode + }, + eglGetProcAddress: function(e) { + return Jr(e) + }, + eglInitialize: function(e, r, t) { + return 62e3 == e ? (r && (q[r >> 2] = 1), t && (q[t >> 2] = 4), Ne.defaultDisplayInitialized = !0, Ne.setErrorCode(12288), 1) : (Ne.setErrorCode(12296), 0) + }, + eglMakeCurrent: function(e, r, t, n) { + return 62e3 != e ? (Ne.setErrorCode(12296), 0) : 0 != n && 62004 != n ? (Ne.setErrorCode(12294), 0) : 0 != t && 62006 != t || 0 != r && 62006 != r ? (Ne.setErrorCode(12301), 0) : (Ue.makeContextCurrent(n ? Ne.context : null), Ne.currentContext = n, Ne.currentDrawSurface = r, Ne.currentReadSurface = t, Ne.setErrorCode(12288), 1) + }, + eglQueryString: function(e, r) { + if (62e3 != e) return Ne.setErrorCode(12296), 0; + if (Ne.setErrorCode(12288), Ne.stringCache[r]) return Ne.stringCache[r]; + var t; + switch (r) { + case 12371: + t = M("Emscripten"); + break; + case 12372: + t = M("1.4 Emscripten EGL"); + break; + case 12373: + t = M(""); + break; + case 12429: + t = M("OpenGL_ES"); + break; + default: + return Ne.setErrorCode(12300), 0 + } + return Ne.stringCache[r] = t, t + }, + eglSwapBuffers: function() { + if (Ne.defaultDisplayInitialized) + if (r.ctx) { + if (!r.ctx.isContextLost()) return Ne.setErrorCode(12288), 1; + Ne.setErrorCode(12302) + } else Ne.setErrorCode(12290); + else Ne.setErrorCode(12289); + return 0 + }, + eglSwapInterval: function(e, r) { + return 62e3 != e ? (Ne.setErrorCode(12296), 0) : (0 == r ? Le(0, 0) : Le(1, r), Ne.setErrorCode(12288), 1) + }, + eglTerminate: function(e) { + return 62e3 != e ? (Ne.setErrorCode(12296), 0) : (Ne.currentContext = 0, Ne.currentReadSurface = 0, Ne.currentDrawSurface = 0, Ne.defaultDisplayInitialized = !1, Ne.setErrorCode(12288), 1) + }, + eglWaitGL: function() { + return Ne.setErrorCode(12288), 1 + }, + eglWaitNative: function(e) { + return Ne.setErrorCode(12288), 1 + }, + emscripten_asm_const_iii: function(e, r, t) { + var n = Ur(r, t); + return we[e].apply(null, n) + }, + emscripten_cancel_main_loop: function() { + Be.mainLoop.pause(), Be.mainLoop.func = null + }, + emscripten_exit_fullscreen: function() { + if (!Oe.fullscreenEnabled()) return -1; + Oe.removeDeferredCalls(Ke); + var e = je[1]; + if (e.exitFullscreen) e.fullscreenElement && e.exitFullscreen(); + else { + if (!e.webkitExitFullscreen) return -1; + e.webkitFullscreenElement && e.webkitExitFullscreen() + } + return 0 + }, + emscripten_exit_pointerlock: function() { + if (Oe.removeDeferredCalls($e), document.exitPointerLock) document.exitPointerLock(); + else { + if (!document.msExitPointerLock) return -1; + document.msExitPointerLock() + } + return 0 + }, + emscripten_get_canvas_element_id: function(e) { + const t = document && document.location || null, + n = t && t.origin || "unknown", + i = t && t.pathname || "unknown"; + r.ga("event", n, { + event_category: "license", + event_label: i, + non_interaction: !0, + send_to: r.gid + }) + }, + emscripten_get_canvas_element_size: Qe, + emscripten_get_device_pixel_ratio: function() { + return devicePixelRatio + }, + emscripten_get_element_css_size: function(e, r, t) { + if (!(e = ze(e))) return -4; + var n = Ye(e); + return X[r >> 3] = n.width, X[t >> 3] = n.height, 0 + }, + emscripten_get_fullscreen_status: function(e) { + return Oe.fullscreenEnabled() ? (Je(e), 0) : -1 + }, + emscripten_get_gamepad_status: function(e, r) { + return e < 0 || e >= Oe.lastGamepadState.length ? -5 : Oe.lastGamepadState[e] ? (er(r, Oe.lastGamepadState[e]), 0) : -7 + }, + emscripten_get_now: ke, + emscripten_get_num_gamepads: function() { + return Oe.lastGamepadState.length + }, + emscripten_get_sbrk_ptr: function() { + return 1052496 + }, + emscripten_glActiveTexture: function(e) { + Or.activeTexture(e) + }, + emscripten_glAttachShader: function(e, r) { + Or.attachShader(Ue.programs[e], Ue.shaders[r]) + }, + emscripten_glBeginQuery: function(e, r) { + Or.beginQuery(e, Ue.queries[r]) + }, + emscripten_glBeginQueryEXT: function(e, r) { + Or.disjointTimerQueryExt.beginQueryEXT(e, Ue.timerQueriesEXT[r]) + }, + emscripten_glBeginTransformFeedback: function(e) { + Or.beginTransformFeedback(e) + }, + emscripten_glBindAttribLocation: function(e, r, t) { + Or.bindAttribLocation(Ue.programs[e], r, L(t)) + }, + emscripten_glBindBuffer: function(e, r) { + 35051 == e ? Or.currentPixelPackBufferBinding = r : 35052 == e && (Or.currentPixelUnpackBufferBinding = r), Or.bindBuffer(e, Ue.buffers[r]) + }, + emscripten_glBindBufferBase: function(e, r, t) { + Or.bindBufferBase(e, r, Ue.buffers[t]) + }, + emscripten_glBindBufferRange: function(e, r, t, n, i) { + Or.bindBufferRange(e, r, Ue.buffers[t], n, i) + }, + emscripten_glBindFramebuffer: function(e, r) { + Or.bindFramebuffer(e, Ue.framebuffers[r]) + }, + emscripten_glBindRenderbuffer: function(e, r) { + Or.bindRenderbuffer(e, Ue.renderbuffers[r]) + }, + emscripten_glBindSampler: function(e, r) { + Or.bindSampler(e, Ue.samplers[r]) + }, + emscripten_glBindTexture: function(e, r) { + Or.bindTexture(e, Ue.textures[r]) + }, + emscripten_glBindTransformFeedback: function(e, r) { + Or.bindTransformFeedback(e, Ue.transformFeedbacks[r]) + }, + emscripten_glBindVertexArray: function(e) { + Or.bindVertexArray(Ue.vaos[e]) + }, + emscripten_glBindVertexArrayOES: function(e) { + Or.bindVertexArray(Ue.vaos[e]) + }, + emscripten_glBlendColor: function(e, r, t, n) { + Or.blendColor(e, r, t, n) + }, + emscripten_glBlendEquation: function(e) { + Or.blendEquation(e) + }, + emscripten_glBlendEquationSeparate: function(e, r) { + Or.blendEquationSeparate(e, r) + }, + emscripten_glBlendFunc: function(e, r) { + Or.blendFunc(e, r) + }, + emscripten_glBlendFuncSeparate: function(e, r, t, n) { + Or.blendFuncSeparate(e, r, t, n) + }, + emscripten_glBlitFramebuffer: function(e, r, t, n, i, a, o, u, s, c) { + Or.blitFramebuffer(e, r, t, n, i, a, o, u, s, c) + }, + emscripten_glBufferData: function(e, r, t, n) { + Ue.currentContext.version >= 2 ? t ? Or.bufferData(e, G, n, t, r) : Or.bufferData(e, r, n) : Or.bufferData(e, t ? G.subarray(t, t + r) : r, n) + }, + emscripten_glBufferSubData: function(e, r, t, n) { + Ue.currentContext.version >= 2 ? Or.bufferSubData(e, r, G, n, t) : Or.bufferSubData(e, r, G.subarray(n, n + t)) + }, + emscripten_glCheckFramebufferStatus: function(e) { + return Or.checkFramebufferStatus(e) + }, + emscripten_glClear: function(e) { + Or.clear(e) + }, + emscripten_glClearBufferfi: function(e, r, t, n) { + Or.clearBufferfi(e, r, t, n) + }, + emscripten_glClearBufferfv: function(e, r, t) { + Or.clearBufferfv(e, r, V, t >> 2) + }, + emscripten_glClearBufferiv: function(e, r, t) { + Or.clearBufferiv(e, r, q, t >> 2) + }, + emscripten_glClearBufferuiv: function(e, r, t) { + Or.clearBufferuiv(e, r, Q, t >> 2) + }, + emscripten_glClearColor: function(e, r, t, n) { + Or.clearColor(e, r, t, n) + }, + emscripten_glClearDepthf: function(e) { + Or.clearDepth(e) + }, + emscripten_glClearStencil: function(e) { + Or.clearStencil(e) + }, + emscripten_glClientWaitSync: function(e, r, t, n) { + return Or.clientWaitSync(Ue.syncs[e], r, rr(t, n)) + }, + emscripten_glColorMask: function(e, r, t, n) { + Or.colorMask(!!e, !!r, !!t, !!n) + }, + emscripten_glCompileShader: function(e) { + Or.compileShader(Ue.shaders[e]) + }, + emscripten_glCompressedTexImage2D: function(e, r, t, n, i, a, o, u) { + Ue.currentContext.version >= 2 ? Or.currentPixelUnpackBufferBinding ? Or.compressedTexImage2D(e, r, t, n, i, a, o, u) : Or.compressedTexImage2D(e, r, t, n, i, a, G, u, o) : Or.compressedTexImage2D(e, r, t, n, i, a, u ? G.subarray(u, u + o) : null) + }, + emscripten_glCompressedTexImage3D: function(e, r, t, n, i, a, o, u, s) { + Or.currentPixelUnpackBufferBinding ? Or.compressedTexImage3D(e, r, t, n, i, a, o, u, s) : Or.compressedTexImage3D(e, r, t, n, i, a, o, G, s, u) + }, + emscripten_glCompressedTexSubImage2D: function(e, r, t, n, i, a, o, u, s) { + Ue.currentContext.version >= 2 ? Or.currentPixelUnpackBufferBinding ? Or.compressedTexSubImage2D(e, r, t, n, i, a, o, u, s) : Or.compressedTexSubImage2D(e, r, t, n, i, a, o, G, s, u) : Or.compressedTexSubImage2D(e, r, t, n, i, a, o, s ? G.subarray(s, s + u) : null) + }, + emscripten_glCompressedTexSubImage3D: function(e, r, t, n, i, a, o, u, s, c, l) { + Or.currentPixelUnpackBufferBinding ? Or.compressedTexSubImage3D(e, r, t, n, i, a, o, u, s, c, l) : Or.compressedTexSubImage3D(e, r, t, n, i, a, o, u, s, G, l, c) + }, + emscripten_glCopyBufferSubData: function(e, r, t, n, i) { + Or.copyBufferSubData(e, r, t, n, i) + }, + emscripten_glCopyTexImage2D: function(e, r, t, n, i, a, o, u) { + Or.copyTexImage2D(e, r, t, n, i, a, o, u) + }, + emscripten_glCopyTexSubImage2D: function(e, r, t, n, i, a, o, u) { + Or.copyTexSubImage2D(e, r, t, n, i, a, o, u) + }, + emscripten_glCopyTexSubImage3D: function(e, r, t, n, i, a, o, u, s) { + Or.copyTexSubImage3D(e, r, t, n, i, a, o, u, s) + }, + emscripten_glCreateProgram: function() { + var e = Ue.getNewId(Ue.programs), + r = Or.createProgram(); + return r.name = e, Ue.programs[e] = r, e + }, + emscripten_glCreateShader: function(e) { + var r = Ue.getNewId(Ue.shaders); + return Ue.shaders[r] = Or.createShader(e), r + }, + emscripten_glCullFace: function(e) { + Or.cullFace(e) + }, + emscripten_glDeleteBuffers: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.buffers[n]; + i && (Or.deleteBuffer(i), i.name = 0, Ue.buffers[n] = null, n == Ue.currArrayBuffer && (Ue.currArrayBuffer = 0), n == Ue.currElementArrayBuffer && (Ue.currElementArrayBuffer = 0), n == Or.currentPixelPackBufferBinding && (Or.currentPixelPackBufferBinding = 0), n == Or.currentPixelUnpackBufferBinding && (Or.currentPixelUnpackBufferBinding = 0)) + } + }, + emscripten_glDeleteFramebuffers: function(e, r) { + for (var t = 0; t < e; ++t) { + var n = q[r + 4 * t >> 2], + i = Ue.framebuffers[n]; + i && (Or.deleteFramebuffer(i), i.name = 0, Ue.framebuffers[n] = null) + } + }, + emscripten_glDeleteProgram: function(e) { + if (e) { + var r = Ue.programs[e]; + r ? (Or.deleteProgram(r), r.name = 0, Ue.programs[e] = null, Ue.programInfos[e] = null) : Ue.recordError(1281) + } + }, + emscripten_glDeleteQueries: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.queries[n]; + i && (Or.deleteQuery(i), Ue.queries[n] = null) + } + }, + emscripten_glDeleteQueriesEXT: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.timerQueriesEXT[n]; + i && (Or.disjointTimerQueryExt.deleteQueryEXT(i), Ue.timerQueriesEXT[n] = null) + } + }, + emscripten_glDeleteRenderbuffers: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.renderbuffers[n]; + i && (Or.deleteRenderbuffer(i), i.name = 0, Ue.renderbuffers[n] = null) + } + }, + emscripten_glDeleteSamplers: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.samplers[n]; + i && (Or.deleteSampler(i), i.name = 0, Ue.samplers[n] = null) + } + }, + emscripten_glDeleteShader: function(e) { + if (e) { + var r = Ue.shaders[e]; + r ? (Or.deleteShader(r), Ue.shaders[e] = null) : Ue.recordError(1281) + } + }, + emscripten_glDeleteSync: function(e) { + if (e) { + var r = Ue.syncs[e]; + r ? (Or.deleteSync(r), r.name = 0, Ue.syncs[e] = null) : Ue.recordError(1281) + } + }, + emscripten_glDeleteTextures: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.textures[n]; + i && (Or.deleteTexture(i), i.name = 0, Ue.textures[n] = null) + } + }, + emscripten_glDeleteTransformFeedbacks: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.transformFeedbacks[n]; + i && (Or.deleteTransformFeedback(i), i.name = 0, Ue.transformFeedbacks[n] = null) + } + }, + emscripten_glDeleteVertexArrays: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2]; + Or.deleteVertexArray(Ue.vaos[n]), Ue.vaos[n] = null + } + }, + emscripten_glDeleteVertexArraysOES: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2]; + Or.deleteVertexArray(Ue.vaos[n]), Ue.vaos[n] = null + } + }, + emscripten_glDepthFunc: function(e) { + Or.depthFunc(e) + }, + emscripten_glDepthMask: function(e) { + Or.depthMask(!!e) + }, + emscripten_glDepthRangef: function(e, r) { + Or.depthRange(e, r) + }, + emscripten_glDetachShader: function(e, r) { + Or.detachShader(Ue.programs[e], Ue.shaders[r]) + }, + emscripten_glDisable: function(e) { + Or.disable(e) + }, + emscripten_glDisableVertexAttribArray: function(e) { + Or.disableVertexAttribArray(e) + }, + emscripten_glDrawArrays: function(e, r, t) { + Or.drawArrays(e, r, t) + }, + emscripten_glDrawArraysInstanced: function(e, r, t, n) { + Or.drawArraysInstanced(e, r, t, n) + }, + emscripten_glDrawArraysInstancedANGLE: function(e, r, t, n) { + Or.drawArraysInstanced(e, r, t, n) + }, + emscripten_glDrawArraysInstancedARB: function(e, r, t, n) { + Or.drawArraysInstanced(e, r, t, n) + }, + emscripten_glDrawArraysInstancedEXT: function(e, r, t, n) { + Or.drawArraysInstanced(e, r, t, n) + }, + emscripten_glDrawArraysInstancedNV: function(e, r, t, n) { + Or.drawArraysInstanced(e, r, t, n) + }, + emscripten_glDrawBuffers: function(e, r) { + for (var t = tr[e], n = 0; n < e; n++) t[n] = q[r + 4 * n >> 2]; + Or.drawBuffers(t) + }, + emscripten_glDrawBuffersEXT: function(e, r) { + for (var t = tr[e], n = 0; n < e; n++) t[n] = q[r + 4 * n >> 2]; + Or.drawBuffers(t) + }, + emscripten_glDrawBuffersWEBGL: function(e, r) { + for (var t = tr[e], n = 0; n < e; n++) t[n] = q[r + 4 * n >> 2]; + Or.drawBuffers(t) + }, + emscripten_glDrawElements: function(e, r, t, n) { + Or.drawElements(e, r, t, n) + }, + emscripten_glDrawElementsInstanced: function(e, r, t, n, i) { + Or.drawElementsInstanced(e, r, t, n, i) + }, + emscripten_glDrawElementsInstancedANGLE: function(e, r, t, n, i) { + Or.drawElementsInstanced(e, r, t, n, i) + }, + emscripten_glDrawElementsInstancedARB: function(e, r, t, n, i) { + Or.drawElementsInstanced(e, r, t, n, i) + }, + emscripten_glDrawElementsInstancedEXT: function(e, r, t, n, i) { + Or.drawElementsInstanced(e, r, t, n, i) + }, + emscripten_glDrawElementsInstancedNV: function(e, r, t, n, i) { + Or.drawElementsInstanced(e, r, t, n, i) + }, + emscripten_glDrawRangeElements: function(e, r, t, n, i, a) { + nr(e, n, i, a) + }, + emscripten_glEnable: function(e) { + Or.enable(e) + }, + emscripten_glEnableVertexAttribArray: function(e) { + Or.enableVertexAttribArray(e) + }, + emscripten_glEndQuery: function(e) { + Or.endQuery(e) + }, + emscripten_glEndQueryEXT: function(e) { + Or.disjointTimerQueryExt.endQueryEXT(e) + }, + emscripten_glEndTransformFeedback: function() { + Or.endTransformFeedback() + }, + emscripten_glFenceSync: function(e, r) { + var t = Or.fenceSync(e, r); + if (t) { + var n = Ue.getNewId(Ue.syncs); + return t.name = n, Ue.syncs[n] = t, n + } + return 0 + }, + emscripten_glFinish: function() { + Or.finish() + }, + emscripten_glFlush: function() { + Or.flush() + }, + emscripten_glFramebufferRenderbuffer: function(e, r, t, n) { + Or.framebufferRenderbuffer(e, r, t, Ue.renderbuffers[n]) + }, + emscripten_glFramebufferTexture2D: function(e, r, t, n, i) { + Or.framebufferTexture2D(e, r, t, Ue.textures[n], i) + }, + emscripten_glFramebufferTextureLayer: function(e, r, t, n, i) { + Or.framebufferTextureLayer(e, r, Ue.textures[t], n, i) + }, + emscripten_glFrontFace: function(e) { + Or.frontFace(e) + }, + emscripten_glGenBuffers: function(e, r) { + ir(e, r, "createBuffer", Ue.buffers) + }, + emscripten_glGenFramebuffers: function(e, r) { + ir(e, r, "createFramebuffer", Ue.framebuffers) + }, + emscripten_glGenQueries: function(e, r) { + ir(e, r, "createQuery", Ue.queries) + }, + emscripten_glGenQueriesEXT: function(e, r) { + for (var t = 0; t < e; t++) { + var n = Or.disjointTimerQueryExt.createQueryEXT(); + if (!n) { + for (Ue.recordError(1282); t < e;) q[r + 4 * t++ >> 2] = 0; + return + } + var i = Ue.getNewId(Ue.timerQueriesEXT); + n.name = i, Ue.timerQueriesEXT[i] = n, q[r + 4 * t >> 2] = i + } + }, + emscripten_glGenRenderbuffers: function(e, r) { + ir(e, r, "createRenderbuffer", Ue.renderbuffers) + }, + emscripten_glGenSamplers: function(e, r) { + ir(e, r, "createSampler", Ue.samplers) + }, + emscripten_glGenTextures: function(e, r) { + ir(e, r, "createTexture", Ue.textures) + }, + emscripten_glGenTransformFeedbacks: function(e, r) { + ir(e, r, "createTransformFeedback", Ue.transformFeedbacks) + }, + emscripten_glGenVertexArrays: function(e, r) { + ir(e, r, "createVertexArray", Ue.vaos) + }, + emscripten_glGenVertexArraysOES: function(e, r) { + ir(e, r, "createVertexArray", Ue.vaos) + }, + emscripten_glGenerateMipmap: function(e) { + Or.generateMipmap(e) + }, + emscripten_glGetActiveAttrib: function(e, r, t, n, i, a, o) { + e = Ue.programs[e]; + var u = Or.getActiveAttrib(e, r); + if (u) { + var s = t > 0 && o ? B(u.name, o, t) : 0; + n && (q[n >> 2] = s), i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type) + } + }, + emscripten_glGetActiveUniform: function(e, r, t, n, i, a, o) { + e = Ue.programs[e]; + var u = Or.getActiveUniform(e, r); + if (u) { + var s = t > 0 && o ? B(u.name, o, t) : 0; + n && (q[n >> 2] = s), i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type) + } + }, + emscripten_glGetActiveUniformBlockName: function(e, r, t, n, i) { + e = Ue.programs[e]; + var a = Or.getActiveUniformBlockName(e, r); + if (a) + if (i && t > 0) { + var o = B(a, i, t); + n && (q[n >> 2] = o) + } else n && (q[n >> 2] = 0) + }, + emscripten_glGetActiveUniformBlockiv: function(e, r, t, n) { + if (n) switch (e = Ue.programs[e], t) { + case 35393: + var i = Or.getActiveUniformBlockName(e, r); + return void(q[n >> 2] = i.length + 1); + default: + var a = Or.getActiveUniformBlockParameter(e, r, t); + if (!a) return; + if ("number" == typeof a) q[n >> 2] = a; + else + for (var o = 0; o < a.length; o++) q[n + 4 * o >> 2] = a[o] + } else Ue.recordError(1281) + }, + emscripten_glGetActiveUniformsiv: function(e, r, t, n, i) { + if (i) + if (r > 0 && 0 == t) Ue.recordError(1281); + else { + e = Ue.programs[e]; + for (var a = [], o = 0; o < r; o++) a.push(q[t + 4 * o >> 2]); + var u = Or.getActiveUniforms(e, a, n); + if (u) { + var s = u.length; + for (o = 0; o < s; o++) q[i + 4 * o >> 2] = u[o] + } + } + else Ue.recordError(1281) + }, + emscripten_glGetAttachedShaders: function(e, r, t, n) { + var i = Or.getAttachedShaders(Ue.programs[e]), + a = i.length; + a > r && (a = r), q[t >> 2] = a; + for (var o = 0; o < a; ++o) { + var u = Ue.shaders.indexOf(i[o]); + q[n + 4 * o >> 2] = u + } + }, + emscripten_glGetAttribLocation: function(e, r) { + return Or.getAttribLocation(Ue.programs[e], L(r)) + }, + emscripten_glGetBooleanv: function(e, r) { + or(e, r, 4) + }, + emscripten_glGetBufferParameteri64v: function(e, r, t) { + t ? ar(t, Or.getBufferParameter(e, r)) : Ue.recordError(1281) + }, + emscripten_glGetBufferParameteriv: function(e, r, t) { + t ? q[t >> 2] = Or.getBufferParameter(e, r) : Ue.recordError(1281) + }, + emscripten_glGetError: function() { + var e = Or.getError() || Ue.lastError; + return Ue.lastError = 0, e + }, + emscripten_glGetFloatv: function(e, r) { + or(e, r, 2) + }, + emscripten_glGetFragDataLocation: function(e, r) { + return Or.getFragDataLocation(Ue.programs[e], L(r)) + }, + emscripten_glGetFramebufferAttachmentParameteriv: function(e, r, t, n) { + var i = Or.getFramebufferAttachmentParameter(e, r, t); + (i instanceof WebGLRenderbuffer || i instanceof WebGLTexture) && (i = 0 | i.name), q[n >> 2] = i + }, + emscripten_glGetInteger64i_v: function(e, r, t) { + ur(e, r, t, 1) + }, + emscripten_glGetInteger64v: function(e, r) { + or(e, r, 1) + }, + emscripten_glGetIntegeri_v: function(e, r, t) { + ur(e, r, t, 0) + }, + emscripten_glGetIntegerv: function(e, r) { + or(e, r, 0) + }, + emscripten_glGetInternalformativ: function(e, r, t, n, i) { + if (n < 0) Ue.recordError(1281); + else if (i) { + var a = Or.getInternalformatParameter(e, r, t); + if (null !== a) + for (var o = 0; o < a.length && o < n; ++o) q[i + o >> 2] = a[o] + } else Ue.recordError(1281) + }, + emscripten_glGetProgramBinary: function(e, r, t, n, i) { + Ue.recordError(1282) + }, + emscripten_glGetProgramInfoLog: function(e, r, t, n) { + var i = Or.getProgramInfoLog(Ue.programs[e]); + null === i && (i = "(unknown error)"); + var a = r > 0 && n ? B(i, n, r) : 0; + t && (q[t >> 2] = a) + }, + emscripten_glGetProgramiv: function(e, r, t) { + if (t) + if (e >= Ue.counter) Ue.recordError(1281); + else { + var n = Ue.programInfos[e]; + if (n) + if (35716 == r) { + var i = Or.getProgramInfoLog(Ue.programs[e]); + null === i && (i = "(unknown error)"), q[t >> 2] = i.length + 1 + } else if (35719 == r) q[t >> 2] = n.maxUniformLength; + else if (35722 == r) { + if (-1 == n.maxAttributeLength) { + e = Ue.programs[e]; + var a = Or.getProgramParameter(e, 35721); + n.maxAttributeLength = 0; + for (var o = 0; o < a; ++o) { + var u = Or.getActiveAttrib(e, o); + n.maxAttributeLength = Math.max(n.maxAttributeLength, u.name.length + 1) + } + } + q[t >> 2] = n.maxAttributeLength + } else if (35381 == r) { + if (-1 == n.maxUniformBlockNameLength) { + e = Ue.programs[e]; + var s = Or.getProgramParameter(e, 35382); + n.maxUniformBlockNameLength = 0; + for (o = 0; o < s; ++o) { + var c = Or.getActiveUniformBlockName(e, o); + n.maxUniformBlockNameLength = Math.max(n.maxUniformBlockNameLength, c.length + 1) + } + } + q[t >> 2] = n.maxUniformBlockNameLength + } else q[t >> 2] = Or.getProgramParameter(Ue.programs[e], r); + else Ue.recordError(1282) + } + else Ue.recordError(1281) + }, + emscripten_glGetQueryObjecti64vEXT: function(e, r, t) { + if (t) { + var n = Ue.timerQueriesEXT[e], + i = Or.disjointTimerQueryExt.getQueryObjectEXT(n, r); + ar(t, "boolean" == typeof i ? i ? 1 : 0 : i) + } else Ue.recordError(1281) + }, + emscripten_glGetQueryObjectivEXT: function(e, r, t) { + if (t) { + var n, i = Ue.timerQueriesEXT[e], + a = Or.disjointTimerQueryExt.getQueryObjectEXT(i, r); + n = "boolean" == typeof a ? a ? 1 : 0 : a, q[t >> 2] = n + } else Ue.recordError(1281) + }, + emscripten_glGetQueryObjectui64vEXT: function(e, r, t) { + if (t) { + var n = Ue.timerQueriesEXT[e], + i = Or.disjointTimerQueryExt.getQueryObjectEXT(n, r); + ar(t, "boolean" == typeof i ? i ? 1 : 0 : i) + } else Ue.recordError(1281) + }, + emscripten_glGetQueryObjectuiv: function(e, r, t) { + if (t) { + var n, i = Ue.queries[e], + a = Or.getQueryParameter(i, r); + n = "boolean" == typeof a ? a ? 1 : 0 : a, q[t >> 2] = n + } else Ue.recordError(1281) + }, + emscripten_glGetQueryObjectuivEXT: function(e, r, t) { + if (t) { + var n, i = Ue.timerQueriesEXT[e], + a = Or.disjointTimerQueryExt.getQueryObjectEXT(i, r); + n = "boolean" == typeof a ? a ? 1 : 0 : a, q[t >> 2] = n + } else Ue.recordError(1281) + }, + emscripten_glGetQueryiv: function(e, r, t) { + t ? q[t >> 2] = Or.getQuery(e, r) : Ue.recordError(1281) + }, + emscripten_glGetQueryivEXT: function(e, r, t) { + t ? q[t >> 2] = Or.disjointTimerQueryExt.getQueryEXT(e, r) : Ue.recordError(1281) + }, + emscripten_glGetRenderbufferParameteriv: function(e, r, t) { + t ? q[t >> 2] = Or.getRenderbufferParameter(e, r) : Ue.recordError(1281) + }, + emscripten_glGetSamplerParameterfv: function(e, r, t) { + t ? (e = Ue.samplers[e], V[t >> 2] = Or.getSamplerParameter(e, r)) : Ue.recordError(1281) + }, + emscripten_glGetSamplerParameteriv: function(e, r, t) { + t ? (e = Ue.samplers[e], q[t >> 2] = Or.getSamplerParameter(e, r)) : Ue.recordError(1281) + }, + emscripten_glGetShaderInfoLog: function(e, r, t, n) { + var i = Or.getShaderInfoLog(Ue.shaders[e]); + null === i && (i = "(unknown error)"); + var a = r > 0 && n ? B(i, n, r) : 0; + t && (q[t >> 2] = a) + }, + emscripten_glGetShaderPrecisionFormat: function(e, r, t, n) { + var i = Or.getShaderPrecisionFormat(e, r); + q[t >> 2] = i.rangeMin, q[t + 4 >> 2] = i.rangeMax, q[n >> 2] = i.precision + }, + emscripten_glGetShaderSource: function(e, r, t, n) { + var i = Or.getShaderSource(Ue.shaders[e]); + if (i) { + var a = r > 0 && n ? B(i, n, r) : 0; + t && (q[t >> 2] = a) + } + }, + emscripten_glGetShaderiv: function(e, r, t) { + if (t) + if (35716 == r) { + var n = Or.getShaderInfoLog(Ue.shaders[e]); + null === n && (n = "(unknown error)"), q[t >> 2] = n.length + 1 + } else if (35720 == r) { + var i = Or.getShaderSource(Ue.shaders[e]), + a = null === i || 0 == i.length ? 0 : i.length + 1; + q[t >> 2] = a + } else q[t >> 2] = Or.getShaderParameter(Ue.shaders[e], r); + else Ue.recordError(1281) + }, + emscripten_glGetString: function(e) { + if (Ue.stringCache[e]) return Ue.stringCache[e]; + var r; + switch (e) { + case 7939: + var t = Or.getSupportedExtensions() || []; + r = sr((t = t.concat(t.map((function(e) { + return "GL_" + e + })))).join(" ")); + break; + case 7936: + case 7937: + case 37445: + case 37446: + var n = Or.getParameter(e); + n || Ue.recordError(1280), r = sr(n); + break; + case 7938: + var i = Or.getParameter(7938); + r = sr(i = Ue.currentContext.version >= 2 ? "OpenGL ES 3.0 (" + i + ")" : "OpenGL ES 2.0 (" + i + ")"); + break; + case 35724: + var a = Or.getParameter(35724), + o = a.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/); + null !== o && (3 == o[1].length && (o[1] = o[1] + "0"), a = "OpenGL ES GLSL ES " + o[1] + " (" + a + ")"), r = sr(a); + break; + default: + return Ue.recordError(1280), 0 + } + return Ue.stringCache[e] = r, r + }, + emscripten_glGetStringi: function(e, r) { + if (Ue.currentContext.version < 2) return Ue.recordError(1282), 0; + var t = Ue.stringiCache[e]; + if (t) return r < 0 || r >= t.length ? (Ue.recordError(1281), 0) : t[r]; + switch (e) { + case 7939: + var n = Or.getSupportedExtensions() || []; + return n = (n = n.concat(n.map((function(e) { + return "GL_" + e + })))).map((function(e) { + return sr(e) + })), t = Ue.stringiCache[e] = n, r < 0 || r >= t.length ? (Ue.recordError(1281), 0) : t[r]; + default: + return Ue.recordError(1280), 0 + } + }, + emscripten_glGetSynciv: function(e, r, t, n, i) { + if (t < 0) Ue.recordError(1281); + else if (i) { + var a = Or.getSyncParameter(Ue.syncs[e], r); + q[n >> 2] = a, null !== a && n && (q[n >> 2] = 1) + } else Ue.recordError(1281) + }, + emscripten_glGetTexParameterfv: function(e, r, t) { + t ? V[t >> 2] = Or.getTexParameter(e, r) : Ue.recordError(1281) + }, + emscripten_glGetTexParameteriv: function(e, r, t) { + t ? q[t >> 2] = Or.getTexParameter(e, r) : Ue.recordError(1281) + }, + emscripten_glGetTransformFeedbackVarying: function(e, r, t, n, i, a, o) { + e = Ue.programs[e]; + var u = Or.getTransformFeedbackVarying(e, r); + if (u) { + if (o && t > 0) { + var s = B(u.name, o, t); + n && (q[n >> 2] = s) + } else n && (q[n >> 2] = 0); + i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type) + } + }, + emscripten_glGetUniformBlockIndex: function(e, r) { + return Or.getUniformBlockIndex(Ue.programs[e], L(r)) + }, + emscripten_glGetUniformIndices: function(e, r, t, n) { + if (n) + if (r > 0 && (0 == t || 0 == n)) Ue.recordError(1281); + else { + e = Ue.programs[e]; + for (var i = [], a = 0; a < r; a++) i.push(L(q[t + 4 * a >> 2])); + var o = Or.getUniformIndices(e, i); + if (o) { + var u = o.length; + for (a = 0; a < u; a++) q[n + 4 * a >> 2] = o[a] + } + } + else Ue.recordError(1281) + }, + emscripten_glGetUniformLocation: function(e, r) { + var t = 0; + if ("]" == (r = L(r))[r.length - 1]) { + var n = r.lastIndexOf("["); + t = "]" != r[n + 1] ? cr(r.slice(n + 1)) : 0, r = r.slice(0, n) + } + var i = Ue.programInfos[e] && Ue.programInfos[e].uniforms[r]; + return i && t >= 0 && t < i[0] ? i[1] + t : -1 + }, + emscripten_glGetUniformfv: function(e, r, t) { + lr(e, r, t, 2) + }, + emscripten_glGetUniformiv: function(e, r, t) { + lr(e, r, t, 0) + }, + emscripten_glGetUniformuiv: function(e, r, t) { + lr(e, r, t, 0) + }, + emscripten_glGetVertexAttribIiv: function(e, r, t) { + fr(e, r, t, 0) + }, + emscripten_glGetVertexAttribIuiv: function(e, r, t) { + fr(e, r, t, 0) + }, + emscripten_glGetVertexAttribPointerv: function(e, r, t) { + t ? q[t >> 2] = Or.getVertexAttribOffset(e, r) : Ue.recordError(1281) + }, + emscripten_glGetVertexAttribfv: function(e, r, t) { + fr(e, r, t, 2) + }, + emscripten_glGetVertexAttribiv: function(e, r, t) { + fr(e, r, t, 5) + }, + emscripten_glHint: function(e, r) { + Or.hint(e, r) + }, + emscripten_glInvalidateFramebuffer: function(e, r, t) { + for (var n = tr[r], i = 0; i < r; i++) n[i] = q[t + 4 * i >> 2]; + Or.invalidateFramebuffer(e, n) + }, + emscripten_glInvalidateSubFramebuffer: function(e, r, t, n, i, a, o) { + for (var u = tr[r], s = 0; s < r; s++) u[s] = q[t + 4 * s >> 2]; + Or.invalidateSubFramebuffer(e, u, n, i, a, o) + }, + emscripten_glIsBuffer: function(e) { + var r = Ue.buffers[e]; + return r ? Or.isBuffer(r) : 0 + }, + emscripten_glIsEnabled: function(e) { + return Or.isEnabled(e) + }, + emscripten_glIsFramebuffer: function(e) { + var r = Ue.framebuffers[e]; + return r ? Or.isFramebuffer(r) : 0 + }, + emscripten_glIsProgram: function(e) { + return (e = Ue.programs[e]) ? Or.isProgram(e) : 0 + }, + emscripten_glIsQuery: function(e) { + var r = Ue.queries[e]; + return r ? Or.isQuery(r) : 0 + }, + emscripten_glIsQueryEXT: function(e) { + var r = Ue.timerQueriesEXT[e]; + return r ? Or.disjointTimerQueryExt.isQueryEXT(r) : 0 + }, + emscripten_glIsRenderbuffer: function(e) { + var r = Ue.renderbuffers[e]; + return r ? Or.isRenderbuffer(r) : 0 + }, + emscripten_glIsSampler: function(e) { + var r = Ue.samplers[e]; + return r ? Or.isSampler(r) : 0 + }, + emscripten_glIsShader: function(e) { + var r = Ue.shaders[e]; + return r ? Or.isShader(r) : 0 + }, + emscripten_glIsSync: function(e) { + return Or.isSync(Ue.syncs[e]) + }, + emscripten_glIsTexture: function(e) { + var r = Ue.textures[e]; + return r ? Or.isTexture(r) : 0 + }, + emscripten_glIsTransformFeedback: function(e) { + return Or.isTransformFeedback(Ue.transformFeedbacks[e]) + }, + emscripten_glIsVertexArray: function(e) { + var r = Ue.vaos[e]; + return r ? Or.isVertexArray(r) : 0 + }, + emscripten_glIsVertexArrayOES: function(e) { + var r = Ue.vaos[e]; + return r ? Or.isVertexArray(r) : 0 + }, + emscripten_glLineWidth: function(e) { + Or.lineWidth(e) + }, + emscripten_glLinkProgram: function(e) { + Or.linkProgram(Ue.programs[e]), Ue.populateUniformTable(e) + }, + emscripten_glPauseTransformFeedback: function() { + Or.pauseTransformFeedback() + }, + emscripten_glPixelStorei: function(e, r) { + 3317 == e && (Ue.unpackAlignment = r), Or.pixelStorei(e, r) + }, + emscripten_glPolygonOffset: function(e, r) { + Or.polygonOffset(e, r) + }, + emscripten_glProgramBinary: function(e, r, t, n) { + Ue.recordError(1280) + }, + emscripten_glProgramParameteri: function(e, r, t) { + Ue.recordError(1280) + }, + emscripten_glQueryCounterEXT: function(e, r) { + Or.disjointTimerQueryExt.queryCounterEXT(Ue.timerQueriesEXT[e], r) + }, + emscripten_glReadBuffer: function(e) { + Or.readBuffer(e) + }, + emscripten_glReadPixels: function(e, r, t, n, i, a, o) { + if (Ue.currentContext.version >= 2) + if (Or.currentPixelPackBufferBinding) Or.readPixels(e, r, t, n, i, a, o); + else { + var u = dr(a); + Or.readPixels(e, r, t, n, i, a, u, o >> mr(u)) + } + else { + var s = pr(a, i, t, n, o); + s ? Or.readPixels(e, r, t, n, i, a, s) : Ue.recordError(1280) + } + }, + emscripten_glReleaseShaderCompiler: function() {}, + emscripten_glRenderbufferStorage: function(e, r, t, n) { + Or.renderbufferStorage(e, r, t, n) + }, + emscripten_glRenderbufferStorageMultisample: function(e, r, t, n, i) { + Or.renderbufferStorageMultisample(e, r, t, n, i) + }, + emscripten_glResumeTransformFeedback: function() { + Or.resumeTransformFeedback() + }, + emscripten_glSampleCoverage: function(e, r) { + Or.sampleCoverage(e, !!r) + }, + emscripten_glSamplerParameterf: function(e, r, t) { + Or.samplerParameterf(Ue.samplers[e], r, t) + }, + emscripten_glSamplerParameterfv: function(e, r, t) { + var n = V[t >> 2]; + Or.samplerParameterf(Ue.samplers[e], r, n) + }, + emscripten_glSamplerParameteri: function(e, r, t) { + Or.samplerParameteri(Ue.samplers[e], r, t) + }, + emscripten_glSamplerParameteriv: function(e, r, t) { + var n = q[t >> 2]; + Or.samplerParameteri(Ue.samplers[e], r, n) + }, + emscripten_glScissor: function(e, r, t, n) { + Or.scissor(e, r, t, n) + }, + emscripten_glShaderBinary: function() { + Ue.recordError(1280) + }, + emscripten_glShaderSource: function(e, r, t, n) { + var i = Ue.getSource(e, r, t, n); + Or.shaderSource(Ue.shaders[e], i) + }, + emscripten_glStencilFunc: function(e, r, t) { + Or.stencilFunc(e, r, t) + }, + emscripten_glStencilFuncSeparate: function(e, r, t, n) { + Or.stencilFuncSeparate(e, r, t, n) + }, + emscripten_glStencilMask: function(e) { + Or.stencilMask(e) + }, + emscripten_glStencilMaskSeparate: function(e, r) { + Or.stencilMaskSeparate(e, r) + }, + emscripten_glStencilOp: function(e, r, t) { + Or.stencilOp(e, r, t) + }, + emscripten_glStencilOpSeparate: function(e, r, t, n) { + Or.stencilOpSeparate(e, r, t, n) + }, + emscripten_glTexImage2D: function(e, r, t, n, i, a, o, u, s) { + if (Ue.currentContext.version >= 2) + if (Or.currentPixelUnpackBufferBinding) Or.texImage2D(e, r, t, n, i, a, o, u, s); + else if (s) { + var c = dr(u); + Or.texImage2D(e, r, t, n, i, a, o, u, c, s >> mr(c)) + } else Or.texImage2D(e, r, t, n, i, a, o, u, null); + else Or.texImage2D(e, r, t, n, i, a, o, u, s ? pr(u, o, n, i, s) : null) + }, + emscripten_glTexImage3D: function(e, r, t, n, i, a, o, u, s, c) { + if (Or.currentPixelUnpackBufferBinding) Or.texImage3D(e, r, t, n, i, a, o, u, s, c); + else if (c) { + var l = dr(s); + Or.texImage3D(e, r, t, n, i, a, o, u, s, l, c >> mr(l)) + } else Or.texImage3D(e, r, t, n, i, a, o, u, s, null) + }, + emscripten_glTexParameterf: function(e, r, t) { + Or.texParameterf(e, r, t) + }, + emscripten_glTexParameterfv: function(e, r, t) { + var n = V[t >> 2]; + Or.texParameterf(e, r, n) + }, + emscripten_glTexParameteri: function(e, r, t) { + Or.texParameteri(e, r, t) + }, + emscripten_glTexParameteriv: function(e, r, t) { + var n = q[t >> 2]; + Or.texParameteri(e, r, n) + }, + emscripten_glTexStorage2D: function(e, r, t, n, i) { + Or.texStorage2D(e, r, t, n, i) + }, + emscripten_glTexStorage3D: function(e, r, t, n, i, a) { + Or.texStorage3D(e, r, t, n, i, a) + }, + emscripten_glTexSubImage2D: function(e, r, t, n, i, a, o, u, s) { + if (Ue.currentContext.version >= 2) + if (Or.currentPixelUnpackBufferBinding) Or.texSubImage2D(e, r, t, n, i, a, o, u, s); + else if (s) { + var c = dr(u); + Or.texSubImage2D(e, r, t, n, i, a, o, u, c, s >> mr(c)) + } else Or.texSubImage2D(e, r, t, n, i, a, o, u, null); + else { + var l = null; + s && (l = pr(u, o, i, a, s)), Or.texSubImage2D(e, r, t, n, i, a, o, u, l) + } + }, + emscripten_glTexSubImage3D: function(e, r, t, n, i, a, o, u, s, c, l) { + if (Or.currentPixelUnpackBufferBinding) Or.texSubImage3D(e, r, t, n, i, a, o, u, s, c, l); + else if (l) { + var f = dr(c); + Or.texSubImage3D(e, r, t, n, i, a, o, u, s, c, f, l >> mr(f)) + } else Or.texSubImage3D(e, r, t, n, i, a, o, u, s, c, null) + }, + emscripten_glTransformFeedbackVaryings: function(e, r, t, n) { + e = Ue.programs[e]; + for (var i = [], a = 0; a < r; a++) i.push(L(q[t + 4 * a >> 2])); + Or.transformFeedbackVaryings(e, i, n) + }, + emscripten_glUniform1f: function(e, r) { + Or.uniform1f(Ue.uniforms[e], r) + }, + emscripten_glUniform1fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform1fv(Ue.uniforms[e], V, t >> 2, r); + else { + if (r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferFloatViews[r - 1], i = 0; i < r; ++i) n[i] = V[t + 4 * i >> 2]; + else n = V.subarray(t >> 2, t + 4 * r >> 2); + Or.uniform1fv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform1i: function(e, r) { + Or.uniform1i(Ue.uniforms[e], r) + }, + emscripten_glUniform1iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform1iv(Ue.uniforms[e], q, t >> 2, r); + else { + if (r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[r - 1], i = 0; i < r; ++i) n[i] = q[t + 4 * i >> 2]; + else n = q.subarray(t >> 2, t + 4 * r >> 2); + Or.uniform1iv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform1ui: function(e, r) { + Or.uniform1ui(Ue.uniforms[e], r) + }, + emscripten_glUniform1uiv: function(e, r, t) { + Or.uniform1uiv(Ue.uniforms[e], Q, t >> 2, r) + }, + emscripten_glUniform2f: function(e, r, t) { + Or.uniform2f(Ue.uniforms[e], r, t) + }, + emscripten_glUniform2fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform2fv(Ue.uniforms[e], V, t >> 2, 2 * r); + else { + if (2 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferFloatViews[2 * r - 1], i = 0; i < 2 * r; i += 2) n[i] = V[t + 4 * i >> 2], n[i + 1] = V[t + (4 * i + 4) >> 2]; + else n = V.subarray(t >> 2, t + 8 * r >> 2); + Or.uniform2fv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform2i: function(e, r, t) { + Or.uniform2i(Ue.uniforms[e], r, t) + }, + emscripten_glUniform2iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform2iv(Ue.uniforms[e], q, t >> 2, 2 * r); + else { + if (2 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[2 * r - 1], i = 0; i < 2 * r; i += 2) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2]; + else n = q.subarray(t >> 2, t + 8 * r >> 2); + Or.uniform2iv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform2ui: function(e, r, t) { + Or.uniform2ui(Ue.uniforms[e], r, t) + }, + emscripten_glUniform2uiv: function(e, r, t) { + Or.uniform2uiv(Ue.uniforms[e], Q, t >> 2, 2 * r) + }, + emscripten_glUniform3f: function(e, r, t, n) { + Or.uniform3f(Ue.uniforms[e], r, t, n) + }, + emscripten_glUniform3fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform3fv(Ue.uniforms[e], V, t >> 2, 3 * r); + else { + if (3 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferFloatViews[3 * r - 1], i = 0; i < 3 * r; i += 3) n[i] = V[t + 4 * i >> 2], n[i + 1] = V[t + (4 * i + 4) >> 2], n[i + 2] = V[t + (4 * i + 8) >> 2]; + else n = V.subarray(t >> 2, t + 12 * r >> 2); + Or.uniform3fv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform3i: function(e, r, t, n) { + Or.uniform3i(Ue.uniforms[e], r, t, n) + }, + emscripten_glUniform3iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform3iv(Ue.uniforms[e], q, t >> 2, 3 * r); + else { + if (3 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[3 * r - 1], i = 0; i < 3 * r; i += 3) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2], n[i + 2] = q[t + (4 * i + 8) >> 2]; + else n = q.subarray(t >> 2, t + 12 * r >> 2); + Or.uniform3iv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform3ui: function(e, r, t, n) { + Or.uniform3ui(Ue.uniforms[e], r, t, n) + }, + emscripten_glUniform3uiv: function(e, r, t) { + Or.uniform3uiv(Ue.uniforms[e], Q, t >> 2, 3 * r) + }, + emscripten_glUniform4f: function(e, r, t, n, i) { + Or.uniform4f(Ue.uniforms[e], r, t, n, i) + }, + emscripten_glUniform4fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform4fv(Ue.uniforms[e], V, t >> 2, 4 * r); + else { + if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) { + var n = Ue.miniTempBufferFloatViews[4 * r - 1], + i = V; + t >>= 2; + for (var a = 0; a < 4 * r; a += 4) { + var o = t + a; + n[a] = i[o], n[a + 1] = i[o + 1], n[a + 2] = i[o + 2], n[a + 3] = i[o + 3] + } + } else n = V.subarray(t >> 2, t + 16 * r >> 2); + Or.uniform4fv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform4i: function(e, r, t, n, i) { + Or.uniform4i(Ue.uniforms[e], r, t, n, i) + }, + emscripten_glUniform4iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform4iv(Ue.uniforms[e], q, t >> 2, 4 * r); + else { + if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[4 * r - 1], i = 0; i < 4 * r; i += 4) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2], n[i + 2] = q[t + (4 * i + 8) >> 2], n[i + 3] = q[t + (4 * i + 12) >> 2]; + else n = q.subarray(t >> 2, t + 16 * r >> 2); + Or.uniform4iv(Ue.uniforms[e], n) + } + }, + emscripten_glUniform4ui: function(e, r, t, n, i) { + Or.uniform4ui(Ue.uniforms[e], r, t, n, i) + }, + emscripten_glUniform4uiv: function(e, r, t) { + Or.uniform4uiv(Ue.uniforms[e], Q, t >> 2, 4 * r) + }, + emscripten_glUniformBlockBinding: function(e, r, t) { + e = Ue.programs[e], Or.uniformBlockBinding(e, r, t) + }, + emscripten_glUniformMatrix2fv: function(e, r, t, n) { + if (Ue.currentContext.version >= 2) Or.uniformMatrix2fv(Ue.uniforms[e], !!t, V, n >> 2, 4 * r); + else { + if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var i = Ue.miniTempBufferFloatViews[4 * r - 1], a = 0; a < 4 * r; a += 4) i[a] = V[n + 4 * a >> 2], i[a + 1] = V[n + (4 * a + 4) >> 2], i[a + 2] = V[n + (4 * a + 8) >> 2], i[a + 3] = V[n + (4 * a + 12) >> 2]; + else i = V.subarray(n >> 2, n + 16 * r >> 2); + Or.uniformMatrix2fv(Ue.uniforms[e], !!t, i) + } + }, + emscripten_glUniformMatrix2x3fv: function(e, r, t, n) { + Or.uniformMatrix2x3fv(Ue.uniforms[e], !!t, V, n >> 2, 6 * r) + }, + emscripten_glUniformMatrix2x4fv: function(e, r, t, n) { + Or.uniformMatrix2x4fv(Ue.uniforms[e], !!t, V, n >> 2, 8 * r) + }, + emscripten_glUniformMatrix3fv: function(e, r, t, n) { + if (Ue.currentContext.version >= 2) Or.uniformMatrix3fv(Ue.uniforms[e], !!t, V, n >> 2, 9 * r); + else { + if (9 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var i = Ue.miniTempBufferFloatViews[9 * r - 1], a = 0; a < 9 * r; a += 9) i[a] = V[n + 4 * a >> 2], i[a + 1] = V[n + (4 * a + 4) >> 2], i[a + 2] = V[n + (4 * a + 8) >> 2], i[a + 3] = V[n + (4 * a + 12) >> 2], i[a + 4] = V[n + (4 * a + 16) >> 2], i[a + 5] = V[n + (4 * a + 20) >> 2], i[a + 6] = V[n + (4 * a + 24) >> 2], i[a + 7] = V[n + (4 * a + 28) >> 2], i[a + 8] = V[n + (4 * a + 32) >> 2]; + else i = V.subarray(n >> 2, n + 36 * r >> 2); + Or.uniformMatrix3fv(Ue.uniforms[e], !!t, i) + } + }, + emscripten_glUniformMatrix3x2fv: function(e, r, t, n) { + Or.uniformMatrix3x2fv(Ue.uniforms[e], !!t, V, n >> 2, 6 * r) + }, + emscripten_glUniformMatrix3x4fv: function(e, r, t, n) { + Or.uniformMatrix3x4fv(Ue.uniforms[e], !!t, V, n >> 2, 12 * r) + }, + emscripten_glUniformMatrix4fv: function(e, r, t, n) { + if (Ue.currentContext.version >= 2) Or.uniformMatrix4fv(Ue.uniforms[e], !!t, V, n >> 2, 16 * r); + else { + if (16 * r <= Ue.MINI_TEMP_BUFFER_SIZE) { + var i = Ue.miniTempBufferFloatViews[16 * r - 1], + a = V; + n >>= 2; + for (var o = 0; o < 16 * r; o += 16) { + var u = n + o; + i[o] = a[u], i[o + 1] = a[u + 1], i[o + 2] = a[u + 2], i[o + 3] = a[u + 3], i[o + 4] = a[u + 4], i[o + 5] = a[u + 5], i[o + 6] = a[u + 6], i[o + 7] = a[u + 7], i[o + 8] = a[u + 8], i[o + 9] = a[u + 9], i[o + 10] = a[u + 10], i[o + 11] = a[u + 11], i[o + 12] = a[u + 12], i[o + 13] = a[u + 13], i[o + 14] = a[u + 14], i[o + 15] = a[u + 15] + } + } else i = V.subarray(n >> 2, n + 64 * r >> 2); + Or.uniformMatrix4fv(Ue.uniforms[e], !!t, i) + } + }, + emscripten_glUniformMatrix4x2fv: function(e, r, t, n) { + Or.uniformMatrix4x2fv(Ue.uniforms[e], !!t, V, n >> 2, 8 * r) + }, + emscripten_glUniformMatrix4x3fv: function(e, r, t, n) { + Or.uniformMatrix4x3fv(Ue.uniforms[e], !!t, V, n >> 2, 12 * r) + }, + emscripten_glUseProgram: function(e) { + Or.useProgram(Ue.programs[e]) + }, + emscripten_glValidateProgram: function(e) { + Or.validateProgram(Ue.programs[e]) + }, + emscripten_glVertexAttrib1f: function(e, r) { + Or.vertexAttrib1f(e, r) + }, + emscripten_glVertexAttrib1fv: function(e, r) { + Or.vertexAttrib1f(e, V[r >> 2]) + }, + emscripten_glVertexAttrib2f: function(e, r, t) { + Or.vertexAttrib2f(e, r, t) + }, + emscripten_glVertexAttrib2fv: function(e, r) { + Or.vertexAttrib2f(e, V[r >> 2], V[r + 4 >> 2]) + }, + emscripten_glVertexAttrib3f: function(e, r, t, n) { + Or.vertexAttrib3f(e, r, t, n) + }, + emscripten_glVertexAttrib3fv: function(e, r) { + Or.vertexAttrib3f(e, V[r >> 2], V[r + 4 >> 2], V[r + 8 >> 2]) + }, + emscripten_glVertexAttrib4f: function(e, r, t, n, i) { + Or.vertexAttrib4f(e, r, t, n, i) + }, + emscripten_glVertexAttrib4fv: function(e, r) { + Or.vertexAttrib4f(e, V[r >> 2], V[r + 4 >> 2], V[r + 8 >> 2], V[r + 12 >> 2]) + }, + emscripten_glVertexAttribDivisor: function(e, r) { + Or.vertexAttribDivisor(e, r) + }, + emscripten_glVertexAttribDivisorANGLE: function(e, r) { + Or.vertexAttribDivisor(e, r) + }, + emscripten_glVertexAttribDivisorARB: function(e, r) { + Or.vertexAttribDivisor(e, r) + }, + emscripten_glVertexAttribDivisorEXT: function(e, r) { + Or.vertexAttribDivisor(e, r) + }, + emscripten_glVertexAttribDivisorNV: function(e, r) { + Or.vertexAttribDivisor(e, r) + }, + emscripten_glVertexAttribI4i: function(e, r, t, n, i) { + Or.vertexAttribI4i(e, r, t, n, i) + }, + emscripten_glVertexAttribI4iv: function(e, r) { + Or.vertexAttribI4i(e, q[r >> 2], q[r + 4 >> 2], q[r + 8 >> 2], q[r + 12 >> 2]) + }, + emscripten_glVertexAttribI4ui: function(e, r, t, n, i) { + Or.vertexAttribI4ui(e, r, t, n, i) + }, + emscripten_glVertexAttribI4uiv: function(e, r) { + Or.vertexAttribI4ui(e, Q[r >> 2], Q[r + 4 >> 2], Q[r + 8 >> 2], Q[r + 12 >> 2]) + }, + emscripten_glVertexAttribIPointer: function(e, r, t, n, i) { + Or.vertexAttribIPointer(e, r, t, n, i) + }, + emscripten_glVertexAttribPointer: function(e, r, t, n, i, a) { + Or.vertexAttribPointer(e, r, t, !!n, i, a) + }, + emscripten_glViewport: function(e, r, t, n) { + Or.viewport(e, r, t, n) + }, + emscripten_glWaitSync: function(e, r, t, n) { + Or.waitSync(Ue.syncs[e], r, rr(t, n)) + }, + emscripten_has_asyncify: function() { + return 0 + }, + emscripten_is_main_browser_thread: function() { + return !0 + }, + emscripten_log: function(e, r, t) { + for (var n = "", i = function(e, r) { + var t = e, + n = r; + + function i(e) { + var r; + return n = function(e, r) { + return "double" !== r && "i64" !== r || 7 & e && (e += 4), e + }(n, e), "double" === e ? (r = X[n >> 3], n += 8) : "i64" == e ? (r = [q[n >> 2], q[n + 4 >> 2]], n += 8) : (e = "i32", r = q[n >> 2], n += 4), r + } + for (var a, o, u, s, c = [];;) { + var l = t; + if (0 === (a = O[t >> 0])) break; + if (o = O[t + 1 >> 0], 37 == a) { + var f = !1, + d = !1, + m = !1, + p = !1, + v = !1; + e: for (;;) { + switch (o) { + case 43: + f = !0; + break; + case 45: + d = !0; + break; + case 35: + m = !0; + break; + case 48: + if (p) break e; + p = !0; + break; + case 32: + v = !0; + break; + default: + break e + } + t++, o = O[t + 1 >> 0] + } + var g = 0; + if (42 == o) g = i("i32"), t++, o = O[t + 1 >> 0]; + else + for (; o >= 48 && o <= 57;) g = 10 * g + (o - 48), t++, o = O[t + 1 >> 0]; + var h, _ = !1, + b = -1; + if (46 == o) { + if (b = 0, _ = !0, t++, 42 == (o = O[t + 1 >> 0])) b = i("i32"), t++; + else + for (;;) { + var y = O[t + 1 >> 0]; + if (y < 48 || y > 57) break; + b = 10 * b + (y - 48), t++ + } + o = O[t + 1 >> 0] + } + switch (b < 0 && (b = 6, _ = !1), String.fromCharCode(o)) { + case "h": + 104 == O[t + 2 >> 0] ? (t++, h = 1) : h = 2; + break; + case "l": + 108 == O[t + 2 >> 0] ? (t++, h = 8) : h = 4; + break; + case "L": + case "q": + case "j": + h = 8; + break; + case "z": + case "t": + case "I": + h = 4; + break; + default: + h = null + } + switch (h && t++, o = O[t + 1 >> 0], String.fromCharCode(o)) { + case "d": + case "i": + case "u": + case "o": + case "x": + case "X": + case "p": + var w = 100 == o || 105 == o; + u = i("i" + 8 * (h = h || 4)), 8 == h && (u = 117 == o ? (u[0] >>> 0) + 4294967296 * (u[1] >>> 0) : rr(u[0], u[1])), h <= 4 && (u = (w ? ie : ne)(u & Math.pow(256, h) - 1, 8 * h)); + var E = Math.abs(u), + x = ""; + if (100 == o || 105 == o) S = ie(u, 8 * h).toString(10); + else if (117 == o) S = ne(u, 8 * h).toString(10), u = Math.abs(u); + else if (111 == o) S = (m ? "0" : "") + E.toString(8); + else if (120 == o || 88 == o) { + if (x = m && 0 != u ? "0x" : "", u < 0) { + u = -u, S = (E - 1).toString(16); + for (var k = [], C = 0; C < S.length; C++) k.push((15 - parseInt(S[C], 16)).toString(16)); + for (S = k.join(""); S.length < 2 * h;) S = "f" + S + } else S = E.toString(16); + 88 == o && (x = x.toUpperCase(), S = S.toUpperCase()) + } else 112 == o && (0 === E ? S = "(nil)" : (x = "0x", S = E.toString(16))); + if (_) + for (; S.length < b;) S = "0" + S; + for (u >= 0 && (f ? x = "+" + x : v && (x = " " + x)), "-" == S.charAt(0) && (x = "-" + x, S = S.substr(1)); x.length + S.length < g;) d ? S += " " : p ? S = "0" + S : x = " " + x; + (S = x + S).split("").forEach((function(e) { + c.push(e.charCodeAt(0)) + })); + break; + case "f": + case "F": + case "e": + case "E": + case "g": + case "G": + var S; + if (u = i("double"), isNaN(u)) S = "nan", p = !1; + else if (isFinite(u)) { + var D = !1, + F = Math.min(b, 20); + if (103 == o || 71 == o) { + D = !0, b = b || 1; + var A = parseInt(u.toExponential(F).split("e")[1], 10); + b > A && A >= -4 ? (o = (103 == o ? "f" : "F").charCodeAt(0), b -= A + 1) : (o = (103 == o ? "e" : "E").charCodeAt(0), b--), F = Math.min(b, 20) + } + 101 == o || 69 == o ? (S = u.toExponential(F), /[eE][-+]\d$/.test(S) && (S = S.slice(0, -1) + "0" + S.slice(-1))) : 102 != o && 70 != o || (S = u.toFixed(F), 0 === u && ((s = u) < 0 || 0 === s && 1 / s == -1 / 0) && (S = "-" + S)); + var P = S.split("e"); + if (D && !m) + for (; P[0].length > 1 && -1 != P[0].indexOf(".") && ("0" == P[0].slice(-1) || "." == P[0].slice(-1));) P[0] = P[0].slice(0, -1); + else + for (m && -1 == S.indexOf(".") && (P[0] += "."); b > F++;) P[0] += "0"; + S = P[0] + (P.length > 1 ? "e" + P[1] : ""), 69 == o && (S = S.toUpperCase()), u >= 0 && (f ? S = "+" + S : v && (S = " " + S)) + } else S = (u < 0 ? "-" : "") + "inf", p = !1; + for (; S.length < g;) d ? S += " " : S = !p || "-" != S[0] && "+" != S[0] ? (p ? "0" : " ") + S : S[0] + "0" + S.slice(1); + o < 97 && (S = S.toUpperCase()), S.split("").forEach((function(e) { + c.push(e.charCodeAt(0)) + })); + break; + case "s": + var T = i("i8*"), + L = T ? Yr(T) : "(null)".length; + if (_ && (L = Math.min(L, b)), !d) + for (; L < g--;) c.push(32); + if (T) + for (C = 0; C < L; C++) c.push(G[T++ >> 0]); + else c = c.concat(Qr("(null)".substr(0, L), !0)); + if (d) + for (; L < g--;) c.push(32); + break; + case "c": + for (d && c.push(i("i8")); --g > 0;) c.push(32); + d || c.push(i("i8")); + break; + case "n": + var I = i("i32*"); + q[I >> 2] = c.length; + break; + case "%": + c.push(a); + break; + default: + for (C = l; C < t + 2; C++) c.push(O[C >> 0]) + } + t += 2 + } else c.push(a), t += 1 + } + return c + }(r, t), a = 0; a < i.length; ++a) n += String.fromCharCode(i[a]); + gr(e, n) + }, + emscripten_longjmp: function(e, r) { + ! function(e, r) { + throw nt(e, r || 1), "longjmp" + }(e, r) + }, + emscripten_memcpy_big: function(e, r, t) { + G.copyWithin(e, r, r + t) + }, + emscripten_request_fullscreen_strategy: function(e, r, t) { + return function(e, r) { + return Oe.fullscreenEnabled() ? (e = ze(e)) ? e.requestFullscreen || e.webkitRequestFullscreen ? Oe.canPerformEventHandlerRequests() ? Ke(e, r) : r.deferUntilInEventHandler ? (Oe.deferCall(Ke, 1, [e, r]), 1) : -2 : -3 : -4 : -1 + }(e, { + scaleMode: q[t >> 2], + canvasResolutionScaleMode: q[t + 4 >> 2], + filteringMode: q[t + 8 >> 2], + deferUntilInEventHandler: r, + canvasResizedCallback: q[t + 12 >> 2], + canvasResizedCallbackUserData: q[t + 16 >> 2] + }) + }, + emscripten_request_pointerlock: function(e, r) { + return (e = ze(e)) ? e.requestPointerLock || e.msRequestPointerLock ? Oe.canPerformEventHandlerRequests() ? $e(e) : r ? (Oe.deferCall($e, 2, [e]), 1) : -2 : -1 : -4 + }, + emscripten_resize_heap: function(e) { + e >>>= 0; + var r = G.length, + t = 2147483648; + if (e > t) return !1; + for (var n, i, a = 1; a <= 4; a *= 2) { + var o = r * (1 + .2 / a); + if (o = Math.min(o, e + 100663296), _r(Math.min(t, ((n = Math.max(16777216, e, o)) % (i = 65536) > 0 && (n += i - n % i), n)))) return !0 + } + return !1 + }, + emscripten_sample_gamepad_data: function() { + return (Oe.lastGamepadState = navigator.getGamepads ? navigator.getGamepads() : navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : null) ? 0 : -1 + }, + emscripten_set_beforeunload_callback_on_thread: function(e, r, t) { + return "undefined" == typeof onbeforeunload ? -1 : 1 !== t ? -5 : (function(e, r, t, n, i, a) { + var o = { + target: ze(e), + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(e) { + var t = e || event, + a = mt(n, i, 0, r); + if (a && (a = L(a)), a) return t.preventDefault(), t.returnValue = a, a + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(o) + }(2, e, !0, r, 28, "beforeunload"), 0) + }, + emscripten_set_blur_callback_on_thread: function(e, r, t, n, i) { + return br(e, r, t, n, 12, "blur"), 0 + }, + emscripten_set_canvas_element_id: function(e) { + if (r.gid = L(e), window.dataLayer) r.ga = function() { + window.dataLayer.push(arguments) + }; + else { + const e = document.createElement("script"); + e.async = 1, e.src = "//www.googletagmanager.com/gtag/js?id=" + r.gid, document.head.append(e), window.dataLayer = window.dataLayer || [], r.ga = function() { + window.dataLayer.push(arguments) + }, r.ga("js", new Date) + } + r.ga("config", r.gid, { + send_page_view: !1 + }) + }, + emscripten_set_canvas_element_size: Xe, + emscripten_set_element_css_size: function(e, r, t) { + return (e = ze(e)) ? (e.style.width = r + "px", e.style.height = t + "px", 0) : -4 + }, + emscripten_set_focus_callback_on_thread: function(e, r, t, n, i) { + return br(e, r, t, n, 13, "focus"), 0 + }, + emscripten_set_fullscreenchange_callback_on_thread: function(e, r, t, n, i) { + return Oe.fullscreenEnabled() ? (e = ze(e)) ? (yr(e, r, t, n, 19, "fullscreenchange"), yr(e, r, t, n, 19, "webkitfullscreenchange"), 0) : -4 : -1 + }, + emscripten_set_gamepadconnected_callback_on_thread: function(e, r, t, n) { + return navigator.getGamepads || navigator.webkitGetGamepads ? (wr(2, e, r, t, 26, "gamepadconnected"), 0) : -1 + }, + emscripten_set_gamepaddisconnected_callback_on_thread: function(e, r, t, n) { + return navigator.getGamepads || navigator.webkitGetGamepads ? (wr(2, e, r, t, 27, "gamepaddisconnected"), 0) : -1 + }, + emscripten_set_keydown_callback_on_thread: function(e, r, t, n, i) { + return Er(e, r, t, n, 2, "keydown"), 0 + }, + emscripten_set_keypress_callback_on_thread: function(e, r, t, n, i) { + return Er(e, r, t, n, 1, "keypress"), 0 + }, + emscripten_set_keyup_callback_on_thread: function(e, r, t, n, i) { + return Er(e, r, t, n, 3, "keyup"), 0 + }, + emscripten_set_main_loop_arg: function(e, r, t, n) { + Ie(e, t, n, r) + }, + emscripten_set_mousedown_callback_on_thread: function(e, r, t, n, i) { + return kr(e, r, t, n, 5, "mousedown"), 0 + }, + emscripten_set_mouseenter_callback_on_thread: function(e, r, t, n, i) { + return kr(e, r, t, n, 33, "mouseenter"), 0 + }, + emscripten_set_mouseleave_callback_on_thread: function(e, r, t, n, i) { + return kr(e, r, t, n, 34, "mouseleave"), 0 + }, + emscripten_set_mousemove_callback_on_thread: function(e, r, t, n, i) { + return kr(e, r, t, n, 8, "mousemove"), 0 + }, + emscripten_set_mouseup_callback_on_thread: function(e, r, t, n, i) { + return kr(e, r, t, n, 6, "mouseup"), 0 + }, + emscripten_set_pointerlockchange_callback_on_thread: function(e, r, t, n, i) { + return document && document.body && (document.body.requestPointerLock || document.body.mozRequestPointerLock || document.body.webkitRequestPointerLock || document.body.msRequestPointerLock) ? (e = ze(e)) ? (Cr(e, r, t, n, 20, "pointerlockchange"), Cr(e, r, t, n, 20, "mozpointerlockchange"), Cr(e, r, t, n, 20, "webkitpointerlockchange"), Cr(e, r, t, n, 20, "mspointerlockchange"), 0) : -4 : -1 + }, + emscripten_set_resize_callback_on_thread: function(e, r, t, n, i) { + return function(e, r, t, n, i, a, o) { + Oe.uiEvent || (Oe.uiEvent = Zr(36)); + var u = { + target: e = ze(e), + eventTypeString: a, + callbackfunc: n, + handlerFunc: function(t) { + var a = t || event; + if (a.target == e) { + var o = Oe.uiEvent, + u = document.body; + q[o >> 2] = a.detail, q[o + 4 >> 2] = u.clientWidth, q[o + 8 >> 2] = u.clientHeight, q[o + 12 >> 2] = innerWidth, q[o + 16 >> 2] = innerHeight, q[o + 20 >> 2] = outerWidth, q[o + 24 >> 2] = outerHeight, q[o + 28 >> 2] = pageXOffset, q[o + 32 >> 2] = pageYOffset, mt(n, i, o, r) && a.preventDefault() + } + }, + useCapture: t + }; + Oe.registerOrRemoveHandler(u) + }(e, r, t, n, 10, "resize"), 0 + }, + emscripten_set_touchcancel_callback_on_thread: function(e, r, t, n, i) { + return Sr(e, r, t, n, 25, "touchcancel"), 0 + }, + emscripten_set_touchend_callback_on_thread: function(e, r, t, n, i) { + return Sr(e, r, t, n, 23, "touchend"), 0 + }, + emscripten_set_touchmove_callback_on_thread: function(e, r, t, n, i) { + return Sr(e, r, t, n, 24, "touchmove"), 0 + }, + emscripten_set_touchstart_callback_on_thread: function(e, r, t, n, i) { + return Sr(e, r, t, n, 22, "touchstart"), 0 + }, + emscripten_set_visibilitychange_callback_on_thread: function(e, r, t, n) { + return Dr(je[1], e, r, t, 21, "visibilitychange"), 0 + }, + emscripten_set_wheel_callback_on_thread: function(e, r, t, n, i) { + return void 0 !== (e = ze(e)).onwheel ? (Fr(e, r, t, n, 9, "wheel"), 0) : void 0 !== e.onmousewheel ? (Fr(e, r, t, n, 9, "mousewheel"), 0) : -1 + }, + emscripten_sleep: function() { + throw "Please compile your program with async support in order to use asynchronous operations like emscripten_sleep" + }, + emscripten_start_fetch: function(e, r, t, n, i) { + void 0 !== y && (y = !0); + var a = e + 112, + o = L(a), + u = Q[a + 36 >> 2], + s = Q[a + 40 >> 2], + c = Q[a + 44 >> 2], + l = Q[a + 48 >> 2], + f = Q[a + 52 >> 2], + d = !!(4 & f), + m = !!(32 & f), + p = !!(16 & f), + v = function(e, t, n) { + u ? it(u, e) : r && r(e) + }, + g = function(e, r, t) { + c ? it(c, e) : n && n(e) + }, + h = function(e, r, n) { + s ? it(s, e) : t && t(e) + }, + _ = function(e, r, t) { + l ? it(l, e) : i && i(e) + }, + b = function(e, t, n) { + Tr(Ar.dbInstance, e, t.response, (function(e, t, n) { + u ? it(u, e) : r && r(e) + }), (function(e, t, n) { + u ? it(u, e) : r && r(e) + })) + }; + if ("EM_IDB_STORE" === o) { + var w = Q[a + 84 >> 2]; + Tr(Ar.dbInstance, e, G.slice(w, w + Q[a + 88 >> 2]), v, h) + } else if ("EM_IDB_DELETE" === o) ! function(e, r, t, n) { + if (e) { + var i = Q[r + 112 + 64 >> 2]; + i || (i = Q[r + 8 >> 2]); + var a = L(i); + try { + var o = e.transaction(["FILES"], "readwrite").objectStore("FILES").delete(a); + o.onsuccess = function(e) { + var n = e.target.result; + Q[r + 12 >> 2] = 0, Ar.setu64(r + 16, 0), Ar.setu64(r + 24, 0), Ar.setu64(r + 32, 0), z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 200, B("OK", r + 44, 64), t(r, 0, n) + }, o.onerror = function(e) { + z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 404, B("Not Found", r + 44, 64), n(r, 0, e) + } + } catch (e) { + n(r, 0, e) + } + } else n(r, 0, "IndexedDB not available!") + }(Ar.dbInstance, e, v, h); + else if (p) { + if (m) return 0; + Pr(e, d ? b : v, h, g, _) + } else ! function(e, r, t, n) { + if (e) { + var i = Q[r + 112 + 64 >> 2]; + i || (i = Q[r + 8 >> 2]); + var a = L(i); + try { + var o = e.transaction(["FILES"], "readonly").objectStore("FILES").get(a); + o.onsuccess = function(e) { + if (e.target.result) { + var i = e.target.result, + a = i.byteLength || i.length, + o = Zr(a); + G.set(new Uint8Array(i), o), Q[r + 12 >> 2] = o, Ar.setu64(r + 16, a), Ar.setu64(r + 24, 0), Ar.setu64(r + 32, a), z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 200, B("OK", r + 44, 64), t(r, 0, i) + } else z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 404, B("Not Found", r + 44, 64), n(r, 0, "no data") + }, o.onerror = function(e) { + z[r + 40 >> 1] = 4, z[r + 42 >> 1] = 404, B("Not Found", r + 44, 64), n(r, 0, e) + } + } catch (e) { + n(r, 0, e) + } + } else n(r, 0, "IndexedDB not available!") + }(Ar.dbInstance, e, v, m ? h : d ? function(e, r, t) { + Pr(e, b, h, g, _) + } : function(e, r, t) { + Pr(e, v, h, g, _) + }); + return e + }, + environ_get: function(e, r) { + var t = 0; + return Ir().forEach((function(n, i) { + var a = r + t; + q[e + 4 * i >> 2] = a, + function(e, r, t) { + for (var n = 0; n < e.length; ++n) O[r++ >> 0] = e.charCodeAt(n); + t || (O[r >> 0] = 0) + }(n, a), t += n.length + 1 + })), 0 + }, + environ_sizes_get: function(e, r) { + var t = Ir(); + q[e >> 2] = t.length; + var n = 0; + return t.forEach((function(e) { + n += e.length + 1 + })), q[r >> 2] = n, 0 + }, + exit: function(e) { + Ct(e) + }, + fd_close: function(e) { + try { + var r = Te.getStreamFromFD(e); + return Pe.close(r), 0 + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno + } + }, + fd_fdstat_get: function(e, r) { + try { + var t = Te.getStreamFromFD(e), + n = t.tty ? 2 : Pe.isDir(t.mode) ? 3 : Pe.isLink(t.mode) ? 7 : 4; + return O[r >> 0] = n, 0 + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno + } + }, + fd_read: function(e, r, t, n) { + try { + var i = Te.getStreamFromFD(e), + a = Te.doReadv(i, r, t); + return q[n >> 2] = a, 0 + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno + } + }, + fd_seek: function(e, r, t, n, i) { + try { + var a = Te.getStreamFromFD(e), + o = 4294967296 * t + (r >>> 0), + u = 9007199254740992; + return o <= -u || o >= u ? -61 : (Pe.llseek(a, o, n), _e = [a.position >>> 0, (he = a.position, +ae(he) >= 1 ? he > 0 ? (0 | se(+ue(he / 4294967296), 4294967295)) >>> 0 : ~~+oe((he - +(~~he >>> 0)) / 4294967296) >>> 0 : 0)], q[i >> 2] = _e[0], q[i + 4 >> 2] = _e[1], a.getdents && 0 === o && 0 === n && (a.getdents = null), 0) + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno + } + }, + fd_write: function(e, r, t, n) { + try { + var i = Te.getStreamFromFD(e), + a = Te.doWritev(i, r, t); + return q[n >> 2] = a, 0 + } catch (e) { + return void 0 !== Pe && e instanceof Pe.ErrnoError || pe(e), e.errno + } + }, + getCanvasPaddingLeft: function() { + return r.canvas.style.paddingLeft + }, + getCanvasPaddingTop: function() { + return r.canvas.style.paddingTop + }, + getTempRet0: function() { + return 0 | E + }, + gettimeofday: function(e) { + var r = Date.now(); + return q[e >> 2] = r / 1e3 | 0, q[e + 4 >> 2] = r % 1e3 * 1e3 | 0, 0 + }, + glActiveTexture: function(e) { + Or.activeTexture(e) + }, + glAttachShader: function(e, r) { + Or.attachShader(Ue.programs[e], Ue.shaders[r]) + }, + glBindAttribLocation: function(e, r, t) { + Or.bindAttribLocation(Ue.programs[e], r, L(t)) + }, + glBindBuffer: function(e, r) { + 35051 == e ? Or.currentPixelPackBufferBinding = r : 35052 == e && (Or.currentPixelUnpackBufferBinding = r), Or.bindBuffer(e, Ue.buffers[r]) + }, + glBindFramebuffer: function(e, r) { + Or.bindFramebuffer(e, Ue.framebuffers[r]) + }, + glBindRenderbuffer: function(e, r) { + Or.bindRenderbuffer(e, Ue.renderbuffers[r]) + }, + glBindTexture: function(e, r) { + Or.bindTexture(e, Ue.textures[r]) + }, + glBlendEquation: function(e) { + Or.blendEquation(e) + }, + glBlendEquationSeparate: function(e, r) { + Or.blendEquationSeparate(e, r) + }, + glBlendFunc: function(e, r) { + Or.blendFunc(e, r) + }, + glBlendFuncSeparate: function(e, r, t, n) { + Or.blendFuncSeparate(e, r, t, n) + }, + glBufferData: function(e, r, t, n) { + Ue.currentContext.version >= 2 ? t ? Or.bufferData(e, G, n, t, r) : Or.bufferData(e, r, n) : Or.bufferData(e, t ? G.subarray(t, t + r) : r, n) + }, + glBufferSubData: function(e, r, t, n) { + Ue.currentContext.version >= 2 ? Or.bufferSubData(e, r, G, n, t) : Or.bufferSubData(e, r, G.subarray(n, n + t)) + }, + glCheckFramebufferStatus: function(e) { + return Or.checkFramebufferStatus(e) + }, + glClear: function(e) { + Or.clear(e) + }, + glClearColor: function(e, r, t, n) { + Or.clearColor(e, r, t, n) + }, + glColorMask: function(e, r, t, n) { + Or.colorMask(!!e, !!r, !!t, !!n) + }, + glCompileShader: function(e) { + Or.compileShader(Ue.shaders[e]) + }, + glCompressedTexImage2D: function(e, r, t, n, i, a, o, u) { + Ue.currentContext.version >= 2 ? Or.currentPixelUnpackBufferBinding ? Or.compressedTexImage2D(e, r, t, n, i, a, o, u) : Or.compressedTexImage2D(e, r, t, n, i, a, G, u, o) : Or.compressedTexImage2D(e, r, t, n, i, a, u ? G.subarray(u, u + o) : null) + }, + glCreateProgram: function() { + var e = Ue.getNewId(Ue.programs), + r = Or.createProgram(); + return r.name = e, Ue.programs[e] = r, e + }, + glCreateShader: function(e) { + var r = Ue.getNewId(Ue.shaders); + return Ue.shaders[r] = Or.createShader(e), r + }, + glDeleteBuffers: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.buffers[n]; + i && (Or.deleteBuffer(i), i.name = 0, Ue.buffers[n] = null, n == Ue.currArrayBuffer && (Ue.currArrayBuffer = 0), n == Ue.currElementArrayBuffer && (Ue.currElementArrayBuffer = 0), n == Or.currentPixelPackBufferBinding && (Or.currentPixelPackBufferBinding = 0), n == Or.currentPixelUnpackBufferBinding && (Or.currentPixelUnpackBufferBinding = 0)) + } + }, + glDeleteFramebuffers: function(e, r) { + for (var t = 0; t < e; ++t) { + var n = q[r + 4 * t >> 2], + i = Ue.framebuffers[n]; + i && (Or.deleteFramebuffer(i), i.name = 0, Ue.framebuffers[n] = null) + } + }, + glDeleteProgram: function(e) { + if (e) { + var r = Ue.programs[e]; + r ? (Or.deleteProgram(r), r.name = 0, Ue.programs[e] = null, Ue.programInfos[e] = null) : Ue.recordError(1281) + } + }, + glDeleteRenderbuffers: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.renderbuffers[n]; + i && (Or.deleteRenderbuffer(i), i.name = 0, Ue.renderbuffers[n] = null) + } + }, + glDeleteShader: function(e) { + if (e) { + var r = Ue.shaders[e]; + r ? (Or.deleteShader(r), Ue.shaders[e] = null) : Ue.recordError(1281) + } + }, + glDeleteTextures: function(e, r) { + for (var t = 0; t < e; t++) { + var n = q[r + 4 * t >> 2], + i = Ue.textures[n]; + i && (Or.deleteTexture(i), i.name = 0, Ue.textures[n] = null) + } + }, + glDetachShader: function(e, r) { + Or.detachShader(Ue.programs[e], Ue.shaders[r]) + }, + glDisable: function(e) { + Or.disable(e) + }, + glDisableVertexAttribArray: function(e) { + Or.disableVertexAttribArray(e) + }, + glDrawArrays: function(e, r, t) { + Or.drawArrays(e, r, t) + }, + glDrawElements: nr, + glEnable: function(e) { + Or.enable(e) + }, + glEnableVertexAttribArray: function(e) { + Or.enableVertexAttribArray(e) + }, + glFramebufferRenderbuffer: function(e, r, t, n) { + Or.framebufferRenderbuffer(e, r, t, Ue.renderbuffers[n]) + }, + glFramebufferTexture2D: function(e, r, t, n, i) { + Or.framebufferTexture2D(e, r, t, Ue.textures[n], i) + }, + glFrontFace: function(e) { + Or.frontFace(e) + }, + glGenBuffers: function(e, r) { + ir(e, r, "createBuffer", Ue.buffers) + }, + glGenFramebuffers: function(e, r) { + ir(e, r, "createFramebuffer", Ue.framebuffers) + }, + glGenRenderbuffers: function(e, r) { + ir(e, r, "createRenderbuffer", Ue.renderbuffers) + }, + glGenTextures: function(e, r) { + ir(e, r, "createTexture", Ue.textures) + }, + glGetActiveAttrib: function(e, r, t, n, i, a, o) { + e = Ue.programs[e]; + var u = Or.getActiveAttrib(e, r); + if (u) { + var s = t > 0 && o ? B(u.name, o, t) : 0; + n && (q[n >> 2] = s), i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type) + } + }, + glGetActiveUniform: function(e, r, t, n, i, a, o) { + e = Ue.programs[e]; + var u = Or.getActiveUniform(e, r); + if (u) { + var s = t > 0 && o ? B(u.name, o, t) : 0; + n && (q[n >> 2] = s), i && (q[i >> 2] = u.size), a && (q[a >> 2] = u.type) + } + }, + glGetAttribLocation: function(e, r) { + return Or.getAttribLocation(Ue.programs[e], L(r)) + }, + glGetError: function() { + var e = Or.getError() || Ue.lastError; + return Ue.lastError = 0, e + }, + glGetFramebufferAttachmentParameteriv: function(e, r, t, n) { + var i = Or.getFramebufferAttachmentParameter(e, r, t); + (i instanceof WebGLRenderbuffer || i instanceof WebGLTexture) && (i = 0 | i.name), q[n >> 2] = i + }, + glGetIntegerv: function(e, r) { + or(e, r, 0) + }, + glGetProgramInfoLog: function(e, r, t, n) { + var i = Or.getProgramInfoLog(Ue.programs[e]); + null === i && (i = "(unknown error)"); + var a = r > 0 && n ? B(i, n, r) : 0; + t && (q[t >> 2] = a) + }, + glGetProgramiv: function(e, r, t) { + if (t) + if (e >= Ue.counter) Ue.recordError(1281); + else { + var n = Ue.programInfos[e]; + if (n) + if (35716 == r) { + var i = Or.getProgramInfoLog(Ue.programs[e]); + null === i && (i = "(unknown error)"), q[t >> 2] = i.length + 1 + } else if (35719 == r) q[t >> 2] = n.maxUniformLength; + else if (35722 == r) { + if (-1 == n.maxAttributeLength) { + e = Ue.programs[e]; + var a = Or.getProgramParameter(e, 35721); + n.maxAttributeLength = 0; + for (var o = 0; o < a; ++o) { + var u = Or.getActiveAttrib(e, o); + n.maxAttributeLength = Math.max(n.maxAttributeLength, u.name.length + 1) + } + } + q[t >> 2] = n.maxAttributeLength + } else if (35381 == r) { + if (-1 == n.maxUniformBlockNameLength) { + e = Ue.programs[e]; + var s = Or.getProgramParameter(e, 35382); + n.maxUniformBlockNameLength = 0; + for (o = 0; o < s; ++o) { + var c = Or.getActiveUniformBlockName(e, o); + n.maxUniformBlockNameLength = Math.max(n.maxUniformBlockNameLength, c.length + 1) + } + } + q[t >> 2] = n.maxUniformBlockNameLength + } else q[t >> 2] = Or.getProgramParameter(Ue.programs[e], r); + else Ue.recordError(1282) + } + else Ue.recordError(1281) + }, + glGetShaderInfoLog: function(e, r, t, n) { + var i = Or.getShaderInfoLog(Ue.shaders[e]); + null === i && (i = "(unknown error)"); + var a = r > 0 && n ? B(i, n, r) : 0; + t && (q[t >> 2] = a) + }, + glGetShaderiv: function(e, r, t) { + if (t) + if (35716 == r) { + var n = Or.getShaderInfoLog(Ue.shaders[e]); + null === n && (n = "(unknown error)"), q[t >> 2] = n.length + 1 + } else if (35720 == r) { + var i = Or.getShaderSource(Ue.shaders[e]), + a = null === i || 0 == i.length ? 0 : i.length + 1; + q[t >> 2] = a + } else q[t >> 2] = Or.getShaderParameter(Ue.shaders[e], r); + else Ue.recordError(1281) + }, + glGetString: function(e) { + if (Ue.stringCache[e]) return Ue.stringCache[e]; + var r; + switch (e) { + case 7939: + var t = Or.getSupportedExtensions() || []; + r = sr((t = t.concat(t.map((function(e) { + return "GL_" + e + })))).join(" ")); + break; + case 7936: + case 7937: + case 37445: + case 37446: + var n = Or.getParameter(e); + n || Ue.recordError(1280), r = sr(n); + break; + case 7938: + var i = Or.getParameter(7938); + r = sr(i = Ue.currentContext.version >= 2 ? "OpenGL ES 3.0 (" + i + ")" : "OpenGL ES 2.0 (" + i + ")"); + break; + case 35724: + var a = Or.getParameter(35724), + o = a.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/); + null !== o && (3 == o[1].length && (o[1] = o[1] + "0"), a = "OpenGL ES GLSL ES " + o[1] + " (" + a + ")"), r = sr(a); + break; + default: + return Ue.recordError(1280), 0 + } + return Ue.stringCache[e] = r, r + }, + glGetUniformLocation: function(e, r) { + var t = 0; + if ("]" == (r = L(r))[r.length - 1]) { + var n = r.lastIndexOf("["); + t = "]" != r[n + 1] ? cr(r.slice(n + 1)) : 0, r = r.slice(0, n) + } + var i = Ue.programInfos[e] && Ue.programInfos[e].uniforms[r]; + return i && t >= 0 && t < i[0] ? i[1] + t : -1 + }, + glIsEnabled: function(e) { + return Or.isEnabled(e) + }, + glLineWidth: function(e) { + Or.lineWidth(e) + }, + glLinkProgram: function(e) { + Or.linkProgram(Ue.programs[e]), Ue.populateUniformTable(e) + }, + glPixelStorei: function(e, r) { + 3317 == e && (Ue.unpackAlignment = r), Or.pixelStorei(e, r) + }, + glReadPixels: function(e, r, t, n, i, a, o) { + if (Ue.currentContext.version >= 2) + if (Or.currentPixelPackBufferBinding) Or.readPixels(e, r, t, n, i, a, o); + else { + var u = dr(a); + Or.readPixels(e, r, t, n, i, a, u, o >> mr(u)) + } + else { + var s = pr(a, i, t, n, o); + s ? Or.readPixels(e, r, t, n, i, a, s) : Ue.recordError(1280) + } + }, + glRenderbufferStorage: function(e, r, t, n) { + Or.renderbufferStorage(e, r, t, n) + }, + glScissor: function(e, r, t, n) { + Or.scissor(e, r, t, n) + }, + glShaderBinary: function() { + Ue.recordError(1280) + }, + glShaderSource: function(e, r, t, n) { + var i = Ue.getSource(e, r, t, n); + Or.shaderSource(Ue.shaders[e], i) + }, + glStencilFunc: function(e, r, t) { + Or.stencilFunc(e, r, t) + }, + glStencilOp: function(e, r, t) { + Or.stencilOp(e, r, t) + }, + glTexImage2D: function(e, r, t, n, i, a, o, u, s) { + if (Ue.currentContext.version >= 2) + if (Or.currentPixelUnpackBufferBinding) Or.texImage2D(e, r, t, n, i, a, o, u, s); + else if (s) { + var c = dr(u); + Or.texImage2D(e, r, t, n, i, a, o, u, c, s >> mr(c)) + } else Or.texImage2D(e, r, t, n, i, a, o, u, null); + else Or.texImage2D(e, r, t, n, i, a, o, u, s ? pr(u, o, n, i, s) : null) + }, + glTexParameteri: function(e, r, t) { + Or.texParameteri(e, r, t) + }, + glTexSubImage2D: function(e, r, t, n, i, a, o, u, s) { + if (Ue.currentContext.version >= 2) + if (Or.currentPixelUnpackBufferBinding) Or.texSubImage2D(e, r, t, n, i, a, o, u, s); + else if (s) { + var c = dr(u); + Or.texSubImage2D(e, r, t, n, i, a, o, u, c, s >> mr(c)) + } else Or.texSubImage2D(e, r, t, n, i, a, o, u, null); + else { + var l = null; + s && (l = pr(u, o, i, a, s)), Or.texSubImage2D(e, r, t, n, i, a, o, u, l) + } + }, + glUniform1f: function(e, r) { + Or.uniform1f(Ue.uniforms[e], r) + }, + glUniform1fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform1fv(Ue.uniforms[e], V, t >> 2, r); + else { + if (r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferFloatViews[r - 1], i = 0; i < r; ++i) n[i] = V[t + 4 * i >> 2]; + else n = V.subarray(t >> 2, t + 4 * r >> 2); + Or.uniform1fv(Ue.uniforms[e], n) + } + }, + glUniform1i: function(e, r) { + Or.uniform1i(Ue.uniforms[e], r) + }, + glUniform1iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform1iv(Ue.uniforms[e], q, t >> 2, r); + else { + if (r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[r - 1], i = 0; i < r; ++i) n[i] = q[t + 4 * i >> 2]; + else n = q.subarray(t >> 2, t + 4 * r >> 2); + Or.uniform1iv(Ue.uniforms[e], n) + } + }, + glUniform2f: function(e, r, t) { + Or.uniform2f(Ue.uniforms[e], r, t) + }, + glUniform2fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform2fv(Ue.uniforms[e], V, t >> 2, 2 * r); + else { + if (2 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferFloatViews[2 * r - 1], i = 0; i < 2 * r; i += 2) n[i] = V[t + 4 * i >> 2], n[i + 1] = V[t + (4 * i + 4) >> 2]; + else n = V.subarray(t >> 2, t + 8 * r >> 2); + Or.uniform2fv(Ue.uniforms[e], n) + } + }, + glUniform2iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform2iv(Ue.uniforms[e], q, t >> 2, 2 * r); + else { + if (2 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[2 * r - 1], i = 0; i < 2 * r; i += 2) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2]; + else n = q.subarray(t >> 2, t + 8 * r >> 2); + Or.uniform2iv(Ue.uniforms[e], n) + } + }, + glUniform3fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform3fv(Ue.uniforms[e], V, t >> 2, 3 * r); + else { + if (3 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferFloatViews[3 * r - 1], i = 0; i < 3 * r; i += 3) n[i] = V[t + 4 * i >> 2], n[i + 1] = V[t + (4 * i + 4) >> 2], n[i + 2] = V[t + (4 * i + 8) >> 2]; + else n = V.subarray(t >> 2, t + 12 * r >> 2); + Or.uniform3fv(Ue.uniforms[e], n) + } + }, + glUniform3iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform3iv(Ue.uniforms[e], q, t >> 2, 3 * r); + else { + if (3 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[3 * r - 1], i = 0; i < 3 * r; i += 3) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2], n[i + 2] = q[t + (4 * i + 8) >> 2]; + else n = q.subarray(t >> 2, t + 12 * r >> 2); + Or.uniform3iv(Ue.uniforms[e], n) + } + }, + glUniform4f: function(e, r, t, n, i) { + Or.uniform4f(Ue.uniforms[e], r, t, n, i) + }, + glUniform4fv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform4fv(Ue.uniforms[e], V, t >> 2, 4 * r); + else { + if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) { + var n = Ue.miniTempBufferFloatViews[4 * r - 1], + i = V; + t >>= 2; + for (var a = 0; a < 4 * r; a += 4) { + var o = t + a; + n[a] = i[o], n[a + 1] = i[o + 1], n[a + 2] = i[o + 2], n[a + 3] = i[o + 3] + } + } else n = V.subarray(t >> 2, t + 16 * r >> 2); + Or.uniform4fv(Ue.uniforms[e], n) + } + }, + glUniform4iv: function(e, r, t) { + if (Ue.currentContext.version >= 2) Or.uniform4iv(Ue.uniforms[e], q, t >> 2, 4 * r); + else { + if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var n = Ue.miniTempBufferIntViews[4 * r - 1], i = 0; i < 4 * r; i += 4) n[i] = q[t + 4 * i >> 2], n[i + 1] = q[t + (4 * i + 4) >> 2], n[i + 2] = q[t + (4 * i + 8) >> 2], n[i + 3] = q[t + (4 * i + 12) >> 2]; + else n = q.subarray(t >> 2, t + 16 * r >> 2); + Or.uniform4iv(Ue.uniforms[e], n) + } + }, + glUniformMatrix2fv: function(e, r, t, n) { + if (Ue.currentContext.version >= 2) Or.uniformMatrix2fv(Ue.uniforms[e], !!t, V, n >> 2, 4 * r); + else { + if (4 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var i = Ue.miniTempBufferFloatViews[4 * r - 1], a = 0; a < 4 * r; a += 4) i[a] = V[n + 4 * a >> 2], i[a + 1] = V[n + (4 * a + 4) >> 2], i[a + 2] = V[n + (4 * a + 8) >> 2], i[a + 3] = V[n + (4 * a + 12) >> 2]; + else i = V.subarray(n >> 2, n + 16 * r >> 2); + Or.uniformMatrix2fv(Ue.uniforms[e], !!t, i) + } + }, + glUniformMatrix3fv: function(e, r, t, n) { + if (Ue.currentContext.version >= 2) Or.uniformMatrix3fv(Ue.uniforms[e], !!t, V, n >> 2, 9 * r); + else { + if (9 * r <= Ue.MINI_TEMP_BUFFER_SIZE) + for (var i = Ue.miniTempBufferFloatViews[9 * r - 1], a = 0; a < 9 * r; a += 9) i[a] = V[n + 4 * a >> 2], i[a + 1] = V[n + (4 * a + 4) >> 2], i[a + 2] = V[n + (4 * a + 8) >> 2], i[a + 3] = V[n + (4 * a + 12) >> 2], i[a + 4] = V[n + (4 * a + 16) >> 2], i[a + 5] = V[n + (4 * a + 20) >> 2], i[a + 6] = V[n + (4 * a + 24) >> 2], i[a + 7] = V[n + (4 * a + 28) >> 2], i[a + 8] = V[n + (4 * a + 32) >> 2]; + else i = V.subarray(n >> 2, n + 36 * r >> 2); + Or.uniformMatrix3fv(Ue.uniforms[e], !!t, i) + } + }, + glUniformMatrix4fv: function(e, r, t, n) { + if (Ue.currentContext.version >= 2) Or.uniformMatrix4fv(Ue.uniforms[e], !!t, V, n >> 2, 16 * r); + else { + if (16 * r <= Ue.MINI_TEMP_BUFFER_SIZE) { + var i = Ue.miniTempBufferFloatViews[16 * r - 1], + a = V; + n >>= 2; + for (var o = 0; o < 16 * r; o += 16) { + var u = n + o; + i[o] = a[u], i[o + 1] = a[u + 1], i[o + 2] = a[u + 2], i[o + 3] = a[u + 3], i[o + 4] = a[u + 4], i[o + 5] = a[u + 5], i[o + 6] = a[u + 6], i[o + 7] = a[u + 7], i[o + 8] = a[u + 8], i[o + 9] = a[u + 9], i[o + 10] = a[u + 10], i[o + 11] = a[u + 11], i[o + 12] = a[u + 12], i[o + 13] = a[u + 13], i[o + 14] = a[u + 14], i[o + 15] = a[u + 15] + } + } else i = V.subarray(n >> 2, n + 64 * r >> 2); + Or.uniformMatrix4fv(Ue.uniforms[e], !!t, i) + } + }, + glUseProgram: function(e) { + Or.useProgram(Ue.programs[e]) + }, + glVertexAttrib1fv: function(e, r) { + Or.vertexAttrib1f(e, V[r >> 2]) + }, + glVertexAttrib2fv: function(e, r) { + Or.vertexAttrib2f(e, V[r >> 2], V[r + 4 >> 2]) + }, + glVertexAttrib3fv: function(e, r) { + Or.vertexAttrib3f(e, V[r >> 2], V[r + 4 >> 2], V[r + 8 >> 2]) + }, + glVertexAttrib4f: function(e, r, t, n, i) { + Or.vertexAttrib4f(e, r, t, n, i) + }, + glVertexAttrib4fv: function(e, r) { + Or.vertexAttrib4f(e, V[r >> 2], V[r + 4 >> 2], V[r + 8 >> 2], V[r + 12 >> 2]) + }, + glVertexAttribPointer: function(e, r, t, n, i, a) { + Or.vertexAttribPointer(e, r, t, !!n, i, a) + }, + glViewport: function(e, r, t, n) { + Or.viewport(e, r, t, n) + }, + gmtime_r: function(e, r) { + var t = new Date(1e3 * q[e >> 2]); + q[r >> 2] = t.getUTCSeconds(), q[r + 4 >> 2] = t.getUTCMinutes(), q[r + 8 >> 2] = t.getUTCHours(), q[r + 12 >> 2] = t.getUTCDate(), q[r + 16 >> 2] = t.getUTCMonth(), q[r + 20 >> 2] = t.getUTCFullYear() - 1900, q[r + 24 >> 2] = t.getUTCDay(), q[r + 36 >> 2] = 0, q[r + 32 >> 2] = 0; + var n = Date.UTC(t.getUTCFullYear(), 0, 1, 0, 0, 0, 0), + i = (t.getTime() - n) / 864e5 | 0; + return q[r + 28 >> 2] = i, q[r + 40 >> 2] = Br, r + }, + invoke_di: function(e, r) { + var t = yt(); + try { + return bt(e, r) + } catch (e) { + if (Et(t), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_i: function(e) { + var r = yt(); + try { + return lt(e) + } catch (e) { + if (Et(r), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_ii: function(e, r) { + var t = yt(); + try { + return ft(e, r) + } catch (e) { + if (Et(t), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iid: function(e, r, t) { + var n = yt(); + try { + return _t(e, r, t) + } catch (e) { + if (Et(n), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iii: function(e, r, t) { + var n = yt(); + try { + return dt(e, r, t) + } catch (e) { + if (Et(n), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iiii: function(e, r, t, n) { + var i = yt(); + try { + return mt(e, r, t, n) + } catch (e) { + if (Et(i), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iiiii: function(e, r, t, n, i) { + var a = yt(); + try { + return pt(e, r, t, n, i) + } catch (e) { + if (Et(a), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iiiiii: function(e, r, t, n, i, a) { + var o = yt(); + try { + return vt(e, r, t, n, i, a) + } catch (e) { + if (Et(o), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iiiiiii: function(e, r, t, n, i, a, o) { + var u = yt(); + try { + return gt(e, r, t, n, i, a, o) + } catch (e) { + if (Et(u), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_iiiiiiii: function(e, r, t, n, i, a, o, u) { + var s = yt(); + try { + return ht(e, r, t, n, i, a, o, u) + } catch (e) { + if (Et(s), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_vi: function(e, r) { + var t = yt(); + try { + it(e, r) + } catch (e) { + if (Et(t), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_vii: function(e, r, t) { + var n = yt(); + try { + at(e, r, t) + } catch (e) { + if (Et(n), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_viii: function(e, r, t, n) { + var i = yt(); + try { + ot(e, r, t, n) + } catch (e) { + if (Et(i), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_viiii: function(e, r, t, n, i) { + var a = yt(); + try { + ut(e, r, t, n, i) + } catch (e) { + if (Et(a), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_viiiii: function(e, r, t, n, i, a) { + var o = yt(); + try { + st(e, r, t, n, i, a) + } catch (e) { + if (Et(o), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + invoke_viiiiii: function(e, r, t, n, i, a, o) { + var u = yt(); + try { + ct(e, r, t, n, i, a, o) + } catch (e) { + if (Et(u), e !== e + 0 && "longjmp" !== e) throw e; + nt(1, 0) + } + }, + localtime: function(e) { + return Mr(e, 1052512) + }, + localtime_r: Mr, + memory: w, + mktime: function(e) { + Rr(); + var r = new Date(q[e + 20 >> 2] + 1900, q[e + 16 >> 2], q[e + 12 >> 2], q[e + 8 >> 2], q[e + 4 >> 2], q[e >> 2], 0), + t = q[e + 32 >> 2], + n = r.getTimezoneOffset(), + i = new Date(r.getFullYear(), 0, 1), + a = new Date(r.getFullYear(), 6, 1).getTimezoneOffset(), + o = i.getTimezoneOffset(), + u = Math.min(o, a); + if (t < 0) q[e + 32 >> 2] = Number(a != o && u == n); + else if (t > 0 != (u == n)) { + var s = Math.max(o, a), + c = t > 0 ? u : s; + r.setTime(r.getTime() + 6e4 * (c - n)) + } + q[e + 24 >> 2] = r.getDay(); + var l = (r.getTime() - i.getTime()) / 864e5 | 0; + return q[e + 28 >> 2] = l, r.getTime() / 1e3 | 0 + }, + nanosleep: function(e, r) { + if (0 === e) return xe(28), -1; + var t = q[e >> 2], + n = q[e + 4 >> 2]; + return n < 0 || n > 999999999 || t < 0 ? (xe(28), -1) : (0 !== r && (q[r >> 2] = 0, q[r + 4 >> 2] = 0), Nr(1e6 * t + n / 1e3)) + }, + round: function(e) { + return (e = +e) >= 0 ? +ue(e + .5) : +oe(e - .5) + }, + saveSetjmp: function e(r, t, n, i) { + t |= 0, n |= 0, i |= 0; + var a = 0; + for (hr = hr + 1 | 0, q[(r |= 0) >> 2] = hr; + (0 | a) < (0 | i);) { + if (0 == (0 | q[n + (a << 3) >> 2])) return q[n + (a << 3) >> 2] = hr, q[n + (4 + (a << 3)) >> 2] = t, q[n + (8 + (a << 3)) >> 2] = 0, x(0 | i), 0 | n; + a = a + 1 | 0 + } + return n = 0 | e(0 | r, 0 | t, 0 | (n = 0 | Kr(0 | n, 8 * ((i = 2 * i | 0) + 1 | 0) | 0)), 0 | i), x(0 | i), 0 | n + }, + setTempRet0: function(e) { + x(0 | e) + }, + sigaction: function(e, r, t) { + return 0 + }, + signal: function(e, r) { + return 14 == e && r, 0 + }, + sysconf: function(e) { + switch (e) { + case 30: + return 16384; + case 85: + return 131072; + case 132: + case 133: + case 12: + case 137: + case 138: + case 15: + case 235: + case 16: + case 17: + case 18: + case 19: + case 20: + case 149: + case 13: + case 10: + case 236: + case 153: + case 9: + case 21: + case 22: + case 159: + case 154: + case 14: + case 77: + case 78: + case 139: + case 80: + case 81: + case 82: + case 68: + case 67: + case 164: + case 11: + case 29: + case 47: + case 48: + case 95: + case 52: + case 51: + case 46: + case 79: + return 200809; + case 27: + case 246: + case 127: + case 128: + case 23: + case 24: + case 160: + case 161: + case 181: + case 182: + case 242: + case 183: + case 184: + case 243: + case 244: + case 245: + case 165: + case 178: + case 179: + case 49: + case 50: + case 168: + case 169: + case 175: + case 170: + case 171: + case 172: + case 97: + case 76: + case 32: + case 173: + case 35: + return -1; + case 176: + case 177: + case 7: + case 155: + case 8: + case 157: + case 125: + case 126: + case 92: + case 93: + case 129: + case 130: + case 131: + case 94: + case 91: + return 1; + case 74: + case 60: + case 69: + case 70: + case 4: + return 1024; + case 31: + case 42: + case 72: + return 32; + case 87: + case 26: + case 33: + return 2147483647; + case 34: + case 1: + return 47839; + case 38: + case 36: + return 99; + case 43: + case 37: + return 2048; + case 0: + return 2097152; + case 3: + return 65536; + case 28: + return 32768; + case 44: + return 32767; + case 75: + return 16384; + case 39: + return 1e3; + case 89: + return 700; + case 71: + return 256; + case 40: + return 255; + case 2: + return 100; + case 180: + return 64; + case 25: + return 20; + case 5: + return 16; + case 6: + return 6; + case 73: + return 4; + case 84: + return "object" == typeof navigator && navigator.hardwareConcurrency || 1 + } + return xe(28), -1 + }, + table: C, + testSetjmp: function(e, r, t) { + e |= 0, r |= 0, t |= 0; + for (var n = 0, i = 0; + (0 | n) < (0 | t) && 0 != (0 | (i = 0 | q[r + (n << 3) >> 2]));) { + if ((0 | i) == (0 | e)) return 0 | q[r + (4 + (n << 3)) >> 2]; + n = n + 1 | 0 + } + return 0 + }, + time: function(e) { + var r = Date.now() / 1e3 | 0; + return e && (q[e >> 2] = r), r + }, + usleep: Nr, + wafjs_file_loaddata: function(e) { + const t = localStorage.getItem(L(e)); + if (t && t.length > 0) { + const e = new Uint8Array(JSON.parse(t)), + n = r._malloc(e.length + 4); + return r.HEAP8.set(e, n + 4), r.HEAP32[n >> 2] = e.length, n + } + return 0 + }, + wafjs_file_savedata: function(e, t, n) { + if (t && n > 0) { + const i = L(e), + a = new Uint8Array(r.HEAP8.buffer, t, n); + a && a.length > 0 ? localStorage.setItem(i, JSON.stringify(Array.from(a))) : localStorage.removeItem(i) + } + }, + wafjs_hal_inputtext_begin: function(e, t, n, i, a, o, u, s, c) { + const l = document.createElement("input"); + l.value = L(e), l.style.position = "absolute", l.style.resize = "none", l.style.overflow = "hidden", l.style.zIndex = -999, l.style.top = "50%", l.style.left = "50%", l.style.width = "32px", l.wafSelectionStart = l.wafSelectionEnd = l.value ? l.value.length : 0; + let f = !1, + d = !1; + const m = (e, r) => { + ut(u, c, 0, e, r) + }; + window.requestAnimationFrame((function() { + l.focus() + })), l.addEventListener("input", (function(e) { + if ("insertCompositionText" != e.inputType || e.isComposing) { + if ("deleteContentForward" == e.inputType || "insertText" == e.inputType && null == e.data) m(l.wafSelectionStart, l.wafSelectionEnd + 1); + else if ("deleteContentBackward" == e.inputType) { + if (l.wafSelectionStart <= 0) return; + m(l.wafSelectionStart - 1, l.wafSelectionEnd), l.wafSelectionEnd = --l.wafSelectionStart + } else { + const r = e.data || ""; + let t = l.wafSelectionStart, + n = l.wafSelectionEnd; + e.isComposing ? (f ? (l.wafSelectionEnd = ++l.wafSelectionStart, f = !1) : t -= 1, r || (l.wafSelectionEnd = --l.wafSelectionStart)) : l.wafSelectionEnd = ++l.wafSelectionStart, ((e, r, t) => { + const n = R(e) + 1, + i = Zr(n); + B(e, i, n), ut(u, c, i, r, t) + })(r, t, n) + } + var r, t; + r = l.wafSelectionStart, t = l.wafSelectionEnd, ot(s, c, r, t) + } + })), l.addEventListener("select", (e => { + e.preventDefault(), e.stopPropagation() + })), l.addEventListener("keydown", (e => { + d = !0; + const t = e.key, + n = e.ctrlKey && "/a/A/c/C/v/V/".indexOf("/" + t + "/") >= 0, + i = "Home" == t || "End" == t, + a = (e.ctrlKey || e.shiftKey) && "/Home/End/ArrowUp/ArrowDown/ArrowLeft/ArrowRight/".indexOf("/" + t + "/") >= 0; + if (n || a || i) return e.preventDefault(), void e.stopPropagation(); + const o = new e.constructor(e.type, e); + r.canvas.dispatchEvent(o) + })), l.addEventListener("keyup", (e => { + d = !1; + const t = new e.constructor(e.type, e); + r.canvas.dispatchEvent(t) + })), l.addEventListener("keypress", (e => {})), l.addEventListener("compositionstart", (e => { + f = !0 + })), l.addEventListener("compositionupdate", (e => {})), l.addEventListener("compositionend", (e => {})), !r.canvas.inputTextFocusHandler && (r.canvas.inputTextFocusHandler = e => { + r.canvas.wafActiveInputText && window.requestAnimationFrame((function() { + r.canvas.wafActiveInputText.focus() + })) + }, r.canvas.addEventListener("focus", r.canvas.inputTextFocusHandler)), r.canvas.parentNode.appendChild(l), r.canvas.wafActiveInputText = l + }, + wafjs_hidestatus: function() { + "function" == typeof r.hideStatus && r.hideStatus() + }, + wafjs_setcontentinfo: function(e, t, n) { + r.canvas.setAttribute("waf-content-width", e), r.canvas.setAttribute("waf-content-height", t), r.canvas.setAttribute("waf-content-fps", n), r.canvas.style.setProperty("--waf-content-width", e + "px"), r.canvas.style.setProperty("--waf-content-height", t + "px") + }, + wafjs_setstatus: function(e) { + "function" == typeof r.setStatus && r.setStatus(L(e)) + }, + wafjs_url_transformNavigateUrl: function(e, t) { + const n = L(e), + i = L(t) || "_self", + a = r.WAFLASH, + o = a && a.hal && "function" == typeof a.hal.url_transformNavigateUrl && a.hal.url_transformNavigateUrl(n, i); + "function" == typeof o && window.requestAnimationFrame((() => o())) + }, + wafjs_url_transformRequestUrl: function(e) { + const t = L(e), + n = r.WAFLASH, + i = n ? n.hal && "function" == typeof n.hal.url_transformRequestUrl && n.hal.url_transformRequestUrl(t) : t; + if (i) { + const e = R(i) + 1, + r = Zr(e); + return B(i, r, e), r + } + return 0 + } + }, + Xr = function() { + var e = { + env: Vr, + wasi_snapshot_preview1: Vr + }; + + function t(e, t) { + var n = e.exports; + r.asm = n, me() + } + + function n(e) { + t(e.instance) + } + + function i(r) { + return (b || "function" != typeof fetch ? new Promise((function(e, r) { + e(ye()) + })) : fetch(be, { + credentials: "same-origin" + }).then((function(e) { + if (!e.ok) throw "failed to load wasm binary file at '" + be + "'"; + return e.arrayBuffer() + })).catch((function() { + return ye() + }))).then((function(r) { + return WebAssembly.instantiate(r, e) + })).then(r, (function(e) { + p("failed to asynchronously prepare wasm: " + e), pe(e) + })) + } + if (de(), r.instantiateWasm) try { + return r.instantiateWasm(e, t) + } catch (e) { + return p("Module.instantiateWasm callback failed with error: " + e), !1 + } + return function() { + if (b || "function" != typeof WebAssembly.instantiateStreaming || ve(be) || "function" != typeof fetch) return i(n); + fetch(be, { + credentials: "same-origin" + }).then((function(r) { + return WebAssembly.instantiateStreaming(r, e).then(n, (function(e) { + p("wasm streaming compile failed: " + e), p("falling back to ArrayBuffer instantiation"), i(n) + })) + })) + }(), {} + }(); + r.asm = Xr; + var Hr, Wr = r.___wasm_call_ctors = function() { + return (Wr = r.___wasm_call_ctors = r.asm.__wasm_call_ctors).apply(null, arguments) + }, + Yr = (r._reopenBuffer = function() { + return (r._reopenBuffer = r.asm.reopenBuffer).apply(null, arguments) + }, r._invokeExternalCallback = function() { + return (r._invokeExternalCallback = r.asm.invokeExternalCallback).apply(null, arguments) + }, r.___em_js__wafjs_setstatus = function() { + return (r.___em_js__wafjs_setstatus = r.asm.__em_js__wafjs_setstatus).apply(null, arguments) + }, r.___em_js__wafjs_hidestatus = function() { + return (r.___em_js__wafjs_hidestatus = r.asm.__em_js__wafjs_hidestatus).apply(null, arguments) + }, r.___em_js__wafjs_setcontentinfo = function() { + return (r.___em_js__wafjs_setcontentinfo = r.asm.__em_js__wafjs_setcontentinfo).apply(null, arguments) + }, r.___em_js__emscripten_set_canvas_element_id = function() { + return (r.___em_js__emscripten_set_canvas_element_id = r.asm.__em_js__emscripten_set_canvas_element_id).apply(null, arguments) + }, r.___em_js__emscripten_get_canvas_element_id = function() { + return (r.___em_js__emscripten_get_canvas_element_id = r.asm.__em_js__emscripten_get_canvas_element_id).apply(null, arguments) + }, r._memset = function() { + return (r._memset = r.asm.memset).apply(null, arguments) + }, r._strlen = function() { + return (Yr = r._strlen = r.asm.strlen).apply(null, arguments) + }), + Zr = (r._free = function() { + return (r._free = r.asm.free).apply(null, arguments) + }, r.___em_js__getCanvasPaddingLeft = function() { + return (r.___em_js__getCanvasPaddingLeft = r.asm.__em_js__getCanvasPaddingLeft).apply(null, arguments) + }, r.___em_js__getCanvasPaddingTop = function() { + return (r.___em_js__getCanvasPaddingTop = r.asm.__em_js__getCanvasPaddingTop).apply(null, arguments) + }, r._main = function() { + return (r._main = r.asm.main).apply(null, arguments) + }, r._fileno = function() { + return (r._fileno = r.asm.fileno).apply(null, arguments) + }, r.___em_js__wafjs_file_savedata = function() { + return (r.___em_js__wafjs_file_savedata = r.asm.__em_js__wafjs_file_savedata).apply(null, arguments) + }, r.___em_js__wafjs_file_loaddata = function() { + return (r.___em_js__wafjs_file_loaddata = r.asm.__em_js__wafjs_file_loaddata).apply(null, arguments) + }, r._memcpy = function() { + return (r._memcpy = r.asm.memcpy).apply(null, arguments) + }, r._malloc = function() { + return (Zr = r._malloc = r.asm.malloc).apply(null, arguments) + }), + Kr = (r.___em_js__wafjs_url_transformRequestUrl = function() { + return (r.___em_js__wafjs_url_transformRequestUrl = r.asm.__em_js__wafjs_url_transformRequestUrl).apply(null, arguments) + }, r.___em_js__wafjs_url_transformNavigateUrl = function() { + return (r.___em_js__wafjs_url_transformNavigateUrl = r.asm.__em_js__wafjs_url_transformNavigateUrl).apply(null, arguments) + }, r._strstr = function() { + return (r._strstr = r.asm.strstr).apply(null, arguments) + }, r.___em_js__changeCursor = function() { + return (r.___em_js__changeCursor = r.asm.__em_js__changeCursor).apply(null, arguments) + }, r._realloc = function() { + return (Kr = r._realloc = r.asm.realloc).apply(null, arguments) + }), + $r = r.___errno_location = function() { + return ($r = r.___errno_location = r.asm.__errno_location).apply(null, arguments) + }, + Jr = r._emscripten_GetProcAddress = function() { + return (Jr = r._emscripten_GetProcAddress = r.asm.emscripten_GetProcAddress).apply(null, arguments) + }, + et = r.__get_tzname = function() { + return (et = r.__get_tzname = r.asm._get_tzname).apply(null, arguments) + }, + rt = r.__get_daylight = function() { + return (rt = r.__get_daylight = r.asm._get_daylight).apply(null, arguments) + }, + tt = r.__get_timezone = function() { + return (tt = r.__get_timezone = r.asm._get_timezone).apply(null, arguments) + }, + nt = r._setThrew = function() { + return (nt = r._setThrew = r.asm.setThrew).apply(null, arguments) + }, + it = (r._emscripten_main_thread_process_queued_calls = function() { + return (r._emscripten_main_thread_process_queued_calls = r.asm.emscripten_main_thread_process_queued_calls).apply(null, arguments) + }, r.dynCall_vi = function() { + return (it = r.dynCall_vi = r.asm.dynCall_vi).apply(null, arguments) + }), + at = r.dynCall_vii = function() { + return (at = r.dynCall_vii = r.asm.dynCall_vii).apply(null, arguments) + }, + ot = r.dynCall_viii = function() { + return (ot = r.dynCall_viii = r.asm.dynCall_viii).apply(null, arguments) + }, + ut = r.dynCall_viiii = function() { + return (ut = r.dynCall_viiii = r.asm.dynCall_viiii).apply(null, arguments) + }, + st = r.dynCall_viiiii = function() { + return (st = r.dynCall_viiiii = r.asm.dynCall_viiiii).apply(null, arguments) + }, + ct = r.dynCall_viiiiii = function() { + return (ct = r.dynCall_viiiiii = r.asm.dynCall_viiiiii).apply(null, arguments) + }, + lt = r.dynCall_i = function() { + return (lt = r.dynCall_i = r.asm.dynCall_i).apply(null, arguments) + }, + ft = r.dynCall_ii = function() { + return (ft = r.dynCall_ii = r.asm.dynCall_ii).apply(null, arguments) + }, + dt = r.dynCall_iii = function() { + return (dt = r.dynCall_iii = r.asm.dynCall_iii).apply(null, arguments) + }, + mt = r.dynCall_iiii = function() { + return (mt = r.dynCall_iiii = r.asm.dynCall_iiii).apply(null, arguments) + }, + pt = r.dynCall_iiiii = function() { + return (pt = r.dynCall_iiiii = r.asm.dynCall_iiiii).apply(null, arguments) + }, + vt = r.dynCall_iiiiii = function() { + return (vt = r.dynCall_iiiiii = r.asm.dynCall_iiiiii).apply(null, arguments) + }, + gt = r.dynCall_iiiiiii = function() { + return (gt = r.dynCall_iiiiiii = r.asm.dynCall_iiiiiii).apply(null, arguments) + }, + ht = r.dynCall_iiiiiiii = function() { + return (ht = r.dynCall_iiiiiiii = r.asm.dynCall_iiiiiiii).apply(null, arguments) + }, + _t = r.dynCall_iid = function() { + return (_t = r.dynCall_iid = r.asm.dynCall_iid).apply(null, arguments) + }, + bt = r.dynCall_di = function() { + return (bt = r.dynCall_di = r.asm.dynCall_di).apply(null, arguments) + }, + yt = r.stackSave = function() { + return (yt = r.stackSave = r.asm.stackSave).apply(null, arguments) + }, + wt = r.stackAlloc = function() { + return (wt = r.stackAlloc = r.asm.stackAlloc).apply(null, arguments) + }, + Et = r.stackRestore = function() { + return (Et = r.stackRestore = r.asm.stackRestore).apply(null, arguments) + }; + r.__growWasmMemory = function() { + return (r.__growWasmMemory = r.asm.__growWasmMemory).apply(null, arguments) + }, r.dynCall_viiiiiii = function() { + return (r.dynCall_viiiiiii = r.asm.dynCall_viiiiiii).apply(null, arguments) + }, r.dynCall_viiiiiiiii = function() { + return (r.dynCall_viiiiiiiii = r.asm.dynCall_viiiiiiiii).apply(null, arguments) + }, r.dynCall_v = function() { + return (r.dynCall_v = r.asm.dynCall_v).apply(null, arguments) + }, r.dynCall_diii = function() { + return (r.dynCall_diii = r.asm.dynCall_diii).apply(null, arguments) + }, r.dynCall_viiiiiiii = function() { + return (r.dynCall_viiiiiiii = r.asm.dynCall_viiiiiiii).apply(null, arguments) + }, r.dynCall_iiiiiiiiii = function() { + return (r.dynCall_iiiiiiiiii = r.asm.dynCall_iiiiiiiiii).apply(null, arguments) + }, r.dynCall_jiji = function() { + return (r.dynCall_jiji = r.asm.dynCall_jiji).apply(null, arguments) + }, r.dynCall_ji = function() { + return (r.dynCall_ji = r.asm.dynCall_ji).apply(null, arguments) + }, r.dynCall_iiiiiidii = function() { + return (r.dynCall_iiiiiidii = r.asm.dynCall_iiiiiidii).apply(null, arguments) + }, r.dynCall_iiiiiiiii = function() { + return (r.dynCall_iiiiiiiii = r.asm.dynCall_iiiiiiiii).apply(null, arguments) + }, r.dynCall_viiiiiiiiiii = function() { + return (r.dynCall_viiiiiiiiiii = r.asm.dynCall_viiiiiiiiiii).apply(null, arguments) + }, r.dynCall_iidiiii = function() { + return (r.dynCall_iidiiii = r.asm.dynCall_iidiiii).apply(null, arguments) + }, r.dynCall_vffff = function() { + return (r.dynCall_vffff = r.asm.dynCall_vffff).apply(null, arguments) + }, r.dynCall_vf = function() { + return (r.dynCall_vf = r.asm.dynCall_vf).apply(null, arguments) + }, r.dynCall_vff = function() { + return (r.dynCall_vff = r.asm.dynCall_vff).apply(null, arguments) + }, r.dynCall_vfi = function() { + return (r.dynCall_vfi = r.asm.dynCall_vfi).apply(null, arguments) + }, r.dynCall_viif = function() { + return (r.dynCall_viif = r.asm.dynCall_viif).apply(null, arguments) + }, r.dynCall_vif = function() { + return (r.dynCall_vif = r.asm.dynCall_vif).apply(null, arguments) + }, r.dynCall_viff = function() { + return (r.dynCall_viff = r.asm.dynCall_viff).apply(null, arguments) + }, r.dynCall_vifff = function() { + return (r.dynCall_vifff = r.asm.dynCall_vifff).apply(null, arguments) + }, r.dynCall_viffff = function() { + return (r.dynCall_viffff = r.asm.dynCall_viffff).apply(null, arguments) + }, r.dynCall_viiiiiiiiii = function() { + return (r.dynCall_viiiiiiiiii = r.asm.dynCall_viiiiiiiiii).apply(null, arguments) + }, r.dynCall_viifi = function() { + return (r.dynCall_viifi = r.asm.dynCall_viifi).apply(null, arguments) + }; + + function xt(e) { + this.name = "ExitStatus", this.message = "Program terminated with exit(" + e + ")", this.status = e + } + r.asm = Xr, r.ccall = A, r.cwrap = function(e, r, t, n) { + var i = (t = t || []).every((function(e) { + return "number" === e + })); + return "string" !== r && i && !n ? F(e) : function() { + return A(e, r, t, arguments) + } + }, r.getMemory = function(e) { + return te ? Zr(e) : v(e) + }, r.addRunDependency = de, r.removeRunDependency = me, r.FS_createFolder = Pe.createFolder, r.FS_createPath = Pe.createPath, r.FS_createDataFile = Pe.createDataFile, r.FS_createPreloadedFile = Pe.createPreloadedFile, r.FS_createLazyFile = Pe.createLazyFile, r.FS_createLink = Pe.createLink, r.FS_createDevice = Pe.createDevice, r.FS_unlink = Pe.unlink; + + function kt(e) { + function n() { + Hr || (Hr = !0, r.calledRun = !0, S || (te = !0, r.noFSInit || Pe.init.initialized || Pe.init(), De.init(), Z($), Pe.ignorePermissions = !1, Z(J), t(r), r.onRuntimeInitialized && r.onRuntimeInitialized(), St && function(e) { + var t = r._main, + n = (e = e || []).length + 1, + i = wt(4 * (n + 1)); + q[i >> 2] = N(l); + for (var a = 1; a < n; a++) q[(i >> 2) + a] = N(e[a - 1]); + q[(i >> 2) + n] = 0; + try { + Ct(t(n, i), !0) + } catch (e) { + if (e instanceof xt) return; + if ("unwind" == e) return void(y = !0); + var o = e; + e && "object" == typeof e && e.stack && (o = [e, e.stack]), p("exception thrown: " + o), f(1, e) + } finally { + !0 + } + }(e), function() { + if (r.postRun) + for ("function" == typeof r.postRun && (r.postRun = [r.postRun]); r.postRun.length;) e = r.postRun.shift(), re.unshift(e); + var e; + Z(re) + }())) + } + e = e || c, ce > 0 || (! function() { + if (r.preRun) + for ("function" == typeof r.preRun && (r.preRun = [r.preRun]); r.preRun.length;) e = r.preRun.shift(), K.unshift(e); + var e; + Z(K) + }(), ce > 0 || (r.setStatus ? (r.setStatus("Running..."), setTimeout((function() { + setTimeout((function() { + r.setStatus("") + }), 1), n() + }), 1)) : n())) + } + + function Ct(e, t) { + t && y && 0 === e || (y || (S = !0, e, !0, r.onExit && r.onExit(e)), f(e, new xt(e))) + } + if (fe = function e() { + Hr || kt(), Hr || (fe = e) + }, r.run = kt, r.preInit) + for ("function" == typeof r.preInit && (r.preInit = [r.preInit]); r.preInit.length > 0;) r.preInit.pop()(); + var St = !0; + return r.noInitialRun && (St = !1), y = !0, kt(), r.ready + } +}(); +export default Module; \ No newline at end of file diff --git a/waflash/alt/emulator2/waflash_latest/waflash.wasm b/waflash/alt/emulator2/waflash_latest/waflash.wasm new file mode 100644 index 00000000..bc151586 Binary files /dev/null and b/waflash/alt/emulator2/waflash_latest/waflash.wasm differ