WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的网络视频平台,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联,支持rtsp/rtmp等视频流转发到国标平台,支持rtsp/rtmp等推流转发到国标平台。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

4602 lines
197 KiB

!function () {
function e(e) {
return e && e.__esModule ? e.default : e
}
function t(e, t, r) {
Object.defineProperty(e, t, {get: r, enumerable: !0})
}
var r, n, o = !1;
function a() {
return o || (o = !0, n = e => {
var t = ["attribute vec4 vertexPos;", "attribute vec4 texturePos;", "varying vec2 textureCoord;", "void main()", "{", "gl_Position = vertexPos;", "textureCoord = texturePos.xy;", "}"].join("\n"),
r = ["precision highp float;", "varying highp vec2 textureCoord;", "uniform sampler2D ySampler;", "uniform sampler2D uSampler;", "uniform sampler2D vSampler;", "const mat4 YUV2RGB = mat4", "(", "1.1643828125, 0, 1.59602734375, -.87078515625,", "1.1643828125, -.39176171875, -.81296875, .52959375,", "1.1643828125, 2.017234375, 0, -1.081390625,", "0, 0, 0, 1", ");", "void main(void) {", "highp float y = texture2D(ySampler, textureCoord).r;", "highp float u = texture2D(uSampler, textureCoord).r;", "highp float v = texture2D(vSampler, textureCoord).r;", "gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;", "}"].join("\n"),
n = e.createShader(e.VERTEX_SHADER);
e.shaderSource(n, t), e.compileShader(n), e.getShaderParameter(n, e.COMPILE_STATUS) || console.log("Vertex shader failed to compile: " + e.getShaderInfoLog(n));
var o = e.createShader(e.FRAGMENT_SHADER);
e.shaderSource(o, r), e.compileShader(o), e.getShaderParameter(o, e.COMPILE_STATUS) || console.log("Fragment shader failed to compile: " + e.getShaderInfoLog(o));
var a = e.createProgram();
e.attachShader(a, n), e.attachShader(a, o), e.linkProgram(a), e.getProgramParameter(a, e.LINK_STATUS) || console.log("Program failed to compile: " + e.getProgramInfoLog(a)), e.useProgram(a);
var i = e.createBuffer();
e.bindBuffer(e.ARRAY_BUFFER, i), e.bufferData(e.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), e.STATIC_DRAW);
var s = e.getAttribLocation(a, "vertexPos");
e.enableVertexAttribArray(s), e.vertexAttribPointer(s, 2, e.FLOAT, !1, 0, 0);
var u = e.createBuffer();
e.bindBuffer(e.ARRAY_BUFFER, u), e.bufferData(e.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), e.STATIC_DRAW);
var c = e.getAttribLocation(a, "texturePos");
function l(t, r) {
var n = e.createTexture();
return e.bindTexture(e.TEXTURE_2D, n), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, e.LINEAR), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, e.LINEAR), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), e.bindTexture(e.TEXTURE_2D, null), e.uniform1i(e.getUniformLocation(a, t), r), n
}
e.enableVertexAttribArray(c), e.vertexAttribPointer(c, 2, e.FLOAT, !1, 0, 0);
var d = l("ySampler", 0), f = l("uSampler", 1), p = l("vSampler", 2);
return function (t, r, n, o, a) {
e.viewport(0, 0, t, r), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, d), e.texImage2D(e.TEXTURE_2D, 0, e.LUMINANCE, t, r, 0, e.LUMINANCE, e.UNSIGNED_BYTE, n), e.activeTexture(e.TEXTURE1), e.bindTexture(e.TEXTURE_2D, f), e.texImage2D(e.TEXTURE_2D, 0, e.LUMINANCE, t / 2, r / 2, 0, e.LUMINANCE, e.UNSIGNED_BYTE, o), e.activeTexture(e.TEXTURE2), e.bindTexture(e.TEXTURE_2D, p), e.texImage2D(e.TEXTURE_2D, 0, e.LUMINANCE, t / 2, r / 2, 0, e.LUMINANCE, e.UNSIGNED_BYTE, a), e.drawArrays(e.TRIANGLE_STRIP, 0, 4)
}
}, t(r = {}, "default", (function () {
return n
}))), r
}
var i, s, u = !1;
function c() {
i = {}, a(), s = e => {
const t = document.createElement("canvas");
t.style.position = "absolute", t.style.top = 0, t.style.left = 0, e.$container.appendChild(t), e.$canvasElement = t, e.$container.style.overflow = "hidden", "absolute" !== e.$container.style.position && (e.$container.style.position = "relative");
if (!e._supportOffscreen()) {
const t = (() => {
const t = e.$canvasElement;
let r = null;
const n = ["webgl", "experimental-webgl", "moz-webgl", "webkit-3d"];
let o = 0;
for (; !r && o < n.length;) {
const a = n[o];
try {
let n = {preserveDrawingBuffer: !0};
e._opt.contextOptions && (n = Object.assign(n, e._opt.contextOptions)), r = t.getContext(a, n)
} catch (e) {
r = null
}
r && "function" == typeof r.getParameter || (r = null), ++o
}
return r
})();
e._contextGLRender = a().default(t), e._contextGL = t
}
e._destroyContextGL = () => {
e._contextGL && (e._contextGL = null), e._contextGLRender && (e._contextGLRender = null), e._bitmaprenderer && (e._bitmaprenderer = null)
}
}, t(i, "default", (function () {
return s
}))
}
function l() {
return u || (u = !0, c()), i
}
var d, f, p, h, m, A, g = !1;
function v() {
return g || (g = !0, f = {
videoBuffer: .5,
vod: !1,
isResize: !0,
isFullSize: !1,
debug: !1,
timeout: 30,
supportDblclickFullscreen: !1,
showBandwidth: !1,
keepScreenOn: !1,
isNotMute: !1,
hasAudio: !0,
operateBtns: {fullscreen: !1, screenshot: !1, play: !1, audio: !1},
loadingText: "",
background: "",
decoder: "index.js",
rotate: 0,
forceNoOffscreen: !1
}, t(d = {}, "DEFAULT_OPTIONS", (function () {
return f
})), p = {
init: "init",
initSize: "initSize",
render: "render",
playAudio: "playAudio",
print: "print",
printErr: "printErr",
initAudioPlanar: "initAudioPlanar",
kBps: "kBps"
}, t(d, "CMD_TYPE", (function () {
return p
})), h = {
close: "close",
play: "play",
setVideoBuffer: "setVideoBuffer",
init: "init"
}, t(d, "POST_MESSAGE", (function () {
return h
})), m = {
fullscreen: "fullscreen",
play: "play",
pause: "pause",
mute: "mute",
load: "load",
videoInfo: "videoInfo",
timeUpdate: "timeUpdate",
audioInfo: "audioInfo",
log: "log",
error: "error",
kBps: "kBps",
timeout: "timeout",
stats: "stats",
performance: "performance",
record: "record",
buffer: "buffer",
videoFrame: "videoFrame",
start: "start",
metadata: "metadata"
}, t(d, "EVEMTS", (function () {
return m
})), A = {empty: "empty", buffering: "buffering", full: "full"}, t(d, "BUFFER_STATUS", (function () {
return A
}))), d
}
var E, y = !1;
function w(e) {
e.resume();
const t = e.createBufferSource();
t.buffer = e.createBuffer(1, 1, 22050), t.connect(e.destination), t.noteOn ? t.noteOn(0) : t.start(0)
}
function _(e, t) {
e && (e.style.display = t ? "block" : "none")
}
function b(e = "") {
const t = e.split(","), r = atob(t[1]), n = t[0].replace("data:", "").replace(";base64", "");
let o = r.length, a = new Uint8Array(o);
for (; o--;) a[o] = r.charCodeAt(o);
return new File([a], "file", {type: n})
}
function k(e, t) {
const r = document.createElement("a");
r.download = t, r.href = URL.createObjectURL(e), r.click(), URL.revokeObjectURL(e)
}
function T(e) {
if (null == e || "" === e) return "0 KB/S";
let t = parseFloat(e);
return t = t.toFixed(2), t + "KB/S"
}
function D(e) {
let t = 0;
return e >= 24 ? t = 2 : e >= 15 && (t = 1), t
}
function S(e, t) {
Object.keys(t || {}).forEach((function (r) {
e.style[r] = t[r]
}))
}
function C() {
let e = document.fullscreenElement || window.webkitFullscreenElement || document.msFullscreenElement;
return void 0 === e && (e = !1), !!e
}
function O() {
}
function P() {
return (new Date).getTime()
}
function x(e) {
Object.keys(e || {}).forEach((t => {
"bgDom" !== t && _(e[t], !1)
}))
}
function B(e) {
_(e.pauseDom, !0), _(e.screenshotsDom, !0), _(e.fullscreenDom, !0), _(e.quietAudioDom, !0), _(e.textDom, !0), _(e.speedDom, !0), _(e.recordDom, !0), _(e.loadingDom, !1), _(e.playDom, !1), _(e.playBigDom, !1), _(e.bgDom, !1)
}
function M(e, t) {
let r = v().BUFFER_STATUS.buffering;
return 0 === e ? r = v().BUFFER_STATUS.empty : e >= t && (r = v().BUFFER_STATUS.full), r
}
function R() {
return y || (y = !0, E = {}, v(), t(E, "audioContextUnlock", (function () {
return w
})), t(E, "$domToggle", (function () {
return _
})), t(E, "dataURLToFile", (function () {
return b
})), t(E, "downloadImg", (function () {
return k
})), t(E, "bpsSize", (function () {
return T
})), t(E, "fpsStatus", (function () {
return D
})), t(E, "setStyle", (function () {
return S
})), t(E, "checkFull", (function () {
return C
})), t(E, "noop", (function () {
return O
})), t(E, "now", (function () {
return P
})), t(E, "$hideBtns", (function () {
return x
})), t(E, "$initBtns", (function () {
return B
})), t(E, "bufferStatus", (function () {
return M
}))), E
}
var L, I, F = !1;
function U() {
return F || (F = !0, L = {}, R(), I = e => {
e._audioContext = new (window.AudioContext || window.webkitAudioContext), e._gainNode = e._audioContext.createGain(), e._audioEnabled = t => {
t ? (R().audioContextUnlock(e._audioContext), e._audioEnabled = t => {
t ? e._audioContext.resume() : e._audioContext.suspend()
}, e._audioContext.resume()) : e._audioContext.suspend()
}, e._audioEnabled(!0), e._mute = () => {
e._audioEnabled(!1), e.quieting = !0
}, e._cancelMute = () => {
e._audioEnabled(!0), e.quieting = !1
}, e._audioResume = () => {
e._cancelMute()
}, e._initAudioPlanar = t => {
const r = e._audioContext;
if (!r) return !1;
let n = [];
const o = r.createScriptProcessor(1024, 0, 2);
o.onaudioprocess = function (e) {
if (n.length) {
const r = n.shift();
for (let n = 0; n < t.channels; n++) {
const t = r[n], o = e.outputBuffer.getChannelData(n);
for (let e = 0; e < 1024; e++) o[e] = t[e]
}
}
}, o.connect(e._gainNode), e._closeAudio = () => {
o.disconnect(e._gainNode), e._gainNode.disconnect(r.destination), delete e._closeAudio, n = []
}, e._gainNode.connect(r.destination), e._playAudio = e => n.push(e)
}, e._destroyAudioContext = () => {
e._audioContext.close(), e._audioContext = null, e._gainNode = null
}
}, t(L, "default", (function () {
return I
}))), L
}
var N, j, G = !1;
function z() {
return G || (G = !0, N = {}, R(), j = e => {
e._resize$2 = () => e.resize(), e._handleVisibilityChange$2 = () => e._handleVisibilityChange(), e._onfullscreenchange$2 = () => e._onfullscreenchange(), e._handleWakeLock$2 = () => e._handleWakeLock(), window.addEventListener("resize", e._resize$2), window.addEventListener("fullscreenchange", e._onfullscreenchange$2), document.addEventListener("visibilitychange", e._handleVisibilityChange$2), document.addEventListener("visibilitychange", e._handleWakeLock$2), window.addEventListener("fullscreenchange", e._handleWakeLock$2), e._opt.supportDblclickFullscreen && e.$canvasElement.addEventListener("dblclick", (() => {
e.fullscreen = !e.fullscreen
}), !1), e._removeEventListener = () => {
window.removeEventListener("resize", e._resize$2), window.removeEventListener("fullscreenchange", e._onfullscreenchange$2), document.removeEventListener("visibilitychange", e._handleWakeLock$2), document.removeEventListener("visibilitychange", e._handleVisibilityChange$2), window.removeEventListener("fullscreenchange", e._handleWakeLock$2)
}, e.$doms.playDom && e.$doms.playDom.addEventListener("click", (t => {
t.stopPropagation(), e._play()
}), !1), e.$doms.playBigDom && e.$doms.playBigDom.addEventListener("click", (t => {
t.stopPropagation(), e._play()
}), !1), e.$doms.pauseDom && e.$doms.pauseDom.addEventListener("click", (t => {
t.stopPropagation(), e._pause()
}), !1), e.$doms.screenshotsDom && e.$doms.screenshotsDom.addEventListener("click", (t => {
t.stopPropagation();
const r = e._opt.text + "" + R().now();
e._screenshot(r)
}), !1), e.$doms.fullscreenDom && e.$doms.fullscreenDom.addEventListener("click", (t => {
t.stopPropagation(), e.fullscreen = !0
}), !1), e.$doms.minScreenDom && e.$doms.minScreenDom.addEventListener("click", (t => {
t.stopPropagation(), e.fullscreen = !1
}), !1), e.$doms.recordDom && e.$doms.recordDom.addEventListener("click", (t => {
t.stopPropagation(), e.recording = !0
}), !1), e.$doms.recordingDom && e.$doms.recordingDom.addEventListener("click", (t => {
t.stopPropagation(), e.recording = !1
}), !1), e.$doms.quietAudioDom && e.$doms.quietAudioDom.addEventListener("click", (t => {
t.stopPropagation(), e._cancelMute()
}), !1), e.$doms.playAudioDom && e.$doms.playAudioDom.addEventListener("click", (t => {
t.stopPropagation(), e._mute()
}), !1), e._enableWakeLock()
}, t(N, "default", (function () {
return j
}))), N
}
var W, Y, H = !1;
function $() {
return H || (H = !0, W = {}, R(), z(), Y = e => {
e._showControl = () => {
let t = !1, r = !1;
return Object.keys(e._opt.operateBtns).forEach((t => {
e._opt.operateBtns[t] && (r = !0)
})), (e._opt.showBandwidth || e._opt.text || r) && (t = !0), t
};
const t = {}, r = document.createDocumentFragment(), n = document.createElement("div"),
o = document.createElement("div"), a = document.createElement("div"), i = document.createElement("div"),
s = document.createElement("div"), u = document.createElement("div"), c = document.createElement("div"),
l = document.createElement("div"), d = document.createElement("div"), f = document.createElement("div"),
p = document.createElement("div"), h = document.createElement("div"), m = document.createElement("div"),
A = document.createElement("div"), g = document.createElement("div"), v = document.createElement("div"),
E = document.createElement("div"), y = document.createElement("div");
m.innerText = e._opt.loadingText || "", i.innerText = e._opt.text || "", s.innerText = "", u.title = "播放", l.title = "暂停", d.title = "截屏", f.title = "全屏", p.title = "退出全屏", A.title = "静音", g.title = "取消静音", v.title = "录制", E.title = "取消录制";
let w = {position: "absolute", width: "100%", height: "100%"};
e._opt.background && (w = Object.assign({}, w, {
backgroundRepeat: "no-repeat",
backgroundPosition: "center",
backgroundSize: "100%",
backgroundImage: "url('" + e._opt.background + "')"
}));
const _ = {
position: "absolute",
width: "100%",
height: "100%",
textAlign: "center",
color: "#fff",
display: "none",
backgroundImage: "url('data:image/gif;base64,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')",
backgroundRepeat: "no-repeat",
backgroundPosition: "center",
backgroundSize: "40px 40px"
}, b = {
position: "absolute",
width: "100%",
height: "100%",
display: "none",
background: "rgba(0,0,0,0.4)",
backgroundImage: "url('data:image/png;base64,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')",
backgroundRepeat: "no-repeat",
backgroundPosition: "center",
backgroundSize: "48px 48px",
cursor: "pointer"
}, k = {position: "absolute", top: 0, height: "100%", display: "flex", alignItems: "center"}, T = {
display: "none",
position: "relative",
fontSize: "13px",
color: "#fff",
lineHeight: "20px",
marginLeft: "5px",
marginRight: "5px",
userSelect: "none"
}, D = {
display: "none",
position: "relative",
width: "16px",
height: "16px",
marginLeft: "8px",
marginRight: "8px",
backgroundRepeat: "no-repeat",
backgroundPosition: "center",
backgroundSize: "100%",
cursor: "pointer"
};
R().setStyle(y, w), R().setStyle(n, {
height: "38px",
zIndex: 11,
position: "absolute",
left: 0,
bottom: 0,
width: "100%",
background: "rgba(0,0,0)"
}), R().setStyle(h, _), R().setStyle(c, b), R().setStyle(m, {
position: "absolute",
width: "100%",
top: "60%",
textAlign: "center"
}), R().setStyle(o, Object.assign({}, k, {left: 0})), R().setStyle(a, Object.assign({}, k, {right: 0})), R().setStyle(i, T), R().setStyle(s, T), R().setStyle(u, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAARVJREFUSMe9laEOglAUhs+5k9lJFpsJ5QWMJoNGbEY0mEy+gr6GNo0a3SiQCegMRILzGdw4hl+Cd27KxPuXb2zA/91z2YXoGRERkX4fvN3A2QxUiv4dFM3n8jZRBLbbVfd+ubJuF4xjiCyXkksueb1uSKCIZYGLBTEx8ekEoV7PkICeVgs8HiGyXoO2bUigCDM4HoPnM7bI8wwJ6Gk0sEXbLSay30Oo2TQkoGcwgFCSQMhxDAvoETEscDiQkJC4LjMz8+XyZ4HrFYWjEQqHQ1asWGWZfmdFAsVINxuw00HhbvfpydpvxWkKTqdYaRCUfUPJCdzv4Gr1uqfli0tOIAzByUT/iCrL6+84y3Bw+D6ui5Ou+jwA8FnIO++FACgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEtMDEtMDhUMTY6NDI6NTMrMDg6MDCKP7wnAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAw+2IEmwAAAEl0RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fZ2Y3MDBzN2IzZncvYm9mYW5nLnN2Z8fICi0AAAAASUVORK5CYII=')"})), R().setStyle(l, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAHVJREFUSMftkCESwCAMBEOnCtdXVMKHeC7oInkEeQJXkRoEZWraipxZc8lsQqQZBACAlIS1oqGhhTCdu3oyxyyMcdRf79c5J7SWDBky+z4173rbJvR+VF/e/qwKqIAKqMBDgZyFzAQCoZTpxq7HLDyOrw/9b07l3z4dDnI2IAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0wMS0wOFQxNjo0Mjo1MyswODowMIo/vCcAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMDEtMDhUMTY6NDI6NTMrMDg6MDD7YgSbAAAASnRFWHRzdmc6YmFzZS11cmkAZmlsZTovLy9ob21lL2FkbWluL2ljb24tZm9udC90bXAvaWNvbl9nZjcwMHM3YjNmdy96YW50aW5nLnN2ZxqNZJkAAAAASUVORK5CYII=')"})), R().setStyle(d, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAaxJREFUSMfNlLFOAkEQhmevAZMjR6OGRBJKsFBzdkYNpYSaWkopIOFRCBWh1ieA+ALGRgutjK0HzV2H5SX7W/zsmY3cnTEhcZovOzcz9+/s7Ir8d4OGht7fBwAgjvEri2OTl1ffSf0xAMBxRIkS1e3Se3+vcszEMe/6OqmT/aN2m1wsNu/o5YVsNHI7BgA4PCRfXzfXCwKy1RLbcXZG9nrkzc12jvT8nPU/PtatOThgAx8fuS4WyZ0de2e+T87n5OcnuVqRsxl5cpImQDnKUc7DA1fVqpimZCu+vCSjiNH9PlmpJNTQ0INBErfeafZRAakC6FWKfH9nwU7H/l6rGdqCOx3y7c3U+aOARsMMp+1vNskwTLjulB23XJL1epqA9OshIiKeJxAIoug7UyA4OuLi6Ynr52deu+NjOy4MSc9Ln8rMDpTLybBpaOjdXbJUIqdTm8a/t2fn/RSQewR24HicTLmGhnbdzcPquvYtGY3+PIR24UKBUXd35v6Sk4lN47+9NXm/FBAEedfGTjw9JYdDm76fm6+hoS8ujGAxT6L9Im7bTKeurvIEb92+AES1b6x283XSAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAwij+8JwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMS0wOFQxNjo0Mjo1MyswODowMPtiBJsAAABJdEVYdHN2ZzpiYXNlLXVyaQBmaWxlOi8vL2hvbWUvYWRtaW4vaWNvbi1mb250L3RtcC9pY29uX2dmNzAwczdiM2Z3L2NhbWVyYS5zdmeyubWEAAAAAElFTkSuQmCC')"})), R().setStyle(f, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAALZJREFUSMftVbsORUAQVSj8DomChvh3lU5CoSVCQq2RObeYu8XG3deVoHCak81kds7Oaz3vxRcAAMwztOg6vX9d6/3XFQQC+b7iAoFhYE7Tvx9EIFAcy/ftO3MQGAQkCfM4MmeZWyajiLnvmYuCeduMAuSzvRBVYNluFHCssSgFp7Sq9ALKkjnPf9ubRtkDL27HNT3QtsY9cAjsNAVheHIKBOwD2wpxFHDbJpwmaHH2L1iWx+2BDy8RbXXtqbRBAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAwij+8JwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMS0wOFQxNjo0Mjo1MyswODowMPtiBJsAAABTdEVYdHN2ZzpiYXNlLXVyaQBmaWxlOi8vL2hvbWUvYWRtaW4vaWNvbi1mb250L3RtcC9pY29uX2dmNzAwczdiM2Z3L3F1YW5waW5nenVpZGFodWEuc3ZnTBoI7AAAAABJRU5ErkJggg==')"})), R().setStyle(p, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAYJJREFUSMfdVbGKwkAQnQn+geAfWBixUTsVgp3YGKxSWflVNmIjARULwc5KO40ipNHWRgs/wGLniucKa+Jd5ODuuGle5u3szGRmd5bor4iIiMhuB3Sc+HXXBdp2/Lpta7v4dccRJUrUdhtNQIkSVa3C8HwG1uumg34f2OnEB+h0tF1Sv5b+YIsttpZLEhKSdhvscPi8IXFF74GJiYnHY7Cex8zMvFgkbInjmJnv98kqoO30vmhLtaRMB60WtEbDNDudgMUiKiQSzfjOMzFxoQAyCPSfw7/nQZ/PUYnpNGV6OR6BmYzJbzYIoBQCzGaRBDQvJCTdLnTLolg5HN5t6f8V1h/oUT4PrVKJWBotmEzQw+vV3J9Ow851P2/BaoX9Yfh0BrJZYKlk8uUyHOpDeLuBHwzMBJtN2PV6IPUhXK9Nf5cLMAxfluanrmGkRBggtRo03wfq66P/6CsJAnOg+f6rgfZI4BGYiYlHIx048eR6krcnq34kkj1GuVz8+jceo9+SD5A8yGh8CTq7AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAwij+8JwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMS0wOFQxNjo0Mjo1MyswODowMPtiBJsAAABNdEVYdHN2ZzpiYXNlLXVyaQBmaWxlOi8vL2hvbWUvYWRtaW4vaWNvbi1mb250L3RtcC9pY29uX2dmNzAwczdiM2Z3L3p1aXhpYW9odWEuc3ZnoCFr0AAAAABJRU5ErkJggg==')"})), R().setStyle(A, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAR9JREFUSMfVlD0LglAYhe9VkwgNihpsjbYQf4JTS7+iuaGxpcGfJjS0NFRLk2NDi6MogafhJGRIX9yEzvJwrx/nvPd9VYh/F3LkyBuN2g3J1QoAgCQhPe/Hxq5Lo+0WlfJ9dYYAgGaTDAIyy/BUnwcwWJlhcLnZkN2ugIBAuy2kkEL2ep8F73S4kjfFcfn6cMj9KLodrWVBiXyf75tMyOOR+4MBOZ8XLXzorboA5UpnM/J0Ivd7+vX7xX2asqGpVKtFXi5sqWmypXefrfIWAACmU/JwKCoun8hu9zA0uk6u13wgirg+n7+bAcsibbt6SB3n9TQXPxwAwHJJpum7M6BcDDQa0SgMaw9QPkJNIxcLMo4ZcDz+eYDqQFLWbqxKV57EtW1WtMbmAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAwij+8JwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMS0wOFQxNjo0Mjo1MyswODowMPtiBJsAAABKdEVYdHN2ZzpiYXNlLXVyaQBmaWxlOi8vL2hvbWUvYWRtaW4vaWNvbi1mb250L3RtcC9pY29uX2dmNzAwczdiM2Z3L2ppbmd5aW4uc3ZnIlMYaQAAAABJRU5ErkJggg==')"})), R().setStyle(g, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAU5JREFUSMftkzGKwlAURf9PULBQwULSCKK1bZAgNuoaFFyAC3AdZg0uQCwshWzAShEEO7Gy0soUCu9Occ3An5nMGCfdzGsO7+Xy3/03iVL/lbAAACiVIBCI77O37Vi9QCDZbEqLm03ycEBUAoHk818v7nYpul5Jz4tf8HBKYa1mcjwmbzd8rG8NFIsU7ffk8UjmcjE3XK+RtB4G2PT75GbDeblMttumfjSKMRCGLxsQCKTReE9KIJDJxDw/SmKxiOZWWh+ntrSlre2WXRAorbTSrZapip7X66kbMKtQUFBQCENznsmQ93vqBhh5r8fO85jAcsnIrcce1yV3uxgD8zl5uZgU+dGBVlrp6GbTKRPwffaDAek45Gz2/M0AAJ0OeTol+w0rFYrOZ3K1MhNJEjEAwHF4cBA8Z8B1zcXV6msv+JMR2yaHQ1LrXx/8Z+sNRxsWcwZeb6UAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEtMDEtMDhUMTY6NDI6NTMrMDg6MDCKP7wnAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAw+2IEmwAAAEt0RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fZ2Y3MDBzN2IzZncvc2hlbmd5aW4uc3ZnFog1MQAAAABJRU5ErkJggg==')"})), R().setStyle(v, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAPRJREFUSMflVDEOwjAQO0e8gr2sZYVunREbD6ISfAgmkBjpC/hBEQ+AtTWD6QAI0gBlqRfLp+TiXC5n1nXgMUCS5HBoNBqj6IOMMFwuEpsNAABl6d3HihWrOJaBsuRPkGW+c929HAxuYefb6L+R0ZgkMrJYiItCnCT1sl5Y1jwXj0bNniJNJWqujfX7LyrwJh8AYDxWgulU0dPp20IFlxoODm61kpE4VnS9/puBXyPYgH7LbKY3PhwUnUw+NdC4CdW9+71UgyZspwIBB9No3O0klktxUahyx+Pz+lYG0Xzu84lXRqTqwRQAGAzns8R223gUdxZXGcAK5Hp0ClIAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEtMDEtMDhUMTY6NDI6NTMrMDg6MDCKP7wnAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAw+2IEmwAAAE50RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fZ2Y3MDBzN2IzZncvbHV6aGlzaGlwaW4uc3Zn5Zd7GQAAAABJRU5ErkJggg==')"})), R().setStyle(E, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAahJREFUSMdjYBjpgBFd4NZK+f+soQYG//T+yzFuUFUl2cApjEWM/758UZvysPDn3127GBkZGBgY/v4l6ICb9xTWsRbp6/9f9W8N44Jz5xgCGI4wfGFiIttrR/5n/3/U3KyR8rj8t0RdHS5lcAv+//yXzzhZTY1ii2FAmsGZocna+maD3GnWY62tNzbJBbDOffLkxie5eJYwa2uYMhaigzb2/zyGguPH/y9mTGKYYGlJUIMiYxDjHCen/4oMDAxznJzg4k8Z/jP+l5LCCAFCQP30Y5dfXVZWDI7/zzIs8PNjNGJ4/7/r+XNKA4rkoNZ4/lj0V9TmzUxJv0J+F+jrM3YyvPq/acsWujmA2oBkB9y4LifLxhoa+teAzYFtwtWr/8sZxBj9fHxo7oCbprJ72MqOHWNgZGBkYFy1isGGoZahTFSU0hAgOhcQnfph4P7/df9T9u1jPMn4nyHmxIn/bAzLGe7GxTHsZyj+f+zpUwYGBmmG6bQsiMr+L/v/rqlJY9Njm9889fW4lGEUxXCHwAomUgH3vxBG8c+f1WWf9P98sns3oaJ4FAAAbtWqHTT84QYAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEtMDEtMDhUMTY6MzU6MjMrMDg6MDBLHbvEAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTAxLTA4VDE2OjM1OjIzKzA4OjAwOkADeAAAAE50RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fcTM1YTFhNHBtY2MvbHV6aGlzaGlwaW4uc3Zn6xlv1QAAAABJRU5ErkJggg==')"})), h.appendChild(m), e._opt.text && (o.appendChild(i), t.textDom = i), e._opt.showBandwidth && (o.appendChild(s), t.speedDom = s), e._opt.operateBtns.record && (a.appendChild(E), a.appendChild(v), t.recordingDom = E, t.recordDom = v), e._opt.operateBtns.screenshot && (a.appendChild(d), t.screenshotsDom = d), e._opt.operateBtns.play && (a.appendChild(u), a.appendChild(l), t.playDom = u, t.pauseDom = l), e._opt.operateBtns.audio && (a.appendChild(g), a.appendChild(A), t.playAudioDom = g, t.quietAudioDom = A), e._opt.operateBtns.fullscreen && (a.appendChild(f), a.appendChild(p), t.fullscreenDom = f, t.minScreenDom = p), n.appendChild(o), n.appendChild(a), r.appendChild(y), t.bgDom = y, r.appendChild(h), t.loadingDom = h, e._showControl() && r.appendChild(n), e._opt.operateBtns.play && (r.appendChild(c), t.playBigDom = c), e.$container.appendChild(r), e.$doms = t, e._removeContainerChild = () => {
for (; e.$container.firstChild;) e.$container.removeChild(e.$container.firstChild)
}, z().default(e), R().$hideBtns(e.$doms), e._opt.isNotMute || e._mute()
}, t(W, "default", (function () {
return Y
}))), W
}
var V, Q, X = !1;
function q() {
return X || (X = !0, V = {}, v(), R(), Q = e => {
const t = new Worker(e._opt.decoder);
t.onmessage = r => {
const n = r.data;
switch (n.cmd) {
case v().CMD_TYPE.init:
e.setBufferTime(e._opt.videoBuffer), t.postMessage({
cmd: v().POST_MESSAGE.init,
opt: JSON.stringify(e._opt),
sampleRate: e._audioContext.sampleRate
}), e._hasLoaded || (e._hasLoaded = !0, e.onLoad(), e._trigger(v().EVEMTS.load));
break;
case v().CMD_TYPE.initSize:
e.$canvasElement.width = n.w, e.$canvasElement.height = n.h, e.onInitSize(), e._resize(), e._trigger(v().EVEMTS.videoInfo, {
w: n.w,
h: n.h
}), e._trigger(v().EVEMTS.start), e._supportOffscreen() && (e._bitmaprenderer = e.$canvasElement.getContext("bitmaprenderer"));
break;
case v().CMD_TYPE.render:
e.loading && (e.loading = !1, e.playing = !0, e._clearCheckLoading()), e.playing && (e._supportOffscreen() ? e._bitmaprenderer.transferFromImageBitmap(n.buffer) : e._contextGLRender(e.$canvasElement.width, e.$canvasElement.height, n.output[0], n.output[1], n.output[2])), e._trigger(v().EVEMTS.timeUpdate, n.ts), e.onTimeUpdate(n.ts), e._updateStats({
buf: n.delay,
ts: n.ts
}), e._checkHeart();
break;
case v().CMD_TYPE.playAudio:
e.playing && !e.quieting && e._playAudio(n.buffer);
break;
case v().CMD_TYPE.print:
e.onLog(n.text), e._trigger(v().EVEMTS.log, n.text);
break;
case v().CMD_TYPE.printErr:
e.onLog(n.text), e._trigger(v().EVEMTS.log, n.text), e.onError(n.text), e._trigger(v().EVEMTS.error, n.text);
break;
case v().CMD_TYPE.initAudioPlanar:
e._initAudioPlanar(n), e._trigger(v().EVEMTS.audioInfo, {
numOfChannels: n.channels,
sampleRate: n.samplerate
});
break;
case v().CMD_TYPE.kBps:
e.playing && (e.$doms.speedDom && (e.$doms.speedDom.innerText = R().bpsSize(n.kBps)), e._trigger(v().EVEMTS.kBps, n.kBps));
default:
e[n.cmd] && e[n.cmd](n)
}
}, e._decoderWorker = t
}, t(V, "default", (function () {
return Q
}))), V
}
var Z, K, J = !1;
function ee() {
return J || (J = !0, Z = {}, R(), v(), K = e => {
e._loading = !0, e._recording = !1, e._playing = !1, e._audioPlaying = !1, e._quieting = !1, e._fullscreen = !1, e._stats = {
buf: 0,
fps: 0,
abps: "",
vbps: "",
ts: ""
}, e._hasLoaded = !1, e._playUrl = "", e._startBpsTime = "", e._bps = 0, e._checkHeartTimeout = null, e._wakeLock = null, e._contextGL = null, e._contextGLRender = null, e._checkLoadingTimeout = null, e._bitmaprenderer = null, e._isPlayingBeforePageHidden = !1, e._initCheckVariable = () => {
e._startBpsTime = "", e._bps = 0, e._clearCheckHeartTimeout(), e._clearCheckLoading()
}, e._clearCheckHeartTimeout = () => {
e._checkHeartTimeout && (clearTimeout(e._checkHeartTimeout), e._checkHeartTimeout = null)
}, e._startCheckHeartTimeout = () => {
e._checkHeartTimeout = setTimeout((function () {
e._trigger(v().EVEMTS.timeout), e.recording = !1, e.playing = !1, e._close()
}), 1e3 * e._opt.timeout)
}, e._clearCheckLoading = () => {
e._checkLoadingTimeout && (clearTimeout(e._checkLoadingTimeout), e._checkLoadingTimeout = null)
}, e._checkLoading = () => {
e._clearCheckLoading(), e._checkLoadingTimeout = setTimeout((() => {
e._trigger(v().EVEMTS.timeout), e.playing = !1, e._close(), R().$domToggle(e.$doms.loadingDom, !1)
}), 1e3 * e._opt.timeout)
}
}, t(Z, "default", (function () {
return K
}))), Z
}
var te, re, ne = !1;
function oe() {
return ne || (ne = !0, te = {}, R(), re = e => {
e.onPlay = R().noop, e.onPause = R().noop, e.onRecord = R().noop, e.onFullscreen = R().noop, e.onMute = R().noop, e.onLoad = R().noop, e.onLog = R().noop, e.onError = R().noop, e.onTimeUpdate = R().noop, e.onInitSize = R().noop
}, t(te, "default", (function () {
return re
}))), te
}
var ae, ie, se = !1;
function ue() {
return se || (se = !0, ie = e => {
e._on = (t, r) => {
let n, o, a;
if (!r) return e;
for (n = e.__events || (e.__events = {}), t = t.split(/\s+/); o = t.shift();) a = n[o] || (n[o] = []), a.push(r);
return e
}, e._off = () => {
let t;
return (t = e.__events) ? (delete e.__events, e) : e
}, e._trigger = (t, ...r) => {
function n(e, t) {
if (e) for (let r = 0, n = e.length; r < n; r += 1) e[r](...t)
}
let o, a, i;
if (!(o = e.__events)) return e;
for (t = t.split(/\s+/); a = t.shift();) (i = o[a]) && (i = i.slice()), n(i, r);
return e
}
}, t(ae = {}, "default", (function () {
return ie
}))), ae
}
var ce, le, de = !1;
function fe() {
return de || (de = !0, ce = {}, R(), v(), le = e => {
e._pause = () => {
e._close(), e.loading && R().$domToggle(e.$doms.loadingDom, !1), e.recording = !1, e.playing = !1
}, e._play = t => {
if (!e._playUrl && !t) return;
let r = !1;
t ? (e._playUrl && (e._close(), r = !0, e.clearView()), e.loading = !0, R().$domToggle(e.$doms.bgDom, !1), e._checkLoading(), e._playUrl = t) : e._playUrl && (e.loading ? (R().$hideBtns(e.$doms), R().$domToggle(e.$doms.fullscreenDom, !0), R().$domToggle(e.$doms.pauseDom, !0), R().$domToggle(e.$doms.loadingDom, !0), e._checkLoading()) : e.playing = !0), e._initCheckVariable(), r ? setTimeout((() => {
e._decoderWorker.postMessage({cmd: v().POST_MESSAGE.play, url: e._playUrl})
}), 300) : e._decoderWorker.postMessage({cmd: v().POST_MESSAGE.play, url: e._playUrl})
}, e._screenshot = (t, r, n) => {
t = t || R().now();
const o = {png: "image/png", jpeg: "image/jpeg", webp: "image/webp"};
let a = .92;
void 0 !== n && (a = Number(n));
const i = e.$canvasElement.toDataURL(o[r] || o.png, a);
R().downloadImg(R().dataURLToFile(i), t)
}, e._close = () => {
e._close$2(), e._clearView()
}, e._close$2 = () => {
e._opt.debug && console.log("_close$2-START"), e._closeAudio && e._closeAudio(), e._audioPlayBuffers = [], e._audioPlaying = !1, e._decoderWorker.postMessage({cmd: v().POST_MESSAGE.close}), delete e._playAudio, e._releaseWakeLock(), e._initCheckVariable(), e._opt.debug && console.log("_close$2-END")
}, e._releaseWakeLock = () => {
e._wakeLock && (e._wakeLock.release(), e._wakeLock = null)
}, e._clearView = () => {
e._contextGL && e._contextGL.clear(e._contextGL.COLOR_BUFFER_BIT)
}, e._resize = () => {
const t = e.$container.clientWidth;
let r = e.$container.clientHeight;
e._showControl() && (r -= 38);
const n = e.$canvasElement.width, o = e.$canvasElement.height, a = e._opt.rotate, i = t / n, s = r / o;
let u = i > s ? s : i;
e._opt.isResize || i !== s && (u = i + "," + s), e._opt.isFullResize && (u = i > s ? i : s);
let c = "scale(" + u + ")";
a && (c += " rotate(" + a + "deg)"), e.$canvasElement.style.transform = c, e.$canvasElement.style.left = (t - n) / 2 + "px", e.$canvasElement.style.top = (r - o) / 2 + "px"
}, e._enableWakeLock = () => {
e._opt.keepScreenOn && "wakeLock" in navigator && navigator.wakeLock.request("screen").then((t => {
e._wakeLock = t
}))
}, e._supportOffscreen = () => !e._opt.forceNoOffscreen && "function" == typeof e.$canvasElement.transferControlToOffscreen, e._checkHeart = () => {
e._clearCheckHeartTimeout(), e._startCheckHeartTimeout()
}, e._updateStats = t => {
t = t || {}, e._startBpsTime || (e._startBpsTime = R().now());
const r = R().now();
r - e._startBpsTime < 1e3 ? e._stats.fps += 1 : (e._stats.ts = t.ts, e._stats.buf = t.buf, e._trigger(v().EVEMTS.stats, e._stats), e._trigger(v().EVEMTS.performance, R().fpsStatus(e._stats.fps)), e._trigger(v().EVEMTS.buffer, R().bufferStatus(e._stats.buf, 1e3 * e._opt.videoBuffer)), e._stats.fps = 0, e._startBpsTime = r)
}, e._onfullscreenchange = () => {
(void 0).fullscreen = R().checkFull()
}, e._handleVisibilityChange = () => {
e._opt.debug && console.log(document.visibilityState, e._isPlayingBeforePageHidden), "visible" === document.visibilityState ? e._isPlayingBeforePageHidden && e._play() : (e._isPlayingBeforePageHidden = e.playing, e.playing && e._pause())
}, e._handleWakeLock = () => {
null !== e._wakeLock && "visible" === document.visibilityState && e._enableWakeLock()
}
}, t(ce, "default", (function () {
return le
}))), ce
}
var pe, he, me = !1;
function Ae() {
return me || (me = !0, pe = {}, ee(), oe(), ue(), fe(), he = e => {
ee().default(e), oe().default(e), ue().default(e), fe().default(e)
}, t(pe, "default", (function () {
return he
}))), pe
}
var ge, ve = !1;
var Ee, ye, we, _e, be, ke, Te, De, Se, Ce, Oe, Pe, xe, Be, Me, Re, Le, Ie, Fe, Ue, Ne, je, Ge, ze, We, Ye, He, $e,
Ve, Qe, Xe, qe, Ze, Ke, Je, et, tt, rt, nt, ot, at, it, st, ut, ct, lt, dt, ft, pt, ht, mt, At, gt, vt, Et, yt, wt,
_t, bt, kt, Tt, Dt, St, Ct, Ot, Pt, xt, Bt, Mt, Rt, Lt, It, Ft, Ut, Nt, jt, Gt, zt, Wt, Yt, Ht, $t, Vt, Qt, Xt, qt,
Zt, Kt, Jt, er, tr, rr, nr, or, ar, ir, sr, ur, cr, lr, dr, fr, pr, hr, mr, Ar, gr, vr, Er, yr, wr, _r, br, kr, Tr,
Dr = !1;
function Sr(e) {
return Ee.locateFile ? Ee.locateFile(e, Oe) : Oe + e
}
function Cr(e) {
Cr.shown || (Cr.shown = {}), Cr.shown[e] || (Cr.shown[e] = 1, Me(e))
}
function Or(e, t) {
e || Yr("Assertion failed: " + t)
}
function Pr(e, t, r) {
for (var n = t + r, o = ""; !(t >= n);) {
var a = e[t++];
if (!a) return o;
if (128 & a) {
var i = 63 & e[t++];
if (192 != (224 & a)) {
var s = 63 & e[t++];
if ((a = 224 == (240 & a) ? (15 & a) << 12 | i << 6 | s : (7 & a) << 18 | i << 12 | s << 6 | 63 & e[t++]) < 65536) o += String.fromCharCode(a); else {
var u = a - 65536;
o += String.fromCharCode(55296 | u >> 10, 56320 | 1023 & u)
}
} else o += String.fromCharCode((31 & a) << 6 | i)
} else o += String.fromCharCode(a)
}
return o
}
function xr(e, t) {
return e ? Pr(We, e, t) : ""
}
function Br(e, t, r, n) {
if (!(n > 0)) return 0;
for (var o = r, a = r + n - 1, i = 0; i < e.length; ++i) {
var s = e.charCodeAt(i);
if (s >= 55296 && s <= 57343) s = 65536 + ((1023 & s) << 10) | 1023 & e.charCodeAt(++i);
if (s <= 127) {
if (r >= a) break;
t[r++] = s
} else if (s <= 2047) {
if (r + 1 >= a) break;
t[r++] = 192 | s >> 6, t[r++] = 128 | 63 & s
} else if (s <= 65535) {
if (r + 2 >= a) break;
t[r++] = 224 | s >> 12, t[r++] = 128 | s >> 6 & 63, t[r++] = 128 | 63 & s
} else {
if (r + 3 >= a) break;
t[r++] = 240 | s >> 18, t[r++] = 128 | s >> 12 & 63, t[r++] = 128 | s >> 6 & 63, t[r++] = 128 | 63 & s
}
}
return t[r] = 0, r - o
}
function Mr(e, t, r) {
return Br(e, We, t, r)
}
function Rr(e) {
for (var t = 0, r = 0; r < e.length; ++r) {
var n = e.charCodeAt(r);
n >= 55296 && n <= 57343 && (n = 65536 + ((1023 & n) << 10) | 1023 & e.charCodeAt(++r)), n <= 127 ? ++t : t += n <= 2047 ? 2 : n <= 65535 ? 3 : 4
}
return t
}
function Lr(e, t) {
for (var r = "", n = 0; !(n >= t / 2); ++n) {
var o = Ye[e + 2 * n >> 1];
if (0 == o) break;
r += String.fromCharCode(o)
}
return r
}
function Ir(e, t, r) {
if (void 0 === r && (r = 2147483647), r < 2) return 0;
for (var n = t, o = (r -= 2) < 2 * e.length ? r / 2 : e.length, a = 0; a < o; ++a) {
var i = e.charCodeAt(a);
Ye[t >> 1] = i, t += 2
}
return Ye[t >> 1] = 0, t - n
}
function Fr(e) {
return 2 * e.length
}
function Ur(e, t) {
for (var r = 0, n = ""; !(r >= t / 4);) {
var o = $e[e + 4 * r >> 2];
if (0 == o) break;
if (++r, o >= 65536) {
var a = o - 65536;
n += String.fromCharCode(55296 | a >> 10, 56320 | 1023 & a)
} else n += String.fromCharCode(o)
}
return n
}
function Nr(e, t, r) {
if (void 0 === r && (r = 2147483647), r < 4) return 0;
for (var n = t, o = n + r - 4, a = 0; a < e.length; ++a) {
var i = e.charCodeAt(a);
if (i >= 55296 && i <= 57343) i = 65536 + ((1023 & i) << 10) | 1023 & e.charCodeAt(++a);
if ($e[t >> 2] = i, (t += 4) + 4 > o) break
}
return $e[t >> 2] = 0, t - n
}
function jr(e) {
for (var t = 0, r = 0; r < e.length; ++r) {
var n = e.charCodeAt(r);
n >= 55296 && n <= 57343 && ++r, t += 4
}
return t
}
function Gr(e) {
var t = Rr(e) + 1, r = Jt(t);
return r && Br(e, ze, r, t), r
}
function zr(e) {
Or(!Se, "addRunDependency cannot be used in a pthread worker"), nt++, Ee.monitorRunDependencies && Ee.monitorRunDependencies(nt)
}
function Wr(e) {
if (nt--, Ee.monitorRunDependencies && Ee.monitorRunDependencies(nt), 0 == nt && (null !== ot && (clearInterval(ot), ot = null), at)) {
var t = at;
at = null, t()
}
}
function Yr(e) {
throw Ee.onAbort && Ee.onAbort(e), Se && console.error("Pthread aborting at " + (new Error).stack), Me(e += ""), je = !0, 1, e = "abort(" + e + "). Build with -s ASSERTIONS=1 for more info.", new WebAssembly.RuntimeError(e)
}
function Hr(e) {
return t = e, r = it, String.prototype.startsWith ? t.startsWith(r) : 0 === t.indexOf(r);
var t, r
}
function $r(e) {
try {
if (e == st && Ie) return new Uint8Array(Ie);
if (xe) return xe(e);
throw"both async and sync fetching of the wasm failed"
} catch (e) {
Yr(e)
}
}
function Vr() {
var e = {a: qt};
function t(e, t) {
var r = e.exports;
Ee.asm = r, Ze = Ee.asm.da, Ne = t, Se || Wr()
}
function r(e) {
t(e.instance, e.module)
}
function n(t) {
return (Ie || !Te && !De || "function" != typeof fetch ? Promise.resolve().then((function () {
return $r(st)
})) : fetch(st, {credentials: "same-origin"}).then((function (e) {
if (!e.ok) throw"failed to load wasm binary file at '" + st + "'";
return e.arrayBuffer()
})).catch((function () {
return $r(st)
}))).then((function (t) {
return WebAssembly.instantiate(t, e)
})).then(t, (function (e) {
Me("failed to asynchronously prepare wasm: " + e), Yr(e)
}))
}
if (Se || zr(), Ee.instantiateWasm) try {
return Ee.instantiateWasm(e, t)
} catch (e) {
return Me("Module.instantiateWasm callback failed with error: " + e), !1
}
return Ie || "function" != typeof WebAssembly.instantiateStreaming || Hr(st) || "function" != typeof fetch ? n(r) : fetch(st, {credentials: "same-origin"}).then((function (t) {
return WebAssembly.instantiateStreaming(t, e).then(r, (function (e) {
return Me("wasm streaming compile failed: " + e), Me("falling back to ArrayBuffer instantiation"), n(r)
}))
})), {}
}
function Qr() {
ft.initRuntime()
}
function Xr(e) {
for (; e.length > 0;) {
var t = e.shift();
if ("function" != typeof t) {
var r = t.func;
"number" == typeof r ? void 0 === t.arg ? Ze.get(r)() : Ze.get(r)(t.arg) : r(void 0 === t.arg ? null : t.arg)
} else t(Ee)
}
}
function qr(e, t) {
if (e <= 0 || e > ze.length || !0 & e || t < 0) return -28;
if (0 == t) return 0;
t >= 2147483647 && (t = 1 / 0);
var r = Atomics.load($e, br >> 2), n = 0;
if (r == e && (Atomics.compareExchange($e, br >> 2, r, 0) == r && (n = 1, --t <= 0))) return 1;
var o = Atomics.notify($e, e >> 2, t);
if (o >= 0) return o + n;
throw"Atomics.notify returned an unexpected value " + o
}
function Zr(e) {
if (Se) throw"Internal Error! cleanupThread() can only ever be called from main application thread!";
if (!e) throw"Internal Error! Null pthread_ptr in cleanupThread!";
$e[e + 12 >> 2] = 0;
var t = ft.pthreads[e];
if (t) {
var r = t.worker;
ft.returnWorkerToPool(r)
}
}
function Kr(e, t) {
yr(e, t), vr(e)
}
function Jr() {
return Fe
}
function en(e, t) {
return Ze.get(e)(t)
}
function tn() {
var e = new Error;
if (!e.stack) {
try {
throw new Error
} catch (t) {
e = t
}
if (!e.stack) return "(no stack trace available)"
}
return e.stack.toString()
}
function rn(e, t, r, n) {
Yr("Assertion failed: " + xr(e) + ", at: " + [t ? xr(t) : "unknown filename", r, n ? xr(n) : "unknown function"])
}
function nn(e) {
return $e[tr() >> 2] = e, e
}
function on(e) {
for (var t = function (e, t) {
return t || (t = Re), Math.ceil(e / t) * t
}(e, 16384), r = Jt(t); e < t;) ze[r + e++] = 0;
return r
}
function an(e, t, r) {
if (Se) return zo(1, 1, e, t, r);
Et.varargs = r;
try {
var n = Et.getStreamFromFD(e);
switch (t) {
case 0:
return (o = Et.get()) < 0 ? -28 : vt.open(n.path, n.flags, 0, o).fd;
case 1:
case 2:
return 0;
case 3:
return n.flags;
case 4:
var o = Et.get();
return n.flags |= o, 0;
case 12:
o = Et.get();
return Ye[o + 0 >> 1] = 2, 0;
case 13:
case 14:
return 0;
case 16:
case 8:
return -28;
case 9:
return nn(28), -1;
default:
return -28
}
} catch (e) {
return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), -e.errno
}
}
function sn(e, t, r) {
if (Se) return zo(2, 1, e, t, r);
Et.varargs = r;
try {
var n = Et.getStr(e), o = r ? Et.get() : 0;
return vt.open(n, t, o).fd
} catch (e) {
return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), -e.errno
}
}
function un(e) {
switch (e) {
case 1:
return 0;
case 2:
return 1;
case 4:
return 2;
case 8:
return 3;
default:
throw new TypeError("Unknown type size: " + e)
}
}
function cn(e) {
for (var t = "", r = e; We[r];) t += yt[We[r++]];
return t
}
function ln(e) {
if (void 0 === e) return "_unknown";
var t = (e = e.replace(/[^a-zA-Z0-9_]/g, "$")).charCodeAt(0);
return t >= kt && t <= Tt ? "_" + e : e
}
function dn(e, t) {
return e = ln(e), new Function("body", "return function " + e + '() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)
}
function fn(e, t) {
var r = dn(t, (function (e) {
this.name = t, this.message = e;
var r = new Error(e).stack;
void 0 !== r && (this.stack = this.toString() + "\n" + r.replace(/^Error(:[^\n]*)?\n/, ""))
}));
return r.prototype = Object.create(e.prototype), r.prototype.constructor = r, r.prototype.toString = function () {
return void 0 === this.message ? this.name : this.name + ": " + this.message
}, r
}
function pn(e) {
throw new Dt(e)
}
function hn(e) {
throw new St(e)
}
function mn(e, t, r) {
function n(t) {
var n = r(t);
n.length !== e.length && hn("Mismatched type converter count");
for (var o = 0; o < e.length; ++o) An(e[o], n[o])
}
e.forEach((function (e) {
bt[e] = t
}));
var o = new Array(t.length), a = [], i = 0;
t.forEach((function (e, t) {
_t.hasOwnProperty(e) ? o[t] = _t[e] : (a.push(e), wt.hasOwnProperty(e) || (wt[e] = []), wt[e].push((function () {
o[t] = _t[e], ++i === a.length && n(o)
})))
})), 0 === a.length && n(o)
}
function An(e, t, r) {
if (r = r || {}, !("argPackAdvance" in t)) throw new TypeError("registerType registeredInstance requires argPackAdvance");
var n = t.name;
if (e || pn('type "' + n + '" must have a positive integer typeid pointer'), _t.hasOwnProperty(e)) {
if (r.ignoreDuplicateRegistrations) return;
pn("Cannot register type '" + n + "' twice")
}
if (_t[e] = t, delete bt[e], wt.hasOwnProperty(e)) {
var o = wt[e];
delete wt[e], o.forEach((function (e) {
e()
}))
}
}
function gn(e, t, r, n, o) {
var a = un(r);
An(e, {
name: t = cn(t), fromWireType: function (e) {
return !!e
}, toWireType: function (e, t) {
return t ? n : o
}, argPackAdvance: 8, readValueFromPointer: function (e) {
var n;
if (1 === r) n = ze; else if (2 === r) n = Ye; else {
if (4 !== r) throw new TypeError("Unknown boolean type size: " + t);
n = $e
}
return this.fromWireType(n[e >> a])
}, destructorFunction: null
})
}
function vn(e) {
if (!(this instanceof Cn)) return !1;
if (!(e instanceof Cn)) return !1;
for (var t = this.$$.ptrType.registeredClass, r = this.$$.ptr, n = e.$$.ptrType.registeredClass, o = e.$$.ptr; t.baseClass;) r = t.upcast(r), t = t.baseClass;
for (; n.baseClass;) o = n.upcast(o), n = n.baseClass;
return t === n && r === o
}
function En(e) {
pn(e.$$.ptrType.registeredClass.name + " instance already deleted")
}
function yn(e) {
}
function wn(e) {
e.count.value -= 1, 0 === e.count.value && function (e) {
e.smartPtr ? e.smartPtrType.rawDestructor(e.smartPtr) : e.ptrType.registeredClass.rawDestructor(e.ptr)
}(e)
}
function _n(e) {
return "undefined" == typeof FinalizationGroup ? (_n = function (e) {
return e
}, e) : (Ct = new FinalizationGroup((function (e) {
for (var t = e.next(); !t.done; t = e.next()) {
var r = t.value;
r.ptr ? wn(r) : console.warn("object already deleted: " + r.ptr)
}
})), yn = function (e) {
Ct.unregister(e.$$)
}, (_n = function (e) {
return Ct.register(e, e.$$, e.$$), e
})(e))
}
function bn() {
if (this.$$.ptr || En(this), this.$$.preservePointerOnDelete) return this.$$.count.value += 1, this;
var e, t = _n(Object.create(Object.getPrototypeOf(this), {
$$: {
value: (e = this.$$, {
count: e.count,
deleteScheduled: e.deleteScheduled,
preservePointerOnDelete: e.preservePointerOnDelete,
ptr: e.ptr,
ptrType: e.ptrType,
smartPtr: e.smartPtr,
smartPtrType: e.smartPtrType
})
}
}));
return t.$$.count.value += 1, t.$$.deleteScheduled = !1, t
}
function kn() {
this.$$.ptr || En(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && pn("Object already scheduled for deletion"), yn(this), wn(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0)
}
function Tn() {
return !this.$$.ptr
}
function Dn() {
for (; Pt.length;) {
var e = Pt.pop();
e.$$.deleteScheduled = !1, e.delete()
}
}
function Sn() {
return this.$$.ptr || En(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && pn("Object already scheduled for deletion"), Pt.push(this), 1 === Pt.length && Ot && Ot(Dn), this.$$.deleteScheduled = !0, this
}
function Cn() {
}
function On(e, t, r) {
if (void 0 === e[t].overloadTable) {
var n = e[t];
e[t] = function () {
return e[t].overloadTable.hasOwnProperty(arguments.length) || pn("Function '" + r + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + e[t].overloadTable + ")!"), e[t].overloadTable[arguments.length].apply(this, arguments)
}, e[t].overloadTable = [], e[t].overloadTable[n.argCount] = n
}
}
function Pn(e, t, r, n, o, a, i, s) {
this.name = e, this.constructor = t, this.instancePrototype = r, this.rawDestructor = n, this.baseClass = o, this.getActualType = a, this.upcast = i, this.downcast = s, this.pureVirtualFunctions = []
}
function xn(e, t, r) {
for (; t !== r;) t.upcast || pn("Expected null or instance of " + r.name + ", got an instance of " + t.name), e = t.upcast(e), t = t.baseClass;
return e
}
function Bn(e, t) {
if (null === t) return this.isReference && pn("null is not a valid " + this.name), 0;
t.$$ || pn('Cannot pass "' + lo(t) + '" as a ' + this.name), t.$$.ptr || pn("Cannot pass deleted object as a pointer of type " + this.name);
var r = t.$$.ptrType.registeredClass;
return xn(t.$$.ptr, r, this.registeredClass)
}
function Mn(e, t) {
var r;
if (null === t) return this.isReference && pn("null is not a valid " + this.name), this.isSmartPointer ? (r = this.rawConstructor(), null !== e && e.push(this.rawDestructor, r), r) : 0;
t.$$ || pn('Cannot pass "' + lo(t) + '" as a ' + this.name), t.$$.ptr || pn("Cannot pass deleted object as a pointer of type " + this.name), !this.isConst && t.$$.ptrType.isConst && pn("Cannot convert argument of type " + (t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name) + " to parameter type " + this.name);
var n = t.$$.ptrType.registeredClass;
if (r = xn(t.$$.ptr, n, this.registeredClass), this.isSmartPointer) switch (void 0 === t.$$.smartPtr && pn("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) {
case 0:
t.$$.smartPtrType === this ? r = t.$$.smartPtr : pn("Cannot convert argument of type " + (t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name) + " to parameter type " + this.name);
break;
case 1:
r = t.$$.smartPtr;
break;
case 2:
if (t.$$.smartPtrType === this) r = t.$$.smartPtr; else {
var o = t.clone();
r = this.rawShare(r, uo((function () {
o.delete()
}))), null !== e && e.push(this.rawDestructor, r)
}
break;
default:
pn("Unsupporting sharing policy")
}
return r
}
function Rn(e, t) {
if (null === t) return this.isReference && pn("null is not a valid " + this.name), 0;
t.$$ || pn('Cannot pass "' + lo(t) + '" as a ' + this.name), t.$$.ptr || pn("Cannot pass deleted object as a pointer of type " + this.name), t.$$.ptrType.isConst && pn("Cannot convert argument of type " + t.$$.ptrType.name + " to parameter type " + this.name);
var r = t.$$.ptrType.registeredClass;
return xn(t.$$.ptr, r, this.registeredClass)
}
function Ln(e) {
return this.fromWireType(Ve[e >> 2])
}
function In(e) {
return this.rawGetPointee && (e = this.rawGetPointee(e)), e
}
function Fn(e) {
this.rawDestructor && this.rawDestructor(e)
}
function Un(e) {
null !== e && e.delete()
}
function Nn(e, t, r) {
if (t === r) return e;
if (void 0 === r.baseClass) return null;
var n = Nn(e, t, r.baseClass);
return null === n ? null : r.downcast(n)
}
function jn() {
return Object.keys(Bt).length
}
function Gn() {
var e = [];
for (var t in Bt) Bt.hasOwnProperty(t) && e.push(Bt[t]);
return e
}
function zn(e) {
Ot = e, Pt.length && Ot && Ot(Dn)
}
function Wn(e, t) {
return t = function (e, t) {
for (void 0 === t && pn("ptr should not be undefined"); e.baseClass;) t = e.upcast(t), e = e.baseClass;
return t
}(e, t), Bt[t]
}
function Yn(e, t) {
return t.ptrType && t.ptr || hn("makeClassHandle requires ptr and ptrType"), !!t.smartPtrType !== !!t.smartPtr && hn("Both smartPtrType and smartPtr must be specified"), t.count = {value: 1}, _n(Object.create(e, {$$: {value: t}}))
}
function Hn(e) {
var t = this.getPointee(e);
if (!t) return this.destructor(e), null;
var r = Wn(this.registeredClass, t);
if (void 0 !== r) {
if (0 === r.$$.count.value) return r.$$.ptr = t, r.$$.smartPtr = e, r.clone();
var n = r.clone();
return this.destructor(e), n
}
function o() {
return this.isSmartPointer ? Yn(this.registeredClass.instancePrototype, {
ptrType: this.pointeeType,
ptr: t,
smartPtrType: this,
smartPtr: e
}) : Yn(this.registeredClass.instancePrototype, {ptrType: this, ptr: e})
}
var a, i = this.registeredClass.getActualType(t), s = xt[i];
if (!s) return o.call(this);
a = this.isConst ? s.constPointerType : s.pointerType;
var u = Nn(t, this.registeredClass, a.registeredClass);
return null === u ? o.call(this) : this.isSmartPointer ? Yn(a.registeredClass.instancePrototype, {
ptrType: a,
ptr: u,
smartPtrType: this,
smartPtr: e
}) : Yn(a.registeredClass.instancePrototype, {ptrType: a, ptr: u})
}
function $n(e, t, r, n, o, a, i, s, u, c, l) {
this.name = e, this.registeredClass = t, this.isReference = r, this.isConst = n, this.isSmartPointer = o, this.pointeeType = a, this.sharingPolicy = i, this.rawGetPointee = s, this.rawConstructor = u, this.rawShare = c, this.rawDestructor = l, o || void 0 !== t.baseClass ? this.toWireType = Mn : n ? (this.toWireType = Bn, this.destructorFunction = null) : (this.toWireType = Rn, this.destructorFunction = null)
}
function Vn(e, t, r) {
return -1 != e.indexOf("j") ? function (e, t, r) {
var n = Ee["dynCall_" + e];
return r && r.length ? n.apply(null, [t].concat(r)) : n.call(null, t)
}(e, t, r) : Ze.get(t).apply(null, r)
}
function Qn(e, t) {
var r, n, o, a = -1 != (e = cn(e)).indexOf("j") ? (r = e, n = t, o = [], function () {
o.length = arguments.length;
for (var e = 0; e < arguments.length; e++) o[e] = arguments[e];
return Vn(r, n, o)
}) : Ze.get(t);
return "function" != typeof a && pn("unknown function pointer with signature " + e + ": " + t), a
}
function Xn(e) {
var t = rr(e), r = cn(t);
return Kt(t), r
}
function qn(e, t) {
var r = [], n = {};
throw t.forEach((function e(t) {
n[t] || _t[t] || (bt[t] ? bt[t].forEach(e) : (r.push(t), n[t] = !0))
})), new Mt(e + ": " + r.map(Xn).join([", "]))
}
function Zn(e, t, r, n, o, a, i, s, u, c, l, d, f) {
l = cn(l), a = Qn(o, a), s && (s = Qn(i, s)), c && (c = Qn(u, c)), f = Qn(d, f);
var p = ln(l);
!function (e, t, r) {
Ee.hasOwnProperty(e) ? ((void 0 === r || void 0 !== Ee[e].overloadTable && void 0 !== Ee[e].overloadTable[r]) && pn("Cannot register public name '" + e + "' twice"), On(Ee, e, e), Ee.hasOwnProperty(r) && pn("Cannot register multiple overloads of a function with the same number of arguments (" + r + ")!"), Ee[e].overloadTable[r] = t) : (Ee[e] = t, void 0 !== r && (Ee[e].numArguments = r))
}(p, (function () {
qn("Cannot construct " + l + " due to unbound types", [n])
})), mn([e, t, r], n ? [n] : [], (function (t) {
var r, o;
t = t[0], o = n ? (r = t.registeredClass).instancePrototype : Cn.prototype;
var i = dn(p, (function () {
if (Object.getPrototypeOf(this) !== u) throw new Dt("Use 'new' to construct " + l);
if (void 0 === d.constructor_body) throw new Dt(l + " has no accessible constructor");
var e = d.constructor_body[arguments.length];
if (void 0 === e) throw new Dt("Tried to invoke ctor of " + l + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys(d.constructor_body).toString() + ") parameters instead!");
return e.apply(this, arguments)
})), u = Object.create(o, {constructor: {value: i}});
i.prototype = u;
var d = new Pn(l, i, u, f, r, a, s, c), h = new $n(l, d, !0, !1, !1), m = new $n(l + "*", d, !1, !1, !1),
A = new $n(l + " const*", d, !1, !0, !1);
return xt[e] = {pointerType: m, constPointerType: A}, function (e, t, r) {
Ee.hasOwnProperty(e) || hn("Replacing nonexistant public symbol"), void 0 !== Ee[e].overloadTable && void 0 !== r ? Ee[e].overloadTable[r] = t : (Ee[e] = t, Ee[e].argCount = r)
}(p, i), [h, m, A]
}))
}
function Kn(e, t) {
for (var r = [], n = 0; n < e; n++) r.push($e[(t >> 2) + n]);
return r
}
function Jn(e) {
for (; e.length;) {
var t = e.pop();
e.pop()(t)
}
}
function eo(e, t, r, n, o, a) {
Or(t > 0);
var i = Kn(t, r);
o = Qn(n, o);
var s = [a], u = [];
mn([], [e], (function (e) {
var r = "constructor " + (e = e[0]).name;
if (void 0 === e.registeredClass.constructor_body && (e.registeredClass.constructor_body = []), void 0 !== e.registeredClass.constructor_body[t - 1]) throw new Dt("Cannot register multiple constructors with identical number of parameters (" + (t - 1) + ") for class '" + e.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!");
return e.registeredClass.constructor_body[t - 1] = function () {
qn("Cannot construct " + e.name + " due to unbound types", i)
}, mn([], i, (function (n) {
return e.registeredClass.constructor_body[t - 1] = function () {
arguments.length !== t - 1 && pn(r + " called with " + arguments.length + " arguments, expected " + (t - 1)), u.length = 0, s.length = t;
for (var e = 1; e < t; ++e) s[e] = n[e].toWireType(u, arguments[e - 1]);
var a = o.apply(null, s);
return Jn(u), n[0].fromWireType(a)
}, []
})), []
}))
}
function to(e, t) {
if (!(e instanceof Function)) throw new TypeError("new_ called with constructor type " + typeof e + " which is not a function");
var r = dn(e.name || "unknownFunctionName", (function () {
}));
r.prototype = e.prototype;
var n = new r, o = e.apply(n, t);
return o instanceof Object ? o : n
}
function ro(e, t, r, n, o, a, i, s) {
var u = Kn(r, n);
t = cn(t), a = Qn(o, a), mn([], [e], (function (e) {
var n = (e = e[0]).name + "." + t;
function o() {
qn("Cannot call " + n + " due to unbound types", u)
}
s && e.registeredClass.pureVirtualFunctions.push(t);
var c = e.registeredClass.instancePrototype, l = c[t];
return void 0 === l || void 0 === l.overloadTable && l.className !== e.name && l.argCount === r - 2 ? (o.argCount = r - 2, o.className = e.name, c[t] = o) : (On(c, t, n), c[t].overloadTable[r - 2] = o), mn([], u, (function (o) {
var s = function (e, t, r, n, o) {
var a = t.length;
a < 2 && pn("argTypes array size mismatch! Must at least get return value and 'this' types!");
for (var i = null !== t[1] && null !== r, s = !1, u = 1; u < t.length; ++u) if (null !== t[u] && void 0 === t[u].destructorFunction) {
s = !0;
break
}
var c = "void" !== t[0].name, l = "", d = "";
for (u = 0; u < a - 2; ++u) l += (0 !== u ? ", " : "") + "arg" + u, d += (0 !== u ? ", " : "") + "arg" + u + "Wired";
var f = "return function " + ln(e) + "(" + l + ") {\nif (arguments.length !== " + (a - 2) + ") {\nthrowBindingError('function " + e + " called with ' + arguments.length + ' arguments, expected " + (a - 2) + " args!');\n}\n";
s && (f += "var destructors = [];\n");
var p = s ? "destructors" : "null",
h = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"],
m = [pn, n, o, Jn, t[0], t[1]];
for (i && (f += "var thisWired = classParam.toWireType(" + p + ", this);\n"), u = 0; u < a - 2; ++u) f += "var arg" + u + "Wired = argType" + u + ".toWireType(" + p + ", arg" + u + "); // " + t[u + 2].name + "\n", h.push("argType" + u), m.push(t[u + 2]);
if (i && (d = "thisWired" + (d.length > 0 ? ", " : "") + d), f += (c ? "var rv = " : "") + "invoker(fn" + (d.length > 0 ? ", " : "") + d + ");\n", s) f += "runDestructors(destructors);\n"; else for (u = i ? 1 : 2; u < t.length; ++u) {
var A = 1 === u ? "thisWired" : "arg" + (u - 2) + "Wired";
null !== t[u].destructorFunction && (f += A + "_dtor(" + A + "); // " + t[u].name + "\n", h.push(A + "_dtor"), m.push(t[u].destructorFunction))
}
return c && (f += "var ret = retType.fromWireType(rv);\nreturn ret;\n"), f += "}\n", h.push(f), to(Function, h).apply(null, m)
}(n, o, e, a, i);
return void 0 === c[t].overloadTable ? (s.argCount = r - 2, c[t] = s) : c[t].overloadTable[r - 2] = s, []
})), []
}))
}
function no(e, t, r) {
return e instanceof Object || pn(r + ' with invalid "this": ' + e), e instanceof t.registeredClass.constructor || pn(r + ' incompatible with "this" of type ' + e.constructor.name), e.$$.ptr || pn("cannot call emscripten binding method " + r + " on deleted object"), xn(e.$$.ptr, e.$$.ptrType.registeredClass, t.registeredClass)
}
function oo(e, t, r, n, o, a, i, s, u, c) {
t = cn(t), o = Qn(n, o), mn([], [e], (function (e) {
var n = (e = e[0]).name + "." + t, l = {
get: function () {
qn("Cannot access " + n + " due to unbound types", [r, i])
}, enumerable: !0, configurable: !0
};
return l.set = u ? function () {
qn("Cannot access " + n + " due to unbound types", [r, i])
} : function (e) {
pn(n + " is a read-only property")
}, Object.defineProperty(e.registeredClass.instancePrototype, t, l), mn([], u ? [r, i] : [r], (function (r) {
var i = r[0], l = {
get: function () {
var t = no(this, e, n + " getter");
return i.fromWireType(o(a, t))
}, enumerable: !0
};
if (u) {
u = Qn(s, u);
var d = r[1];
l.set = function (t) {
var r = no(this, e, n + " setter"), o = [];
u(c, r, d.toWireType(o, t)), Jn(o)
}
}
return Object.defineProperty(e.registeredClass.instancePrototype, t, l), []
})), []
}))
}
function ao(e) {
e > 4 && 0 == --Lt[e].refcount && (Lt[e] = void 0, Rt.push(e))
}
function io() {
for (var e = 0, t = 5; t < Lt.length; ++t) void 0 !== Lt[t] && ++e;
return e
}
function so() {
for (var e = 5; e < Lt.length; ++e) if (void 0 !== Lt[e]) return Lt[e];
return null
}
function uo(e) {
switch (e) {
case void 0:
return 1;
case null:
return 2;
case!0:
return 3;
case!1:
return 4;
default:
var t = Rt.length ? Rt.pop() : Lt.length;
return Lt[t] = {refcount: 1, value: e}, t
}
}
function co(e, t) {
An(e, {
name: t = cn(t), fromWireType: function (e) {
var t = Lt[e].value;
return ao(e), t
}, toWireType: function (e, t) {
return uo(t)
}, argPackAdvance: 8, readValueFromPointer: Ln, destructorFunction: null
})
}
function lo(e) {
if (null === e) return "null";
var t = typeof e;
return "object" === t || "array" === t || "function" === t ? e.toString() : "" + e
}
function fo(e, t) {
switch (t) {
case 2:
return function (e) {
return this.fromWireType(Qe[e >> 2])
};
case 3:
return function (e) {
return this.fromWireType(Xe[e >> 3])
};
default:
throw new TypeError("Unknown float type: " + e)
}
}
function po(e, t, r) {
var n = un(r);
An(e, {
name: t = cn(t), fromWireType: function (e) {
return e
}, toWireType: function (e, t) {
if ("number" != typeof t && "boolean" != typeof t) throw new TypeError('Cannot convert "' + lo(t) + '" to ' + this.name);
return t
}, argPackAdvance: 8, readValueFromPointer: fo(t, n), destructorFunction: null
})
}
function ho(e, t, r) {
switch (t) {
case 0:
return r ? function (e) {
return ze[e]
} : function (e) {
return We[e]
};
case 1:
return r ? function (e) {
return Ye[e >> 1]
} : function (e) {
return He[e >> 1]
};
case 2:
return r ? function (e) {
return $e[e >> 2]
} : function (e) {
return Ve[e >> 2]
};
default:
throw new TypeError("Unknown integer type: " + e)
}
}
function mo(e, t, r, n, o) {
t = cn(t), -1 === o && (o = 4294967295);
var a = un(r), i = function (e) {
return e
};
if (0 === n) {
var s = 32 - 8 * r;
i = function (e) {
return e << s >>> s
}
}
var u = -1 != t.indexOf("unsigned");
An(e, {
name: t, fromWireType: i, toWireType: function (e, r) {
if ("number" != typeof r && "boolean" != typeof r) throw new TypeError('Cannot convert "' + lo(r) + '" to ' + this.name);
if (r < n || r > o) throw new TypeError('Passing a number "' + lo(r) + '" from JS side to C/C++ side to an argument of type "' + t + '", which is outside the valid range [' + n + ", " + o + "]!");
return u ? r >>> 0 : 0 | r
}, argPackAdvance: 8, readValueFromPointer: ho(t, a, 0 !== n), destructorFunction: null
})
}
function Ao(e, t, r) {
var n = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array][t];
function o(e) {
var t = Ve, r = t[e >>= 2], o = t[e + 1];
return new n(Ge, o, r)
}
An(e, {
name: r = cn(r),
fromWireType: o,
argPackAdvance: 8,
readValueFromPointer: o
}, {ignoreDuplicateRegistrations: !0})
}
function go(e, t) {
var r = "std::string" === (t = cn(t));
An(e, {
name: t, fromWireType: function (e) {
var t, n = Ve[e >> 2];
if (r) for (var o = e + 4, a = 0; a <= n; ++a) {
var i = e + 4 + a;
if (a == n || 0 == We[i]) {
var s = xr(o, i - o);
void 0 === t ? t = s : (t += String.fromCharCode(0), t += s), o = i + 1
}
} else {
var u = new Array(n);
for (a = 0; a < n; ++a) u[a] = String.fromCharCode(We[e + 4 + a]);
t = u.join("")
}
return Kt(e), t
}, toWireType: function (e, t) {
t instanceof ArrayBuffer && (t = new Uint8Array(t));
var n = "string" == typeof t;
n || t instanceof Uint8Array || t instanceof Uint8ClampedArray || t instanceof Int8Array || pn("Cannot pass non-string to std::string");
var o = (r && n ? function () {
return Rr(t)
} : function () {
return t.length
})(), a = Jt(4 + o + 1);
if (Ve[a >> 2] = o, r && n) Mr(t, a + 4, o + 1); else if (n) for (var i = 0; i < o; ++i) {
var s = t.charCodeAt(i);
s > 255 && (Kt(a), pn("String has UTF-16 code units that do not fit in 8 bits")), We[a + 4 + i] = s
} else for (i = 0; i < o; ++i) We[a + 4 + i] = t[i];
return null !== e && e.push(Kt, a), a
}, argPackAdvance: 8, readValueFromPointer: Ln, destructorFunction: function (e) {
Kt(e)
}
})
}
function vo(e, t, r) {
var n, o, a, i, s;
r = cn(r), 2 === t ? (n = Lr, o = Ir, i = Fr, a = function () {
return He
}, s = 1) : 4 === t && (n = Ur, o = Nr, i = jr, a = function () {
return Ve
}, s = 2), An(e, {
name: r, fromWireType: function (e) {
for (var r, o = Ve[e >> 2], i = a(), u = e + 4, c = 0; c <= o; ++c) {
var l = e + 4 + c * t;
if (c == o || 0 == i[l >> s]) {
var d = n(u, l - u);
void 0 === r ? r = d : (r += String.fromCharCode(0), r += d), u = l + t
}
}
return Kt(e), r
}, toWireType: function (e, n) {
"string" != typeof n && pn("Cannot pass non-string to C++ string type " + r);
var a = i(n), u = Jt(4 + a + t);
return Ve[u >> 2] = a >> s, o(n, u + 4, a + t), null !== e && e.push(Kt, u), u
}, argPackAdvance: 8, readValueFromPointer: Ln, destructorFunction: function (e) {
Kt(e)
}
})
}
function Eo(e, t) {
An(e, {
isVoid: !0, name: t = cn(t), argPackAdvance: 0, fromWireType: function () {
}, toWireType: function (e, t) {
}
})
}
function yo(e, t) {
if (e == t) postMessage({cmd: "processQueuedMainThreadWork"}); else if (Se) postMessage({
targetThread: e,
cmd: "processThreadQueue"
}); else {
var r = ft.pthreads[e], n = r && r.worker;
if (!n) return;
n.postMessage({cmd: "processThreadQueue"})
}
return 1
}
function wo(e) {
return e || pn("Cannot use deleted val. handle = " + e), Lt[e].value
}
function _o(e, t) {
var r = _t[e];
return void 0 === r && pn(t + " has unknown type " + Xn(e)), r
}
function bo(e, t, r) {
e = wo(e), t = _o(t, "emval::as");
var n = [], o = uo(n);
return $e[r >> 2] = o, t.toWireType(n, e)
}
function ko(e, t, r, n) {
var o, a;
(e = Ft[e])(t = wo(t), r = void 0 === (a = It[o = r]) ? cn(o) : a, null, n)
}
function To(e, t) {
for (var r = function (e, t) {
for (var r = new Array(e), n = 0; n < e; ++n) r[n] = _o($e[(t >> 2) + n], "parameter " + n);
return r
}(e, t), n = r[0], o = n.name + "_$" + r.slice(1).map((function (e) {
return e.name
})).join("_") + "$", a = ["retType"], i = [n], s = "", u = 0; u < e - 1; ++u) s += (0 !== u ? ", " : "") + "arg" + u, a.push("argType" + u), i.push(r[1 + u]);
var c = "return function " + ln("methodCaller_" + o) + "(handle, name, destructors, args) {\n", l = 0;
for (u = 0; u < e - 1; ++u) c += " var arg" + u + " = argType" + u + ".readValueFromPointer(args" + (l ? "+" + l : "") + ");\n", l += r[u + 1].argPackAdvance;
c += " var rv = handle[name](" + s + ");\n";
for (u = 0; u < e - 1; ++u) r[u + 1].deleteObject && (c += " argType" + u + ".deleteObject(arg" + u + ");\n");
n.isVoid || (c += " return retType.toWireType(destructors, rv);\n"), c += "};\n", a.push(c);
var d, f, p = to(Function, a).apply(null, i);
return d = p, f = Ft.length, Ft.push(d), f
}
function Do(e) {
e > 4 && (Lt[e].refcount += 1)
}
function So(e) {
Jn(Lt[e].value), ao(e)
}
function Co(e, t) {
return uo((e = _o(e, "_emval_take_value")).readValueFromPointer(t))
}
function Oo() {
Yr()
}
function Po() {
return void 0 === Po.start && (Po.start = Date.now()), 1e3 * (Date.now() - Po.start) | 0
}
function xo(e, t, r) {
var n = function (e, t) {
var r;
Nt.length = 0, t >>= 2;
for (; r = We[e++];) {
var n = r < 105;
n && 1 & t && t++, Nt.push(n ? Xe[t++ >> 1] : $e[t]), ++t
}
return Nt
}(t, r);
return lt[e].apply(null, n)
}
function Bo() {
De || Cr("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")
}
function Mo(e, t) {
}
function Ro(e, t, r) {
if (e <= 0 || e > ze.length || !0 & e) return -28;
if (Te) {
if (Atomics.load($e, e >> 2) != t) return -6;
var n = performance.now(), o = n + r;
for (Atomics.exchange($e, br >> 2, e); ;) {
if ((n = performance.now()) > o) return Atomics.exchange($e, br >> 2, 0), -73;
if (0 == Atomics.exchange($e, br >> 2, 0)) break;
if (lr(), Atomics.load($e, e >> 2) != t) return -6;
Atomics.exchange($e, br >> 2, e)
}
return 0
}
var a = Atomics.wait($e, e >> 2, t, r);
if ("timed-out" === a) return -73;
if ("not-equal" === a) return -6;
if ("ok" === a) return 0;
throw"Atomics.wait returned an unexpected value " + a
}
function Lo(e, t) {
return (e >>> 0) + 4294967296 * t
}
function Io(e, t) {
if (e <= 0) return e;
var r = t <= 32 ? Math.abs(1 << t - 1) : Math.pow(2, t - 1);
return e >= r && (t <= 32 || e > r) && (e = -2 * r + e), e
}
function Fo(e, t) {
return e >= 0 ? e : t <= 32 ? 2 * Math.abs(1 << t - 1) + e : Math.pow(2, t) + e
}
function Uo(e) {
if (!e || !e.callee || !e.callee.name) return [null, "", ""];
e.callee.toString();
var t = e.callee.name, r = "(", n = !0;
for (var o in e) {
var a = e[o];
n || (r += ", "), n = !1, r += "number" == typeof a || "string" == typeof a ? a : "(" + typeof a + ")"
}
r += ")";
var i = e.callee.caller;
return n && (r = ""), [e = i ? i.arguments : [], t, r]
}
function No(e, t) {
24 & e && (t = t.replace(/\s+$/, ""), t += (t.length > 0 ? "\n" : "") + function (e) {
var t = tn(), r = t.lastIndexOf("_emscripten_log"), n = t.lastIndexOf("_emscripten_get_callstack"),
o = t.indexOf("\n", Math.max(r, n)) + 1;
t = t.slice(o), 32 & e && Cr("EM_LOG_DEMANGLE is deprecated; ignoring"), 8 & e && "undefined" == typeof emscripten_source_map && (Cr('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 = Uo(arguments); a[1].indexOf("_emscripten_") >= 0;) a = Uo(a[0]);
var i = t.split("\n");
t = "";
var s = new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"), u = new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"),
c = new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");
for (var l in i) {
var d = i[l], f = "", p = "", h = 0, m = 0, A = c.exec(d);
if (A && 5 == A.length) f = A[1], p = A[2], h = A[3], m = A[4]; else {
if ((A = s.exec(d)) || (A = u.exec(d)), !(A && A.length >= 4)) {
t += d + "\n";
continue
}
f = A[1], p = A[2], h = A[3], m = 0 | A[4]
}
var g = !1;
if (8 & e) {
var v = emscripten_source_map.originalPositionFor({line: h, column: m});
(g = v && v.source) && (64 & e && (v.source = v.source.substring(v.source.replace(/\\/g, "/").lastIndexOf("/") + 1)), t += " at " + f + " (" + v.source + ":" + v.line + ":" + v.column + ")\n")
}
(16 & e || !g) && (64 & e && (p = p.substring(p.replace(/\\/g, "/").lastIndexOf("/") + 1)), t += (g ? " = " + f : " at " + f) + " (" + p + ":" + h + ":" + m + ")\n"), 128 & e && a[0] && (a[1] == f && a[2].length > 0 && (t = t.replace(/\s+$/, ""), t += " with values: " + a[1] + a[2] + "\n"), a = Uo(a[0]))
}
return t.replace(/\s+$/, "")
}(e)), 1 & e ? 4 & e ? console.error(t) : 2 & e ? console.warn(t) : 512 & e ? console.info(t) : 256 & e ? console.debug(t) : console.log(t) : 6 & e ? Me(t) : Be(t)
}
function jo(e, t, r) {
No(e, Pr(function (e, t) {
var r = e, n = t;
function o(e) {
var t;
return n = function (e, t) {
return "double" !== t && "i64" !== t || 7 & e && (e += 4), e
}(n, e), "double" === e ? (t = Xe[n >> 3], n += 8) : "i64" == e ? (t = [$e[n >> 2], $e[n + 4 >> 2]], n += 8) : (e = "i32", t = $e[n >> 2], n += 4), t
}
for (var a, i, s, u, c = []; ;) {
var l = r;
if (0 === (a = ze[r >> 0])) break;
if (i = ze[r + 1 >> 0], 37 == a) {
var d = !1, f = !1, p = !1, h = !1, m = !1;
e:for (; ;) {
switch (i) {
case 43:
d = !0;
break;
case 45:
f = !0;
break;
case 35:
p = !0;
break;
case 48:
if (h) break e;
h = !0;
break;
case 32:
m = !0;
break;
default:
break e
}
r++, i = ze[r + 1 >> 0]
}
var A = 0;
if (42 == i) A = o("i32"), r++, i = ze[r + 1 >> 0]; else for (; i >= 48 && i <= 57;) A = 10 * A + (i - 48), r++, i = ze[r + 1 >> 0];
var g, v = !1, E = -1;
if (46 == i) {
if (E = 0, v = !0, r++, 42 == (i = ze[r + 1 >> 0])) E = o("i32"), r++; else for (; ;) {
var y = ze[r + 1 >> 0];
if (y < 48 || y > 57) break;
E = 10 * E + (y - 48), r++
}
i = ze[r + 1 >> 0]
}
switch (E < 0 && (E = 6, v = !1), String.fromCharCode(i)) {
case"h":
104 == ze[r + 2 >> 0] ? (r++, g = 1) : g = 2;
break;
case"l":
108 == ze[r + 2 >> 0] ? (r++, g = 8) : g = 4;
break;
case"L":
case"q":
case"j":
g = 8;
break;
case"z":
case"t":
case"I":
g = 4;
break;
default:
g = null
}
switch (g && r++, i = ze[r + 1 >> 0], String.fromCharCode(i)) {
case"d":
case"i":
case"u":
case"o":
case"x":
case"X":
case"p":
var w = 100 == i || 105 == i;
s = o("i" + 8 * (g = g || 4)), 8 == g && (s = 117 == i ? (s[0] >>> 0) + 4294967296 * (s[1] >>> 0) : Lo(s[0], s[1])), g <= 4 && (s = (w ? Io : Fo)(s & Math.pow(256, g) - 1, 8 * g));
var _ = Math.abs(s), b = "";
if (100 == i || 105 == i) D = Io(s, 8 * g).toString(10); else if (117 == i) D = Fo(s, 8 * g).toString(10), s = Math.abs(s); else if (111 == i) D = (p ? "0" : "") + _.toString(8); else if (120 == i || 88 == i) {
if (b = p && 0 != s ? "0x" : "", s < 0) {
s = -s, D = (_ - 1).toString(16);
for (var k = [], T = 0; T < D.length; T++) k.push((15 - parseInt(D[T], 16)).toString(16));
for (D = k.join(""); D.length < 2 * g;) D = "f" + D
} else D = _.toString(16);
88 == i && (b = b.toUpperCase(), D = D.toUpperCase())
} else 112 == i && (0 === _ ? D = "(nil)" : (b = "0x", D = _.toString(16)));
if (v) for (; D.length < E;) D = "0" + D;
for (s >= 0 && (d ? b = "+" + b : m && (b = " " + b)), "-" == D.charAt(0) && (b = "-" + b, D = D.substr(1)); b.length + D.length < A;) f ? D += " " : h ? D = "0" + D : b = " " + b;
(D = b + D).split("").forEach((function (e) {
c.push(e.charCodeAt(0))
}));
break;
case"f":
case"F":
case"e":
case"E":
case"g":
case"G":
var D;
if (s = o("double"), isNaN(s)) D = "nan", h = !1; else if (isFinite(s)) {
var S = !1, C = Math.min(E, 20);
if (103 == i || 71 == i) {
S = !0, E = E || 1;
var O = parseInt(s.toExponential(C).split("e")[1], 10);
E > O && O >= -4 ? (i = (103 == i ? "f" : "F").charCodeAt(0), E -= O + 1) : (i = (103 == i ? "e" : "E").charCodeAt(0), E--), C = Math.min(E, 20)
}
101 == i || 69 == i ? (D = s.toExponential(C), /[eE][-+]\d$/.test(D) && (D = D.slice(0, -1) + "0" + D.slice(-1))) : 102 != i && 70 != i || (D = s.toFixed(C), 0 === s && ((u = s) < 0 || 0 === u && 1 / u == -1 / 0) && (D = "-" + D));
var P = D.split("e");
if (S && !p) 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 (p && -1 == D.indexOf(".") && (P[0] += "."); E > C++;) P[0] += "0";
D = P[0] + (P.length > 1 ? "e" + P[1] : ""), 69 == i && (D = D.toUpperCase()), s >= 0 && (d ? D = "+" + D : m && (D = " " + D))
} else D = (s < 0 ? "-" : "") + "inf", h = !1;
for (; D.length < A;) f ? D += " " : D = !h || "-" != D[0] && "+" != D[0] ? (h ? "0" : " ") + D : D[0] + "0" + D.slice(1);
i < 97 && (D = D.toUpperCase()), D.split("").forEach((function (e) {
c.push(e.charCodeAt(0))
}));
break;
case"s":
var x = o("i8*"), B = x ? er(x) : "(null)".length;
if (v && (B = Math.min(B, E)), !f) for (; B < A--;) c.push(32);
if (x) for (T = 0; T < B; T++) c.push(We[x++ >> 0]); else c = c.concat(ga("(null)".substr(0, B), !0));
if (f) for (; B < A--;) c.push(32);
break;
case"c":
for (f && c.push(o("i8")); --A > 0;) c.push(32);
f || c.push(o("i8"));
break;
case"n":
var M = o("i32*");
$e[M >> 2] = c.length;
break;
case"%":
c.push(a);
break;
default:
for (T = l; T < r + 2; T++) c.push(ze[T >> 0])
}
r += 2
} else c.push(a), r += 1
}
return c
}(t, r), 0))
}
function Go(e, t, r) {
We.copyWithin(e, t, t + r)
}
function zo(e, t) {
for (var r = arguments.length - 2, n = gr(), o = r, a = Er(8 * o), i = a >> 3, s = 0; s < r; s++) {
var u = arguments[2 + s];
Xe[i + s] = u
}
var c = hr(e, o, a, t);
return vr(n), c
}
function Wo(e, t, r) {
Ut.length = t;
for (var n = r >> 3, o = 0; o < t; o++) Ut[o] = Xe[n + o];
return (e < 0 ? lt[-e - 1] : Xt[e]).apply(null, Ut)
}
function Yo(e) {
Yr("OOM")
}
function Ho(e, t, r, n) {
var o, a, i, s = gr(), u = Er(12), c = 0;
t && (a = Rr(o = t) + 1, i = Jt(a), Mr(o, i, a), c = i), $e[u >> 2] = c, $e[u + 4 >> 2] = r, $e[u + 8 >> 2] = n, mr(0, e, 657457152, 0, c, u), vr(s)
}
function $o(e) {
var t;
return e = (t = e) > 2 ? xr(t) : t, Gt[e] || ("undefined" != typeof document ? document.querySelector(e) : void 0)
}
function Vo(e) {
return $o(e)
}
function Qo(e, t, r) {
var n = Vo(e);
if (!n) return -4;
if (n.canvasSharedPtr && ($e[n.canvasSharedPtr >> 2] = t, $e[n.canvasSharedPtr + 4 >> 2] = r), !n.offscreenCanvas && n.controlTransferredOffscreen) return n.canvasSharedPtr ? (function (e, t, r, n) {
Ho(e, t = t ? xr(t) : "", r, n)
}($e[n.canvasSharedPtr + 8 >> 2], e, t, r), 1) : -4;
n.offscreenCanvas && (n = n.offscreenCanvas);
var o = !1;
if (n.GLctxObject && n.GLctxObject.GLctx) {
var a = n.GLctxObject.GLctx.getParameter(2978);
o = 0 === a[0] && 0 === a[1] && a[2] === n.width && a[3] === n.height
}
return n.width = t, n.height = r, o && n.GLctxObject.GLctx.viewport(0, 0, t, r), 0
}
function Xo(e, t, r) {
return Se ? zo(3, 1, e, t, r) : Qo(e, t, r)
}
function qo(e, t, r) {
return Vo(e) ? Qo(e, t, r) : Xo(e, t, r)
}
function Zo(e) {
}
function Ko(e, t) {
return r = e, o = $e[(n = t >> 2) + 6], a = {
alpha: !!$e[n + 0],
depth: !!$e[n + 1],
stencil: !!$e[n + 2],
antialias: !!$e[n + 3],
premultipliedAlpha: !!$e[n + 4],
preserveDrawingBuffer: !!$e[n + 5],
powerPreference: Wt[o],
failIfMajorPerformanceCaveat: !!$e[n + 7],
majorVersion: $e[n + 8],
minorVersion: $e[n + 9],
enableExtensionsByDefault: $e[n + 10],
explicitSwapControl: $e[n + 11],
proxyContextToMainThread: $e[n + 12],
renderViaOffscreenBackBuffer: $e[n + 13]
}, (i = Vo(r)) ? a.explicitSwapControl ? 0 : zt.createContext(i, a) : 0;
var r, n, o, a, i
}
function Jo() {
if (!Jo.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",
_: be || "./this.program"
};
for (var t in Yt) e[t] = Yt[t];
var r = [];
for (var t in e) r.push(t + "=" + e[t]);
Jo.strings = r
}
return Jo.strings
}
function ea(e, t) {
if (Se) return zo(4, 1, e, t);
try {
var r = 0;
return Jo().forEach((function (n, o) {
var a = t + r;
$e[e + 4 * o >> 2] = a, function (e, t, r) {
for (var n = 0; n < e.length; ++n) ze[t++ >> 0] = e.charCodeAt(n);
r || (ze[t >> 0] = 0)
}(n, a), r += n.length + 1
})), 0
} catch (e) {
return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno
}
}
function ta(e, t) {
if (Se) return zo(5, 1, e, t);
try {
var r = Jo();
$e[e >> 2] = r.length;
var n = 0;
return r.forEach((function (e) {
n += e.length + 1
})), $e[t >> 2] = n, 0
} catch (e) {
return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno
}
}
function ra(e) {
if (Se) return zo(6, 1, e);
try {
var t = Et.getStreamFromFD(e);
return vt.close(t), 0
} catch (e) {
return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno
}
}
function na(e, t) {
if (Se) return zo(7, 1, e, t);
try {
var r = Et.getStreamFromFD(e), n = r.tty ? 2 : vt.isDir(r.mode) ? 3 : vt.isLink(r.mode) ? 7 : 4;
return ze[t >> 0] = n, 0
} catch (e) {
return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno
}
}
function oa(e, t, r, n) {
if (Se) return zo(8, 1, e, t, r, n);
try {
var o = Et.getStreamFromFD(e), a = Et.doReadv(o, t, r);
return $e[n >> 2] = a, 0
} catch (e) {
return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno
}
}
function aa(e, t, r, n, o) {
if (Se) return zo(9, 1, e, t, r, n, o);
try {
var a = Et.getStreamFromFD(e), i = 4294967296 * r + (t >>> 0), s = 9007199254740992;
return i <= -s || i >= s ? -61 : (vt.llseek(a, i, n), ct = [a.position >>> 0, (ut = a.position, +Math.abs(ut) >= 1 ? ut > 0 ? (0 | Math.min(+Math.floor(ut / 4294967296), 4294967295)) >>> 0 : ~~+Math.ceil((ut - +(~~ut >>> 0)) / 4294967296) >>> 0 : 0)], $e[o >> 2] = ct[0], $e[o + 4 >> 2] = ct[1], a.getdents && 0 === i && 0 === n && (a.getdents = null), 0)
} catch (e) {
return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno
}
}
function ia(e, t, r, n) {
if (Se) return zo(10, 1, e, t, r, n);
try {
var o = Et.getStreamFromFD(e), a = Et.doWritev(o, t, r);
return $e[n >> 2] = a, 0
} catch (e) {
return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno
}
}
function sa(e) {
var t = Date.now();
return $e[e >> 2] = t / 1e3 | 0, $e[e + 4 >> 2] = t % 1e3 * 1e3 | 0, 0
}
function ua() {
if (Se) return zo(11, 1);
if (!ua.called) {
ua.called = !0;
var e = (new Date).getFullYear(), t = new Date(e, 0, 1), r = new Date(e, 6, 1), n = t.getTimezoneOffset(),
o = r.getTimezoneOffset(), a = Math.max(n, o);
$e[ir() >> 2] = 60 * a, $e[ar() >> 2] = Number(n != o);
var i = l(t), s = l(r), u = Gr(i), c = Gr(s);
o < n ? ($e[or() >> 2] = u, $e[or() + 4 >> 2] = c) : ($e[or() >> 2] = c, $e[or() + 4 >> 2] = u)
}
function l(e) {
var t = e.toTimeString().match(/\(([A-Za-z ]+)\)$/);
return t ? t[1] : "GMT"
}
}
function ca(e) {
var t = ft.threadExitHandlers.pop();
e && t()
}
function la(e, t) {
ft.threadExitHandlers.push((function () {
Ze.get(e)(t)
}))
}
function da(e) {
if (Se) throw"Internal Error! spawnThread() can only ever be called from main application thread!";
var t = ft.getNewWorker();
if (void 0 !== t.pthread) throw"Internal error!";
if (!e.pthread_ptr) throw"Internal error, no pthread ptr!";
ft.runningWorkers.push(t);
for (var r = Jt(512), n = 0; n < 128; ++n) $e[r + 4 * n >> 2] = 0;
var o = e.stackBase + e.stackSize, a = ft.pthreads[e.pthread_ptr] = {
worker: t,
stackBase: e.stackBase,
stackSize: e.stackSize,
allocatedOwnStack: e.allocatedOwnStack,
threadInfoStruct: e.pthread_ptr
}, i = a.threadInfoStruct >> 2;
Atomics.store(Ve, i + 16, e.detached), Atomics.store(Ve, i + 25, r), Atomics.store(Ve, i + 10, a.threadInfoStruct), Atomics.store(Ve, i + 20, e.stackSize), Atomics.store(Ve, i + 19, o), Atomics.store(Ve, i + 26, e.stackSize), Atomics.store(Ve, i + 28, o), Atomics.store(Ve, i + 29, e.detached);
var s = nr() + 40;
Atomics.store(Ve, i + 43, s), t.pthread = a;
var u = {
cmd: "run",
start_routine: e.startRoutine,
arg: e.arg,
threadInfoStruct: e.pthread_ptr,
stackBase: e.stackBase,
stackSize: e.stackSize
};
t.runPthread = function () {
u.time = performance.now(), t.postMessage(u, e.transferList)
}, t.loaded && (t.runPthread(), delete t.runPthread)
}
function fa(e, t, r, n) {
if ("undefined" == typeof SharedArrayBuffer) return Me("Current environment does not support SharedArrayBuffer, pthreads are not available!"), 6;
if (!e) return Me("pthread_create called with a null thread pointer!"), 28;
var o = [];
if (Se && 0 === o.length) return pr(687865856, e, t, r, n);
var a = 0, i = 0, s = 0;
t && -1 != t ? (a = $e[t >> 2], a += 81920, i = $e[t + 8 >> 2], s = 0 !== $e[t + 12 >> 2]) : a = 2097152;
var u = 0 == i;
u ? i = wr(16, a) : Or((i -= a) > 0);
for (var c = Jt(228), l = 0; l < 57; ++l) Ve[(c >> 2) + l] = 0;
$e[e >> 2] = c, $e[c + 12 >> 2] = c;
var d = c + 152;
$e[d >> 2] = d;
var f = {
stackBase: i,
stackSize: a,
allocatedOwnStack: u,
detached: s,
startRoutine: r,
pthread_ptr: c,
arg: n,
transferList: o
};
return Se ? (f.cmd = "spawnThread", postMessage(f, o)) : da(f), 0
}
function pa() {
if (Se) {
var e = sr();
if (e) if (!Atomics.load(Ve, e + 56 >> 2)) if (2 == Atomics.load(Ve, e + 0 >> 2)) throw"Canceled!"
}
}
function ha(e, t) {
return function (e, t, r) {
if (!e) return Me("pthread_join attempted on a null thread pointer!"), dt.ESRCH;
if (Se && sr() == e) return Me("PThread " + e + " is attempting to join to itself!"), dt.EDEADLK;
if (!Se && ur() == e) return Me("Main thread " + e + " is attempting to join to itself!"), dt.EDEADLK;
if ($e[e + 12 >> 2] !== e) return Me("pthread_join attempted on thread " + e + ", which does not point to a valid thread, or does not exist anymore!"), dt.ESRCH;
if (Atomics.load(Ve, e + 64 >> 2)) return Me("Attempted to join thread " + e + ", which was already detached!"), dt.EINVAL;
for (r && Bo(); ;) {
var n = Atomics.load(Ve, e + 0 >> 2);
if (1 == n) {
var o = Atomics.load(Ve, e + 4 >> 2);
return t && ($e[t >> 2] = o), Atomics.store(Ve, e + 64 >> 2, 1), Se ? postMessage({
cmd: "cleanupThread",
thread: e
}) : Zr(e), 0
}
if (!r) return dt.EBUSY;
pa(), Se || lr(), Ro(e + 0, n, Se ? 100 : 1)
}
}(e, t, !0)
}
function ma(e) {
Le(0 | e)
}
function Aa(e) {
if (Se) return zo(12, 1, e);
switch (e) {
case 30:
return 16384;
case 85:
return We.length / 16384;
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 82:
case 68:
case 67:
case 164:
case 11:
case 29:
case 47:
case 48:
case 95:
case 52:
case 51:
case 46:
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:
case 80:
case 81:
case 79:
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 nn(28), -1
}
function ga(e, t, r) {
var n = r > 0 ? r : Rr(e) + 1, o = new Array(n), a = Br(e, o, 0, o.length);
return t && (o.length = a), o
}
function va(e) {
this.name = "ExitStatus", this.message = "Program terminated with exit(" + e + ")", this.status = e
}
function Ea(e) {
function t() {
kr || (kr = !0, Ee.calledRun = !0, je || (!0, Ee.noFSInit || vt.init.initialized || vt.init(), At.init(), Xr(Je), Se || (vt.ignorePermissions = !1, Xr(et)), Ee.onRuntimeInitialized && Ee.onRuntimeInitialized(), function () {
if (!Se) {
if (Ee.postRun) for ("function" == typeof Ee.postRun && (Ee.postRun = [Ee.postRun]); Ee.postRun.length;) e = Ee.postRun.shift(), rt.unshift(e);
var e;
Xr(rt)
}
}()))
}
e = e || _e, nt > 0 || (Se ? postMessage({cmd: "loaded"}) : (!function () {
if (!Se) {
if (Ee.preRun) for ("function" == typeof Ee.preRun && (Ee.preRun = [Ee.preRun]); Ee.preRun.length;) e = Ee.preRun.shift(), Ke.unshift(e);
var e;
Xr(Ke)
}
}(), nt > 0 || (Ee.setStatus ? (Ee.setStatus("Running..."), setTimeout((function () {
setTimeout((function () {
Ee.setStatus("")
}), 1), t()
}), 1)) : t())))
}
function ya(e, t) {
if (!t || !Fe || 0 !== e) {
if (!t && Se) throw postMessage({cmd: "exitProcess", returnCode: e}), new va(e);
Fe || (ft.terminateAllThreads(), e, Se || !0, Ee.onExit && Ee.onExit(e), je = !0), ke(e, new va(e))
}
}
function wa() {
for (we in {}, ye = {}, Ee = void 0 !== Ee ? Ee : {}) Ee.hasOwnProperty(we) && (ye[we] = Ee[we]);
for (we in _e = [], be = "./this.program", ke = function (e, t) {
throw t
}, Te = !1, De = !0, !1, (Se = Ee.ENVIRONMENT_IS_PTHREAD || !1) && (Ge = Ee.buffer), Ce = "undefined" != typeof document && document.currentScript ? document.currentScript.src : void 0, De && (Ce = self.location.href), Oe = "", (Te || De) && (De ? Oe = self.location.href : "undefined" != typeof document && document.currentScript && (Oe = document.currentScript.src), Oe = 0 !== Oe.indexOf("blob:") ? Oe.substr(0, Oe.lastIndexOf("/") + 1) : "", Pe = function (e) {
var t = new XMLHttpRequest;
return t.open("GET", e, !1), t.send(null), t.responseText
}, De && (xe = function (e) {
var t = new XMLHttpRequest;
return t.open("GET", e, !1), t.responseType = "arraybuffer", t.send(null), new Uint8Array(t.response)
}), function (e, t, r) {
var n = new XMLHttpRequest;
n.open("GET", e, !0), n.responseType = "arraybuffer", n.onload = function () {
200 == n.status || 0 == n.status && n.response ? t(n.response) : r()
}, n.onerror = r, n.send(null)
}, function (e) {
document.title = e
}), Be = Ee.print || console.log.bind(console), Me = Ee.printErr || console.warn.bind(console), ye) ye.hasOwnProperty(we) && (Ee[we] = ye[we]);
if (ye = null, Ee.arguments && (_e = Ee.arguments), Ee.thisProgram && (be = Ee.thisProgram), Ee.quit && (ke = Ee.quit), Re = 16, 0, Le = function (e) {
e
}, Atomics.load, Atomics.store, Atomics.compareExchange, Ee.wasmBinary && (Ie = Ee.wasmBinary), Fe = Ee.noExitRuntime || !0, "object" != typeof WebAssembly && Yr("no native wasm support detected"), je = !1, qe = Ee.INITIAL_MEMORY || 67108864, Se) Ue = Ee.wasmMemory, Ge = Ee.buffer; else if (Ee.wasmMemory) Ue = Ee.wasmMemory; else if (!((Ue = new WebAssembly.Memory({
initial: qe / 65536,
maximum: qe / 65536,
shared: !0
})).buffer instanceof SharedArrayBuffer)) throw Me("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"), Error("bad memory");
var t;
if (Ue && (Ge = Ue.buffer), qe = Ge.byteLength, Ge = t = Ge, Ee.HEAP8 = ze = new Int8Array(t), Ee.HEAP16 = Ye = new Int16Array(t), Ee.HEAP32 = $e = new Int32Array(t), Ee.HEAPU8 = We = new Uint8Array(t), Ee.HEAPU16 = He = new Uint16Array(t), Ee.HEAPU32 = Ve = new Uint32Array(t), Ee.HEAPF32 = Qe = new Float32Array(t), Ee.HEAPF64 = Xe = new Float64Array(t), Ke = [], Je = [], et = [], tt = [], rt = [], !1, !1, Se || Je.push({
func: function () {
Zt()
}
}), Se && !0, nt = 0, ot = null, at = null, Ee.preloadedImages = {}, Ee.preloadedAudios = {}, it = "data:application/octet-stream;base64,", Hr(st = "ff.wasm") || (st = Sr(st)), lt = {
155132: function () {
throw"Canceled!"
}, 155395: function (e, t) {
setTimeout((function () {
fr(e, t)
}), 0)
}
}, dt = {
EPERM: 63,
ENOENT: 44,
ESRCH: 71,
EINTR: 27,
EIO: 29,
ENXIO: 60,
E2BIG: 1,
ENOEXEC: 45,
EBADF: 8,
ECHILD: 12,
EAGAIN: 6,
EWOULDBLOCK: 6,
ENOMEM: 48,
EACCES: 2,
EFAULT: 21,
ENOTBLK: 105,
EBUSY: 10,
EEXIST: 20,
EXDEV: 75,
ENODEV: 43,
ENOTDIR: 54,
EISDIR: 31,
EINVAL: 28,
ENFILE: 41,
EMFILE: 33,
ENOTTY: 59,
ETXTBSY: 74,
EFBIG: 22,
ENOSPC: 51,
ESPIPE: 70,
EROFS: 69,
EMLINK: 34,
EPIPE: 64,
EDOM: 18,
ERANGE: 68,
ENOMSG: 49,
EIDRM: 24,
ECHRNG: 106,
EL2NSYNC: 156,
EL3HLT: 107,
EL3RST: 108,
ELNRNG: 109,
EUNATCH: 110,
ENOCSI: 111,
EL2HLT: 112,
EDEADLK: 16,
ENOLCK: 46,
EBADE: 113,
EBADR: 114,
EXFULL: 115,
ENOANO: 104,
EBADRQC: 103,
EBADSLT: 102,
EDEADLOCK: 16,
EBFONT: 101,
ENOSTR: 100,
ENODATA: 116,
ETIME: 117,
ENOSR: 118,
ENONET: 119,
ENOPKG: 120,
EREMOTE: 121,
ENOLINK: 47,
EADV: 122,
ESRMNT: 123,
ECOMM: 124,
EPROTO: 65,
EMULTIHOP: 36,
EDOTDOT: 125,
EBADMSG: 9,
ENOTUNIQ: 126,
EBADFD: 127,
EREMCHG: 128,
ELIBACC: 129,
ELIBBAD: 130,
ELIBSCN: 131,
ELIBMAX: 132,
ELIBEXEC: 133,
ENOSYS: 52,
ENOTEMPTY: 55,
ENAMETOOLONG: 37,
ELOOP: 32,
EOPNOTSUPP: 138,
EPFNOSUPPORT: 139,
ECONNRESET: 15,
ENOBUFS: 42,
EAFNOSUPPORT: 5,
EPROTOTYPE: 67,
ENOTSOCK: 57,
ENOPROTOOPT: 50,
ESHUTDOWN: 140,
ECONNREFUSED: 14,
EADDRINUSE: 3,
ECONNABORTED: 13,
ENETUNREACH: 40,
ENETDOWN: 38,
ETIMEDOUT: 73,
EHOSTDOWN: 142,
EHOSTUNREACH: 23,
EINPROGRESS: 26,
EALREADY: 7,
EDESTADDRREQ: 17,
EMSGSIZE: 35,
EPROTONOSUPPORT: 66,
ESOCKTNOSUPPORT: 137,
EADDRNOTAVAIL: 4,
ENETRESET: 39,
EISCONN: 30,
ENOTCONN: 53,
ETOOMANYREFS: 141,
EUSERS: 136,
EDQUOT: 19,
ESTALE: 72,
ENOTSUP: 138,
ENOMEDIUM: 148,
EILSEQ: 25,
EOVERFLOW: 61,
ECANCELED: 11,
ENOTRECOVERABLE: 56,
EOWNERDEAD: 62,
ESTRPIPE: 135
}, Ee._emscripten_futex_wake = qr, ft = {
unusedWorkers: [], runningWorkers: [], initMainThreadBlock: function () {
}, initRuntime: function () {
for (var e = Jt(228), t = 0; t < 57; ++t) Ve[e / 4 + t] = 0;
$e[e + 12 >> 2] = e;
var r = e + 152;
$e[r >> 2] = r;
var n = Jt(512);
for (t = 0; t < 128; ++t) Ve[n / 4 + t] = 0;
Atomics.store(Ve, e + 100 >> 2, n), Atomics.store(Ve, e + 40 >> 2, e), Ar(e, !De, 1), dr(e)
}, initWorker: function () {
}, pthreads: {}, threadExitHandlers: [], setThreadStatus: function () {
}, runExitHandlers: function () {
for (; ft.threadExitHandlers.length > 0;) ft.threadExitHandlers.pop()();
Se && sr() && cr()
}, threadExit: function (e) {
var t = sr();
t && (Atomics.store(Ve, t + 4 >> 2, e), Atomics.store(Ve, t + 0 >> 2, 1), Atomics.store(Ve, t + 56 >> 2, 1), Atomics.store(Ve, t + 60 >> 2, 0), ft.runExitHandlers(), qr(t + 0, 2147483647), Ar(0, 0, 0), Se && postMessage({cmd: "exit"}))
}, threadCancel: function () {
ft.runExitHandlers();
var e = sr();
Atomics.store(Ve, e + 4 >> 2, -1), Atomics.store(Ve, e + 0 >> 2, 1), qr(e + 0, 2147483647), Ar(0, 0, 0), postMessage({cmd: "cancelDone"})
}, terminateAllThreads: function () {
for (var e in ft.pthreads) {
(n = ft.pthreads[e]) && n.worker && ft.returnWorkerToPool(n.worker)
}
ft.pthreads = {};
for (var t = 0; t < ft.unusedWorkers.length; ++t) {
(r = ft.unusedWorkers[t]).terminate()
}
ft.unusedWorkers = [];
for (t = 0; t < ft.runningWorkers.length; ++t) {
var r, n = (r = ft.runningWorkers[t]).pthread;
ft.freeThreadData(n), r.terminate()
}
ft.runningWorkers = []
}, freeThreadData: function (e) {
if (e) {
if (e.threadInfoStruct) {
var t = $e[e.threadInfoStruct + 100 >> 2];
$e[e.threadInfoStruct + 100 >> 2] = 0, Kt(t), Kt(e.threadInfoStruct)
}
e.threadInfoStruct = 0, e.allocatedOwnStack && e.stackBase && Kt(e.stackBase), e.stackBase = 0, e.worker && (e.worker.pthread = null)
}
}, returnWorkerToPool: function (e) {
ft.runWithoutMainThreadQueuedCalls((function () {
delete ft.pthreads[e.pthread.threadInfoStruct], ft.unusedWorkers.push(e), ft.runningWorkers.splice(ft.runningWorkers.indexOf(e), 1), ft.freeThreadData(e.pthread), e.pthread = void 0
}))
}, runWithoutMainThreadQueuedCalls: function (e) {
$e[_r >> 2] = 0;
try {
e()
} finally {
$e[_r >> 2] = 1
}
}, receiveObjectTransfer: function (e) {
}, loadWasmModuleToWorker: function (e, t) {
e.onmessage = function (r) {
var n = r.data, o = n.cmd;
if (e.pthread && (ft.currentProxiedOperationCallerThread = e.pthread.threadInfoStruct), n.targetThread && n.targetThread != sr()) {
var a = ft.pthreads[n.targetThread];
return a ? a.worker.postMessage(r.data, n.transferList) : console.error('Internal error! Worker sent a message "' + o + '" to target pthread ' + n.targetThread + ", but that thread no longer exists!"), void (ft.currentProxiedOperationCallerThread = void 0)
}
if ("processQueuedMainThreadWork" === o) lr(); else if ("spawnThread" === o) da(r.data); else if ("cleanupThread" === o) Zr(n.thread); else if ("killThread" === o) !function (e) {
if (Se) throw"Internal Error! killThread() can only ever be called from main application thread!";
if (!e) throw"Internal Error! Null pthread_ptr in killThread!";
$e[e + 12 >> 2] = 0;
var t = ft.pthreads[e];
t.worker.terminate(), ft.freeThreadData(t), ft.runningWorkers.splice(ft.runningWorkers.indexOf(t.worker), 1), t.worker.pthread = void 0
}(n.thread); else if ("cancelThread" === o) !function (e) {
if (Se) throw"Internal Error! cancelThread() can only ever be called from main application thread!";
if (!e) throw"Internal Error! Null pthread_ptr in cancelThread!";
ft.pthreads[e].worker.postMessage({cmd: "cancel"})
}(n.thread); else if ("loaded" === o) e.loaded = !0, t && t(e), e.runPthread && (e.runPthread(), delete e.runPthread); else if ("print" === o) Be("Thread " + n.threadId + ": " + n.text); else if ("printErr" === o) Me("Thread " + n.threadId + ": " + n.text); else if ("alert" === o) alert("Thread " + n.threadId + ": " + n.text); else if ("exit" === o) {
e.pthread && Atomics.load(Ve, e.pthread.threadInfoStruct + 64 >> 2) && ft.returnWorkerToPool(e)
} else if ("exitProcess" === o) try {
ya(n.returnCode)
} catch (r) {
if (r instanceof va) return;
throw r
} else "cancelDone" === o ? ft.returnWorkerToPool(e) : "objectTransfer" === o ? ft.receiveObjectTransfer(r.data) : "setimmediate" === r.data.target ? e.postMessage(r.data) : Me("worker sent an unknown command " + o);
ft.currentProxiedOperationCallerThread = void 0
}, e.onerror = function (e) {
Me("pthread sent an error! " + e.filename + ":" + e.lineno + ": " + e.message)
}, e.postMessage({cmd: "load", urlOrBlob: Ee.mainScriptUrlOrBlob || Ce, wasmMemory: Ue, wasmModule: Ne})
}, allocateUnusedWorker: function () {
var e = Sr("ff.worker.js");
ft.unusedWorkers.push(new Worker(e))
}, getNewWorker: function () {
return 0 == ft.unusedWorkers.length && (ft.allocateUnusedWorker(), ft.loadWasmModuleToWorker(ft.unusedWorkers[0])), ft.unusedWorkers.length > 0 ? ft.unusedWorkers.pop() : null
}, busySpinWait: function (e) {
for (var t = performance.now() + e; performance.now() < t;) ;
}
}, Ee.establishStackSpace = Kr, Ee.getNoExitRuntime = Jr, Ee.invokeEntryPoint = en, pt = Se ? function () {
return performance.now() - Ee.__performance_now_clock_drift
} : function () {
return performance.now()
}, ht = {
splitPath: function (e) {
return /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)
}, normalizeArray: function (e, t) {
for (var r = 0, n = e.length - 1; n >= 0; n--) {
var o = e[n];
"." === o ? e.splice(n, 1) : ".." === o ? (e.splice(n, 1), r++) : r && (e.splice(n, 1), r--)
}
if (t) for (; r; r--) e.unshift("..");
return e
}, normalize: function (e) {
var t = "/" === e.charAt(0), r = "/" === e.substr(-1);
return (e = ht.normalizeArray(e.split("/").filter((function (e) {
return !!e
})), !t).join("/")) || t || (e = "."), e && r && (e += "/"), (t ? "/" : "") + e
}, dirname: function (e) {
var t = ht.splitPath(e), r = t[0], n = t[1];
return r || n ? (n && (n = n.substr(0, n.length - 1)), r + n) : "."
}, basename: function (e) {
if ("/" === e) return "/";
var t = (e = (e = ht.normalize(e)).replace(/\/$/, "")).lastIndexOf("/");
return -1 === t ? e : e.substr(t + 1)
}, extname: function (e) {
return ht.splitPath(e)[3]
}, join: function () {
var e = Array.prototype.slice.call(arguments, 0);
return ht.normalize(e.join("/"))
}, join2: function (e, t) {
return ht.normalize(e + "/" + t)
}
}, mt = {
resolve: function () {
for (var e = "", t = !1, r = arguments.length - 1; r >= -1 && !t; r--) {
var n = r >= 0 ? arguments[r] : vt.cwd();
if ("string" != typeof n) throw new TypeError("Arguments to path.resolve must be strings");
if (!n) return "";
e = n + "/" + e, t = "/" === n.charAt(0)
}
return (t ? "/" : "") + (e = ht.normalizeArray(e.split("/").filter((function (e) {
return !!e
})), !t).join("/")) || "."
}, relative: function (e, t) {
function r(e) {
for (var t = 0; t < e.length && "" === e[t]; t++) ;
for (var r = e.length - 1; r >= 0 && "" === e[r]; r--) ;
return t > r ? [] : e.slice(t, r - t + 1)
}
e = mt.resolve(e).substr(1), t = mt.resolve(t).substr(1);
for (var n = r(e.split("/")), o = r(t.split("/")), a = Math.min(n.length, o.length), i = a, s = 0; s < a; s++) if (n[s] !== o[s]) {
i = s;
break
}
var u = [];
for (s = i; s < n.length; s++) u.push("..");
return (u = u.concat(o.slice(i))).join("/")
}
}, At = {
ttys: [], init: function () {
}, shutdown: function () {
}, register: function (e, t) {
At.ttys[e] = {input: [], output: [], ops: t}, vt.registerDevice(e, At.stream_ops)
}, stream_ops: {
open: function (e) {
var t = At.ttys[e.node.rdev];
if (!t) throw new vt.ErrnoError(43);
e.tty = t, e.seekable = !1
}, close: function (e) {
e.tty.ops.flush(e.tty)
}, flush: function (e) {
e.tty.ops.flush(e.tty)
}, read: function (e, t, r, n, o) {
if (!e.tty || !e.tty.ops.get_char) throw new vt.ErrnoError(60);
for (var a = 0, i = 0; i < n; i++) {
var s;
try {
s = e.tty.ops.get_char(e.tty)
} catch (e) {
throw new vt.ErrnoError(29)
}
if (void 0 === s && 0 === a) throw new vt.ErrnoError(6);
if (null == s) break;
a++, t[r + i] = s
}
return a && (e.node.timestamp = Date.now()), a
}, write: function (e, t, r, n, o) {
if (!e.tty || !e.tty.ops.put_char) throw new vt.ErrnoError(60);
try {
for (var a = 0; a < n; a++) e.tty.ops.put_char(e.tty, t[r + a])
} catch (e) {
throw new vt.ErrnoError(29)
}
return n && (e.node.timestamp = Date.now()), a
}
}, default_tty_ops: {
get_char: function (e) {
if (!e.input.length) {
var t = null;
if ("undefined" != typeof window && "function" == typeof window.prompt ? null !== (t = window.prompt("Input: ")) && (t += "\n") : "function" == typeof readline && null !== (t = readline()) && (t += "\n"), !t) return null;
e.input = ga(t, !0)
}
return e.input.shift()
}, put_char: function (e, t) {
null === t || 10 === t ? (Be(Pr(e.output, 0)), e.output = []) : 0 != t && e.output.push(t)
}, flush: function (e) {
e.output && e.output.length > 0 && (Be(Pr(e.output, 0)), e.output = [])
}
}, default_tty1_ops: {
put_char: function (e, t) {
null === t || 10 === t ? (Me(Pr(e.output, 0)), e.output = []) : 0 != t && e.output.push(t)
}, flush: function (e) {
e.output && e.output.length > 0 && (Me(Pr(e.output, 0)), e.output = [])
}
}
}, gt = {
ops_table: null, mount: function (e) {
return gt.createNode(null, "/", 16895, 0)
}, createNode: function (e, t, r, n) {
if (vt.isBlkdev(r) || vt.isFIFO(r)) throw new vt.ErrnoError(63);
gt.ops_table || (gt.ops_table = {
dir: {
node: {
getattr: gt.node_ops.getattr,
setattr: gt.node_ops.setattr,
lookup: gt.node_ops.lookup,
mknod: gt.node_ops.mknod,
rename: gt.node_ops.rename,
unlink: gt.node_ops.unlink,
rmdir: gt.node_ops.rmdir,
readdir: gt.node_ops.readdir,
symlink: gt.node_ops.symlink
}, stream: {llseek: gt.stream_ops.llseek}
},
file: {
node: {getattr: gt.node_ops.getattr, setattr: gt.node_ops.setattr},
stream: {
llseek: gt.stream_ops.llseek,
read: gt.stream_ops.read,
write: gt.stream_ops.write,
allocate: gt.stream_ops.allocate,
mmap: gt.stream_ops.mmap,
msync: gt.stream_ops.msync
}
},
link: {
node: {getattr: gt.node_ops.getattr, setattr: gt.node_ops.setattr, readlink: gt.node_ops.readlink},
stream: {}
},
chrdev: {node: {getattr: gt.node_ops.getattr, setattr: gt.node_ops.setattr}, stream: vt.chrdev_stream_ops}
});
var o = vt.createNode(e, t, r, n);
return vt.isDir(o.mode) ? (o.node_ops = gt.ops_table.dir.node, o.stream_ops = gt.ops_table.dir.stream, o.contents = {}) : vt.isFile(o.mode) ? (o.node_ops = gt.ops_table.file.node, o.stream_ops = gt.ops_table.file.stream, o.usedBytes = 0, o.contents = null) : vt.isLink(o.mode) ? (o.node_ops = gt.ops_table.link.node, o.stream_ops = gt.ops_table.link.stream) : vt.isChrdev(o.mode) && (o.node_ops = gt.ops_table.chrdev.node, o.stream_ops = gt.ops_table.chrdev.stream), o.timestamp = Date.now(), e && (e.contents[t] = o, e.timestamp = o.timestamp), o
}, getFileDataAsTypedArray: function (e) {
return e.contents ? e.contents.subarray ? e.contents.subarray(0, e.usedBytes) : new Uint8Array(e.contents) : new Uint8Array(0)
}, expandFileStorage: function (e, t) {
var r = e.contents ? e.contents.length : 0;
if (!(r >= t)) {
t = Math.max(t, r * (r < 1048576 ? 2 : 1.125) >>> 0), 0 != r && (t = Math.max(t, 256));
var n = e.contents;
e.contents = new Uint8Array(t), e.usedBytes > 0 && e.contents.set(n.subarray(0, e.usedBytes), 0)
}
}, resizeFileStorage: function (e, t) {
if (e.usedBytes != t) if (0 == t) e.contents = null, e.usedBytes = 0; else {
var r = e.contents;
e.contents = new Uint8Array(t), r && e.contents.set(r.subarray(0, Math.min(t, e.usedBytes))), e.usedBytes = t
}
}, node_ops: {
getattr: function (e) {
var t = {};
return t.dev = vt.isChrdev(e.mode) ? e.id : 1, t.ino = e.id, t.mode = e.mode, t.nlink = 1, t.uid = 0, t.gid = 0, t.rdev = e.rdev, vt.isDir(e.mode) ? t.size = 4096 : vt.isFile(e.mode) ? t.size = e.usedBytes : vt.isLink(e.mode) ? t.size = e.link.length : t.size = 0, t.atime = new Date(e.timestamp), t.mtime = new Date(e.timestamp), t.ctime = new Date(e.timestamp), t.blksize = 4096, t.blocks = Math.ceil(t.size / t.blksize), t
}, setattr: function (e, t) {
void 0 !== t.mode && (e.mode = t.mode), void 0 !== t.timestamp && (e.timestamp = t.timestamp), void 0 !== t.size && gt.resizeFileStorage(e, t.size)
}, lookup: function (e, t) {
throw vt.genericErrors[44]
}, mknod: function (e, t, r, n) {
return gt.createNode(e, t, r, n)
}, rename: function (e, t, r) {
if (vt.isDir(e.mode)) {
var n;
try {
n = vt.lookupNode(t, r)
} catch (e) {
}
if (n) for (var o in n.contents) throw new vt.ErrnoError(55)
}
delete e.parent.contents[e.name], e.parent.timestamp = Date.now(), e.name = r, t.contents[r] = e, t.timestamp = e.parent.timestamp, e.parent = t
}, unlink: function (e, t) {
delete e.contents[t], e.timestamp = Date.now()
}, rmdir: function (e, t) {
var r = vt.lookupNode(e, t);
for (var n in r.contents) throw new vt.ErrnoError(55);
delete e.contents[t], e.timestamp = Date.now()
}, readdir: function (e) {
var t = [".", ".."];
for (var r in e.contents) e.contents.hasOwnProperty(r) && t.push(r);
return t
}, symlink: function (e, t, r) {
var n = gt.createNode(e, t, 41471, 0);
return n.link = r, n
}, readlink: function (e) {
if (!vt.isLink(e.mode)) throw new vt.ErrnoError(28);
return e.link
}
}, stream_ops: {
read: function (e, t, r, n, o) {
var a = e.node.contents;
if (o >= e.node.usedBytes) return 0;
var i = Math.min(e.node.usedBytes - o, n);
if (i > 8 && a.subarray) t.set(a.subarray(o, o + i), r); else for (var s = 0; s < i; s++) t[r + s] = a[o + s];
return i
}, write: function (e, t, r, n, o, a) {
if (!n) return 0;
var i = e.node;
if (i.timestamp = Date.now(), t.subarray && (!i.contents || i.contents.subarray)) {
if (a) return i.contents = t.subarray(r, r + n), i.usedBytes = n, n;
if (0 === i.usedBytes && 0 === o) return i.contents = t.slice(r, r + n), i.usedBytes = n, n;
if (o + n <= i.usedBytes) return i.contents.set(t.subarray(r, r + n), o), n
}
if (gt.expandFileStorage(i, o + n), i.contents.subarray && t.subarray) i.contents.set(t.subarray(r, r + n), o); else for (var s = 0; s < n; s++) i.contents[o + s] = t[r + s];
return i.usedBytes = Math.max(i.usedBytes, o + n), n
}, llseek: function (e, t, r) {
var n = t;
if (1 === r ? n += e.position : 2 === r && vt.isFile(e.node.mode) && (n += e.node.usedBytes), n < 0) throw new vt.ErrnoError(28);
return n
}, allocate: function (e, t, r) {
gt.expandFileStorage(e.node, t + r), e.node.usedBytes = Math.max(e.node.usedBytes, t + r)
}, mmap: function (e, t, r, n, o, a) {
if (0 !== t) throw new vt.ErrnoError(28);
if (!vt.isFile(e.node.mode)) throw new vt.ErrnoError(43);
var i, s, u = e.node.contents;
if (2 & a || u.buffer !== Ge) {
if ((n > 0 || n + r < u.length) && (u = u.subarray ? u.subarray(n, n + r) : Array.prototype.slice.call(u, n, n + r)), s = !0, !(i = on(r))) throw new vt.ErrnoError(48);
ze.set(u, i)
} else s = !1, i = u.byteOffset;
return {ptr: i, allocated: s}
}, msync: function (e, t, r, n, o) {
if (!vt.isFile(e.node.mode)) throw new vt.ErrnoError(43);
if (2 & o) return 0;
gt.stream_ops.write(e, t, 0, n, r, !1);
return 0
}
}
}, vt = {
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,
lookupPath: function (e, t) {
if (t = t || {}, !(e = mt.resolve(vt.cwd(), e))) return {path: "", node: null};
var r = {follow_mount: !0, recurse_count: 0};
for (var n in r) void 0 === t[n] && (t[n] = r[n]);
if (t.recurse_count > 8) throw new vt.ErrnoError(32);
for (var o = ht.normalizeArray(e.split("/").filter((function (e) {
return !!e
})), !1), a = vt.root, i = "/", s = 0; s < o.length; s++) {
var u = s === o.length - 1;
if (u && t.parent) break;
if (a = vt.lookupNode(a, o[s]), i = ht.join2(i, o[s]), vt.isMountpoint(a) && (!u || u && t.follow_mount) && (a = a.mounted.root), !u || t.follow) for (var c = 0; vt.isLink(a.mode);) {
var l = vt.readlink(i);
if (i = mt.resolve(ht.dirname(i), l), a = vt.lookupPath(i, {recurse_count: t.recurse_count}).node, c++ > 40) throw new vt.ErrnoError(32)
}
}
return {path: i, node: a}
},
getPath: function (e) {
for (var t; ;) {
if (vt.isRoot(e)) {
var r = e.mount.mountpoint;
return t ? "/" !== r[r.length - 1] ? r + "/" + t : r + t : r
}
t = t ? e.name + "/" + t : e.name, e = e.parent
}
},
hashName: function (e, t) {
for (var r = 0, n = 0; n < t.length; n++) r = (r << 5) - r + t.charCodeAt(n) | 0;
return (e + r >>> 0) % vt.nameTable.length
},
hashAddNode: function (e) {
var t = vt.hashName(e.parent.id, e.name);
e.name_next = vt.nameTable[t], vt.nameTable[t] = e
},
hashRemoveNode: function (e) {
var t = vt.hashName(e.parent.id, e.name);
if (vt.nameTable[t] === e) vt.nameTable[t] = e.name_next; else for (var r = vt.nameTable[t]; r;) {
if (r.name_next === e) {
r.name_next = e.name_next;
break
}
r = r.name_next
}
},
lookupNode: function (e, t) {
var r = vt.mayLookup(e);
if (r) throw new vt.ErrnoError(r, e);
for (var n = vt.hashName(e.id, t), o = vt.nameTable[n]; o; o = o.name_next) {
var a = o.name;
if (o.parent.id === e.id && a === t) return o
}
return vt.lookup(e, t)
},
createNode: function (e, t, r, n) {
var o = new vt.FSNode(e, t, r, n);
return vt.hashAddNode(o), o
},
destroyNode: function (e) {
vt.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, "r+": 2, w: 577, "w+": 578, a: 1089, "a+": 1090},
modeStringToFlags: function (e) {
var t = vt.flagModes[e];
if (void 0 === t) throw new Error("Unknown file open mode: " + e);
return t
},
flagsToPermissionString: function (e) {
var t = ["r", "w", "rw"][3 & e];
return 512 & e && (t += "w"), t
},
nodePermissions: function (e, t) {
return vt.ignorePermissions || (-1 === t.indexOf("r") || 292 & e.mode) && (-1 === t.indexOf("w") || 146 & e.mode) && (-1 === t.indexOf("x") || 73 & e.mode) ? 0 : 2
},
mayLookup: function (e) {
var t = vt.nodePermissions(e, "x");
return t || (e.node_ops.lookup ? 0 : 2)
},
mayCreate: function (e, t) {
try {
vt.lookupNode(e, t);
return 20
} catch (e) {
}
return vt.nodePermissions(e, "wx")
},
mayDelete: function (e, t, r) {
var n;
try {
n = vt.lookupNode(e, t)
} catch (e) {
return e.errno
}
var o = vt.nodePermissions(e, "wx");
if (o) return o;
if (r) {
if (!vt.isDir(n.mode)) return 54;
if (vt.isRoot(n) || vt.getPath(n) === vt.cwd()) return 10
} else if (vt.isDir(n.mode)) return 31;
return 0
},
mayOpen: function (e, t) {
return e ? vt.isLink(e.mode) ? 32 : vt.isDir(e.mode) && ("r" !== vt.flagsToPermissionString(t) || 512 & t) ? 31 : vt.nodePermissions(e, vt.flagsToPermissionString(t)) : 44
},
MAX_OPEN_FDS: 4096,
nextfd: function (e, t) {
e = e || 0, t = t || vt.MAX_OPEN_FDS;
for (var r = e; r <= t; r++) if (!vt.streams[r]) return r;
throw new vt.ErrnoError(33)
},
getStream: function (e) {
return vt.streams[e]
},
createStream: function (e, t, r) {
vt.FSStream || (vt.FSStream = function () {
}, vt.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 vt.FSStream;
for (var o in e) n[o] = e[o];
e = n;
var a = vt.nextfd(t, r);
return e.fd = a, vt.streams[a] = e, e
},
closeStream: function (e) {
vt.streams[e] = null
},
chrdev_stream_ops: {
open: function (e) {
var t = vt.getDevice(e.node.rdev);
e.stream_ops = t.stream_ops, e.stream_ops.open && e.stream_ops.open(e)
}, llseek: function () {
throw new vt.ErrnoError(70)
}
},
major: function (e) {
return e >> 8
},
minor: function (e) {
return 255 & e
},
makedev: function (e, t) {
return e << 8 | t
},
registerDevice: function (e, t) {
vt.devices[e] = {stream_ops: t}
},
getDevice: function (e) {
return vt.devices[e]
},
getMounts: function (e) {
for (var t = [], r = [e]; r.length;) {
var n = r.pop();
t.push(n), r.push.apply(r, n.mounts)
}
return t
},
syncfs: function (e, t) {
"function" == typeof e && (t = e, e = !1), vt.syncFSRequests++, vt.syncFSRequests > 1 && Me("warning: " + vt.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work");
var r = vt.getMounts(vt.root.mount), n = 0;
function o(e) {
return vt.syncFSRequests--, t(e)
}
function a(e) {
if (e) return a.errored ? void 0 : (a.errored = !0, o(e));
++n >= r.length && o(null)
}
r.forEach((function (t) {
if (!t.type.syncfs) return a(null);
t.type.syncfs(t, e, a)
}))
},
mount: function (e, t, r) {
var n, o = "/" === r, a = !r;
if (o && vt.root) throw new vt.ErrnoError(10);
if (!o && !a) {
var i = vt.lookupPath(r, {follow_mount: !1});
if (r = i.path, n = i.node, vt.isMountpoint(n)) throw new vt.ErrnoError(10);
if (!vt.isDir(n.mode)) throw new vt.ErrnoError(54)
}
var s = {type: e, opts: t, mountpoint: r, mounts: []}, u = e.mount(s);
return u.mount = s, s.root = u, o ? vt.root = u : n && (n.mounted = s, n.mount && n.mount.mounts.push(s)), u
},
unmount: function (e) {
var t = vt.lookupPath(e, {follow_mount: !1});
if (!vt.isMountpoint(t.node)) throw new vt.ErrnoError(28);
var r = t.node, n = r.mounted, o = vt.getMounts(n);
Object.keys(vt.nameTable).forEach((function (e) {
for (var t = vt.nameTable[e]; t;) {
var r = t.name_next;
-1 !== o.indexOf(t.mount) && vt.destroyNode(t), t = r
}
})), r.mounted = null;
var a = r.mount.mounts.indexOf(n);
r.mount.mounts.splice(a, 1)
},
lookup: function (e, t) {
return e.node_ops.lookup(e, t)
},
mknod: function (e, t, r) {
var n = vt.lookupPath(e, {parent: !0}).node, o = ht.basename(e);
if (!o || "." === o || ".." === o) throw new vt.ErrnoError(28);
var a = vt.mayCreate(n, o);
if (a) throw new vt.ErrnoError(a);
if (!n.node_ops.mknod) throw new vt.ErrnoError(63);
return n.node_ops.mknod(n, o, t, r)
},
create: function (e, t) {
return t = void 0 !== t ? t : 438, t &= 4095, t |= 32768, vt.mknod(e, t, 0)
},
mkdir: function (e, t) {
return t = void 0 !== t ? t : 511, t &= 1023, t |= 16384, vt.mknod(e, t, 0)
},
mkdirTree: function (e, t) {
for (var r = e.split("/"), n = "", o = 0; o < r.length; ++o) if (r[o]) {
n += "/" + r[o];
try {
vt.mkdir(n, t)
} catch (e) {
if (20 != e.errno) throw e
}
}
},
mkdev: function (e, t, r) {
return void 0 === r && (r = t, t = 438), t |= 8192, vt.mknod(e, t, r)
},
symlink: function (e, t) {
if (!mt.resolve(e)) throw new vt.ErrnoError(44);
var r = vt.lookupPath(t, {parent: !0}).node;
if (!r) throw new vt.ErrnoError(44);
var n = ht.basename(t), o = vt.mayCreate(r, n);
if (o) throw new vt.ErrnoError(o);
if (!r.node_ops.symlink) throw new vt.ErrnoError(63);
return r.node_ops.symlink(r, n, e)
},
rename: function (e, t) {
var r, n, o = ht.dirname(e), a = ht.dirname(t), i = ht.basename(e), s = ht.basename(t);
if (r = vt.lookupPath(e, {parent: !0}).node, n = vt.lookupPath(t, {parent: !0}).node, !r || !n) throw new vt.ErrnoError(44);
if (r.mount !== n.mount) throw new vt.ErrnoError(75);
var u, c = vt.lookupNode(r, i), l = mt.relative(e, a);
if ("." !== l.charAt(0)) throw new vt.ErrnoError(28);
if ("." !== (l = mt.relative(t, o)).charAt(0)) throw new vt.ErrnoError(55);
try {
u = vt.lookupNode(n, s)
} catch (e) {
}
if (c !== u) {
var d = vt.isDir(c.mode), f = vt.mayDelete(r, i, d);
if (f) throw new vt.ErrnoError(f);
if (f = u ? vt.mayDelete(n, s, d) : vt.mayCreate(n, s)) throw new vt.ErrnoError(f);
if (!r.node_ops.rename) throw new vt.ErrnoError(63);
if (vt.isMountpoint(c) || u && vt.isMountpoint(u)) throw new vt.ErrnoError(10);
if (n !== r && (f = vt.nodePermissions(r, "w"))) throw new vt.ErrnoError(f);
try {
vt.trackingDelegate.willMovePath && vt.trackingDelegate.willMovePath(e, t)
} catch (r) {
Me("FS.trackingDelegate['willMovePath']('" + e + "', '" + t + "') threw an exception: " + r.message)
}
vt.hashRemoveNode(c);
try {
r.node_ops.rename(c, n, s)
} catch (e) {
throw e
} finally {
vt.hashAddNode(c)
}
try {
vt.trackingDelegate.onMovePath && vt.trackingDelegate.onMovePath(e, t)
} catch (r) {
Me("FS.trackingDelegate['onMovePath']('" + e + "', '" + t + "') threw an exception: " + r.message)
}
}
},
rmdir: function (e) {
var t = vt.lookupPath(e, {parent: !0}).node, r = ht.basename(e), n = vt.lookupNode(t, r),
o = vt.mayDelete(t, r, !0);
if (o) throw new vt.ErrnoError(o);
if (!t.node_ops.rmdir) throw new vt.ErrnoError(63);
if (vt.isMountpoint(n)) throw new vt.ErrnoError(10);
try {
vt.trackingDelegate.willDeletePath && vt.trackingDelegate.willDeletePath(e)
} catch (t) {
Me("FS.trackingDelegate['willDeletePath']('" + e + "') threw an exception: " + t.message)
}
t.node_ops.rmdir(t, r), vt.destroyNode(n);
try {
vt.trackingDelegate.onDeletePath && vt.trackingDelegate.onDeletePath(e)
} catch (t) {
Me("FS.trackingDelegate['onDeletePath']('" + e + "') threw an exception: " + t.message)
}
},
readdir: function (e) {
var t = vt.lookupPath(e, {follow: !0}).node;
if (!t.node_ops.readdir) throw new vt.ErrnoError(54);
return t.node_ops.readdir(t)
},
unlink: function (e) {
var t = vt.lookupPath(e, {parent: !0}).node, r = ht.basename(e), n = vt.lookupNode(t, r),
o = vt.mayDelete(t, r, !1);
if (o) throw new vt.ErrnoError(o);
if (!t.node_ops.unlink) throw new vt.ErrnoError(63);
if (vt.isMountpoint(n)) throw new vt.ErrnoError(10);
try {
vt.trackingDelegate.willDeletePath && vt.trackingDelegate.willDeletePath(e)
} catch (t) {
Me("FS.trackingDelegate['willDeletePath']('" + e + "') threw an exception: " + t.message)
}
t.node_ops.unlink(t, r), vt.destroyNode(n);
try {
vt.trackingDelegate.onDeletePath && vt.trackingDelegate.onDeletePath(e)
} catch (t) {
Me("FS.trackingDelegate['onDeletePath']('" + e + "') threw an exception: " + t.message)
}
},
readlink: function (e) {
var t = vt.lookupPath(e).node;
if (!t) throw new vt.ErrnoError(44);
if (!t.node_ops.readlink) throw new vt.ErrnoError(28);
return mt.resolve(vt.getPath(t.parent), t.node_ops.readlink(t))
},
stat: function (e, t) {
var r = vt.lookupPath(e, {follow: !t}).node;
if (!r) throw new vt.ErrnoError(44);
if (!r.node_ops.getattr) throw new vt.ErrnoError(63);
return r.node_ops.getattr(r)
},
lstat: function (e) {
return vt.stat(e, !0)
},
chmod: function (e, t, r) {
var n;
"string" == typeof e ? n = vt.lookupPath(e, {follow: !r}).node : n = e;
if (!n.node_ops.setattr) throw new vt.ErrnoError(63);
n.node_ops.setattr(n, {mode: 4095 & t | -4096 & n.mode, timestamp: Date.now()})
},
lchmod: function (e, t) {
vt.chmod(e, t, !0)
},
fchmod: function (e, t) {
var r = vt.getStream(e);
if (!r) throw new vt.ErrnoError(8);
vt.chmod(r.node, t)
},
chown: function (e, t, r, n) {
var o;
"string" == typeof e ? o = vt.lookupPath(e, {follow: !n}).node : o = e;
if (!o.node_ops.setattr) throw new vt.ErrnoError(63);
o.node_ops.setattr(o, {timestamp: Date.now()})
},
lchown: function (e, t, r) {
vt.chown(e, t, r, !0)
},
fchown: function (e, t, r) {
var n = vt.getStream(e);
if (!n) throw new vt.ErrnoError(8);
vt.chown(n.node, t, r)
},
truncate: function (e, t) {
if (t < 0) throw new vt.ErrnoError(28);
var r;
"string" == typeof e ? r = vt.lookupPath(e, {follow: !0}).node : r = e;
if (!r.node_ops.setattr) throw new vt.ErrnoError(63);
if (vt.isDir(r.mode)) throw new vt.ErrnoError(31);
if (!vt.isFile(r.mode)) throw new vt.ErrnoError(28);
var n = vt.nodePermissions(r, "w");
if (n) throw new vt.ErrnoError(n);
r.node_ops.setattr(r, {size: t, timestamp: Date.now()})
},
ftruncate: function (e, t) {
var r = vt.getStream(e);
if (!r) throw new vt.ErrnoError(8);
if (0 == (2097155 & r.flags)) throw new vt.ErrnoError(28);
vt.truncate(r.node, t)
},
utime: function (e, t, r) {
var n = vt.lookupPath(e, {follow: !0}).node;
n.node_ops.setattr(n, {timestamp: Math.max(t, r)})
},
open: function (e, t, r, n, o) {
if ("" === e) throw new vt.ErrnoError(44);
var a;
if (r = void 0 === r ? 438 : r, r = 64 & (t = "string" == typeof t ? vt.modeStringToFlags(t) : t) ? 4095 & r | 32768 : 0, "object" == typeof e) a = e; else {
e = ht.normalize(e);
try {
a = vt.lookupPath(e, {follow: !(131072 & t)}).node
} catch (e) {
}
}
var i = !1;
if (64 & t) if (a) {
if (128 & t) throw new vt.ErrnoError(20)
} else a = vt.mknod(e, r, 0), i = !0;
if (!a) throw new vt.ErrnoError(44);
if (vt.isChrdev(a.mode) && (t &= -513), 65536 & t && !vt.isDir(a.mode)) throw new vt.ErrnoError(54);
if (!i) {
var s = vt.mayOpen(a, t);
if (s) throw new vt.ErrnoError(s)
}
512 & t && vt.truncate(a, 0), t &= -131713;
var u = vt.createStream({
node: a,
path: vt.getPath(a),
flags: t,
seekable: !0,
position: 0,
stream_ops: a.stream_ops,
ungotten: [],
error: !1
}, n, o);
u.stream_ops.open && u.stream_ops.open(u), !Ee.logReadFiles || 1 & t || (vt.readFiles || (vt.readFiles = {}), e in vt.readFiles || (vt.readFiles[e] = 1, Me("FS.trackingDelegate error on read file: " + e)));
try {
if (vt.trackingDelegate.onOpenFile) {
var c = 0;
1 != (2097155 & t) && (c |= vt.tracking.openFlags.READ), 0 != (2097155 & t) && (c |= vt.tracking.openFlags.WRITE), vt.trackingDelegate.onOpenFile(e, c)
}
} catch (t) {
Me("FS.trackingDelegate['onOpenFile']('" + e + "', flags) threw an exception: " + t.message)
}
return u
},
close: function (e) {
if (vt.isClosed(e)) throw new vt.ErrnoError(8);
e.getdents && (e.getdents = null);
try {
e.stream_ops.close && e.stream_ops.close(e)
} catch (e) {
throw e
} finally {
vt.closeStream(e.fd)
}
e.fd = null
},
isClosed: function (e) {
return null === e.fd
},
llseek: function (e, t, r) {
if (vt.isClosed(e)) throw new vt.ErrnoError(8);
if (!e.seekable || !e.stream_ops.llseek) throw new vt.ErrnoError(70);
if (0 != r && 1 != r && 2 != r) throw new vt.ErrnoError(28);
return e.position = e.stream_ops.llseek(e, t, r), e.ungotten = [], e.position
},
read: function (e, t, r, n, o) {
if (n < 0 || o < 0) throw new vt.ErrnoError(28);
if (vt.isClosed(e)) throw new vt.ErrnoError(8);
if (1 == (2097155 & e.flags)) throw new vt.ErrnoError(8);
if (vt.isDir(e.node.mode)) throw new vt.ErrnoError(31);
if (!e.stream_ops.read) throw new vt.ErrnoError(28);
var a = void 0 !== o;
if (a) {
if (!e.seekable) throw new vt.ErrnoError(70)
} else o = e.position;
var i = e.stream_ops.read(e, t, r, n, o);
return a || (e.position += i), i
},
write: function (e, t, r, n, o, a) {
if (n < 0 || o < 0) throw new vt.ErrnoError(28);
if (vt.isClosed(e)) throw new vt.ErrnoError(8);
if (0 == (2097155 & e.flags)) throw new vt.ErrnoError(8);
if (vt.isDir(e.node.mode)) throw new vt.ErrnoError(31);
if (!e.stream_ops.write) throw new vt.ErrnoError(28);
e.seekable && 1024 & e.flags && vt.llseek(e, 0, 2);
var i = void 0 !== o;
if (i) {
if (!e.seekable) throw new vt.ErrnoError(70)
} else o = e.position;
var s = e.stream_ops.write(e, t, r, n, o, a);
i || (e.position += s);
try {
e.path && vt.trackingDelegate.onWriteToFile && vt.trackingDelegate.onWriteToFile(e.path)
} catch (t) {
Me("FS.trackingDelegate['onWriteToFile']('" + e.path + "') threw an exception: " + t.message)
}
return s
},
allocate: function (e, t, r) {
if (vt.isClosed(e)) throw new vt.ErrnoError(8);
if (t < 0 || r <= 0) throw new vt.ErrnoError(28);
if (0 == (2097155 & e.flags)) throw new vt.ErrnoError(8);
if (!vt.isFile(e.node.mode) && !vt.isDir(e.node.mode)) throw new vt.ErrnoError(43);
if (!e.stream_ops.allocate) throw new vt.ErrnoError(138);
e.stream_ops.allocate(e, t, r)
},
mmap: function (e, t, r, n, o, a) {
if (0 != (2 & o) && 0 == (2 & a) && 2 != (2097155 & e.flags)) throw new vt.ErrnoError(2);
if (1 == (2097155 & e.flags)) throw new vt.ErrnoError(2);
if (!e.stream_ops.mmap) throw new vt.ErrnoError(43);
return e.stream_ops.mmap(e, t, r, n, o, a)
},
msync: function (e, t, r, n, o) {
return e && e.stream_ops.msync ? e.stream_ops.msync(e, t, r, n, o) : 0
},
munmap: function (e) {
return 0
},
ioctl: function (e, t, r) {
if (!e.stream_ops.ioctl) throw new vt.ErrnoError(59);
return e.stream_ops.ioctl(e, t, r)
},
readFile: function (e, t) {
if ((t = t || {}).flags = t.flags || 0, t.encoding = t.encoding || "binary", "utf8" !== t.encoding && "binary" !== t.encoding) throw new Error('Invalid encoding type "' + t.encoding + '"');
var r, n = vt.open(e, t.flags), o = vt.stat(e).size, a = new Uint8Array(o);
return vt.read(n, a, 0, o, 0), "utf8" === t.encoding ? r = Pr(a, 0) : "binary" === t.encoding && (r = a), vt.close(n), r
},
writeFile: function (e, t, r) {
(r = r || {}).flags = r.flags || 577;
var n = vt.open(e, r.flags, r.mode);
if ("string" == typeof t) {
var o = new Uint8Array(Rr(t) + 1), a = Br(t, o, 0, o.length);
vt.write(n, o, 0, a, void 0, r.canOwn)
} else {
if (!ArrayBuffer.isView(t)) throw new Error("Unsupported data type");
vt.write(n, t, 0, t.byteLength, void 0, r.canOwn)
}
vt.close(n)
},
cwd: function () {
return vt.currentPath
},
chdir: function (e) {
var t = vt.lookupPath(e, {follow: !0});
if (null === t.node) throw new vt.ErrnoError(44);
if (!vt.isDir(t.node.mode)) throw new vt.ErrnoError(54);
var r = vt.nodePermissions(t.node, "x");
if (r) throw new vt.ErrnoError(r);
vt.currentPath = t.path
},
createDefaultDirectories: function () {
vt.mkdir("/tmp"), vt.mkdir("/home"), vt.mkdir("/home/web_user")
},
createDefaultDevices: function () {
vt.mkdir("/dev"), vt.registerDevice(vt.makedev(1, 3), {
read: function () {
return 0
}, write: function (e, t, r, n, o) {
return n
}
}), vt.mkdev("/dev/null", vt.makedev(1, 3)), At.register(vt.makedev(5, 0), At.default_tty_ops), At.register(vt.makedev(6, 0), At.default_tty1_ops), vt.mkdev("/dev/tty", vt.makedev(5, 0)), vt.mkdev("/dev/tty1", vt.makedev(6, 0));
var e = function () {
if ("object" == typeof crypto && "function" == typeof crypto.getRandomValues) {
var e = new Uint8Array(1);
return function () {
return crypto.getRandomValues(e), e[0]
}
}
return function () {
Yr("randomDevice")
}
}();
vt.createDevice("/dev", "random", e), vt.createDevice("/dev", "urandom", e), vt.mkdir("/dev/shm"), vt.mkdir("/dev/shm/tmp")
},
createSpecialDirectories: function () {
vt.mkdir("/proc");
var e = vt.mkdir("/proc/self");
vt.mkdir("/proc/self/fd"), vt.mount({
mount: function () {
var t = vt.createNode(e, "fd", 16895, 73);
return t.node_ops = {
lookup: function (e, t) {
var r = +t, n = vt.getStream(r);
if (!n) throw new vt.ErrnoError(8);
var o = {
parent: null, mount: {mountpoint: "fake"}, node_ops: {
readlink: function () {
return n.path
}
}
};
return o.parent = o, o
}
}, t
}
}, {}, "/proc/self/fd")
},
createStandardStreams: function () {
Ee.stdin ? vt.createDevice("/dev", "stdin", Ee.stdin) : vt.symlink("/dev/tty", "/dev/stdin"), Ee.stdout ? vt.createDevice("/dev", "stdout", null, Ee.stdout) : vt.symlink("/dev/tty", "/dev/stdout"), Ee.stderr ? vt.createDevice("/dev", "stderr", null, Ee.stderr) : vt.symlink("/dev/tty1", "/dev/stderr");
vt.open("/dev/stdin", 0), vt.open("/dev/stdout", 1), vt.open("/dev/stderr", 1)
},
ensureErrnoError: function () {
vt.ErrnoError || (vt.ErrnoError = function (e, t) {
this.node = t, this.setErrno = function (e) {
this.errno = e
}, this.setErrno(e), this.message = "FS error"
}, vt.ErrnoError.prototype = new Error, vt.ErrnoError.prototype.constructor = vt.ErrnoError, [44].forEach((function (e) {
vt.genericErrors[e] = new vt.ErrnoError(e), vt.genericErrors[e].stack = "<generic error, no stack>"
})))
},
staticInit: function () {
vt.ensureErrnoError(), vt.nameTable = new Array(4096), vt.mount(gt, {}, "/"), vt.createDefaultDirectories(), vt.createDefaultDevices(), vt.createSpecialDirectories(), vt.filesystems = {MEMFS: gt}
},
init: function (e, t, r) {
vt.init.initialized = !0, vt.ensureErrnoError(), Ee.stdin = e || Ee.stdin, Ee.stdout = t || Ee.stdout, Ee.stderr = r || Ee.stderr, vt.createStandardStreams()
},
quit: function () {
vt.init.initialized = !1;
var e = Ee._fflush;
e && e(0);
for (var t = 0; t < vt.streams.length; t++) {
var r = vt.streams[t];
r && vt.close(r)
}
},
getMode: function (e, t) {
var r = 0;
return e && (r |= 365), t && (r |= 146), r
},
findObject: function (e, t) {
var r = vt.analyzePath(e, t);
return r.exists ? r.object : null
},
analyzePath: function (e, t) {
try {
e = (n = vt.lookupPath(e, {follow: !t})).path
} catch (e) {
}
var r = {
isRoot: !1,
exists: !1,
error: 0,
name: null,
path: null,
object: null,
parentExists: !1,
parentPath: null,
parentObject: null
};
try {
var n = vt.lookupPath(e, {parent: !0});
r.parentExists = !0, r.parentPath = n.path, r.parentObject = n.node, r.name = ht.basename(e), n = vt.lookupPath(e, {follow: !t}), r.exists = !0, r.path = n.path, r.object = n.node, r.name = n.node.name, r.isRoot = "/" === n.path
} catch (e) {
r.error = e.errno
}
return r
},
createPath: function (e, t, r, n) {
e = "string" == typeof e ? e : vt.getPath(e);
for (var o = t.split("/").reverse(); o.length;) {
var a = o.pop();
if (a) {
var i = ht.join2(e, a);
try {
vt.mkdir(i)
} catch (e) {
}
e = i
}
}
return i
},
createFile: function (e, t, r, n, o) {
var a = ht.join2("string" == typeof e ? e : vt.getPath(e), t), i = vt.getMode(n, o);
return vt.create(a, i)
},
createDataFile: function (e, t, r, n, o, a) {
var i = t ? ht.join2("string" == typeof e ? e : vt.getPath(e), t) : e, s = vt.getMode(n, o),
u = vt.create(i, s);
if (r) {
if ("string" == typeof r) {
for (var c = new Array(r.length), l = 0, d = r.length; l < d; ++l) c[l] = r.charCodeAt(l);
r = c
}
vt.chmod(u, 146 | s);
var f = vt.open(u, 577);
vt.write(f, r, 0, r.length, 0, a), vt.close(f), vt.chmod(u, s)
}
return u
},
createDevice: function (e, t, r, n) {
var o = ht.join2("string" == typeof e ? e : vt.getPath(e), t), a = vt.getMode(!!r, !!n);
vt.createDevice.major || (vt.createDevice.major = 64);
var i = vt.makedev(vt.createDevice.major++, 0);
return vt.registerDevice(i, {
open: function (e) {
e.seekable = !1
}, close: function (e) {
n && n.buffer && n.buffer.length && n(10)
}, read: function (e, t, n, o, a) {
for (var i = 0, s = 0; s < o; s++) {
var u;
try {
u = r()
} catch (e) {
throw new vt.ErrnoError(29)
}
if (void 0 === u && 0 === i) throw new vt.ErrnoError(6);
if (null == u) break;
i++, t[n + s] = u
}
return i && (e.node.timestamp = Date.now()), i
}, write: function (e, t, r, o, a) {
for (var i = 0; i < o; i++) try {
n(t[r + i])
} catch (e) {
throw new vt.ErrnoError(29)
}
return o && (e.node.timestamp = Date.now()), i
}
}), vt.mkdev(o, a, i)
},
forceLoadFile: function (e) {
if (e.isDevice || e.isFolder || e.link || e.contents) return !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 (!Pe) throw new Error("Cannot load without read() or XMLHttpRequest.");
try {
e.contents = ga(Pe(e.url), !0), e.usedBytes = e.contents.length
} catch (e) {
throw new vt.ErrnoError(29)
}
},
createLazyFile: function (e, t, r, n, o) {
function a() {
this.lengthKnown = !1, this.chunks = []
}
if (a.prototype.get = function (e) {
if (!(e > this.length - 1 || e < 0)) {
var t = e % this.chunkSize, r = e / this.chunkSize | 0;
return this.getter(r)[t]
}
}, a.prototype.setDataGetter = function (e) {
this.getter = e
}, a.prototype.cacheLength = function () {
var e = new XMLHttpRequest;
if (e.open("HEAD", r, !1), e.send(null), !(e.status >= 200 && e.status < 300 || 304 === e.status)) throw new Error("Couldn't load " + r + ". Status: " + e.status);
var t, n = Number(e.getResponseHeader("Content-length")),
o = (t = e.getResponseHeader("Accept-Ranges")) && "bytes" === t,
a = (t = e.getResponseHeader("Content-Encoding")) && "gzip" === t, i = 1048576;
o || (i = n);
var s = this;
s.setDataGetter((function (e) {
var t = e * i, o = (e + 1) * i - 1;
if (o = Math.min(o, n - 1), void 0 === s.chunks[e] && (s.chunks[e] = function (e, t) {
if (e > t) throw new Error("invalid range (" + e + ", " + t + ") or no bytes requested!");
if (t > n - 1) throw new Error("only " + n + " bytes available! programmer error!");
var o = new XMLHttpRequest;
if (o.open("GET", r, !1), n !== i && o.setRequestHeader("Range", "bytes=" + e + "-" + t), "undefined" != typeof Uint8Array && (o.responseType = "arraybuffer"), o.overrideMimeType && o.overrideMimeType("text/plain; charset=x-user-defined"), o.send(null), !(o.status >= 200 && o.status < 300 || 304 === o.status)) throw new Error("Couldn't load " + r + ". Status: " + o.status);
return void 0 !== o.response ? new Uint8Array(o.response || []) : ga(o.responseText || "", !0)
}(t, o)), void 0 === s.chunks[e]) throw new Error("doXHR failed!");
return s.chunks[e]
})), !a && n || (i = n = 1, n = this.getter(0).length, i = n, Be("LazyFiles on gzip forces download of the whole file when length is accessed")), this._length = n, this._chunkSize = i, this.lengthKnown = !0
}, "undefined" != typeof XMLHttpRequest) {
if (!De) throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
var i = new a;
Object.defineProperties(i, {
length: {
get: function () {
return this.lengthKnown || this.cacheLength(), this._length
}
}, chunkSize: {
get: function () {
return this.lengthKnown || this.cacheLength(), this._chunkSize
}
}
});
var s = {isDevice: !1, contents: i}
} else s = {isDevice: !1, url: r};
var u = vt.createFile(e, t, s, n, o);
s.contents ? u.contents = s.contents : s.url && (u.contents = null, u.url = s.url), Object.defineProperties(u, {
usedBytes: {
get: function () {
return this.contents.length
}
}
});
var c = {};
return Object.keys(u.stream_ops).forEach((function (e) {
var t = u.stream_ops[e];
c[e] = function () {
return vt.forceLoadFile(u), t.apply(null, arguments)
}
})), c.read = function (e, t, r, n, o) {
vt.forceLoadFile(u);
var a = e.node.contents;
if (o >= a.length) return 0;
var i = Math.min(a.length - o, n);
if (a.slice) for (var s = 0; s < i; s++) t[r + s] = a[o + s]; else for (s = 0; s < i; s++) t[r + s] = a.get(o + s);
return i
}, u.stream_ops = c, u
},
createPreloadedFile: function (e, t, r, n, o, a, i, s, u, c) {
Browser.init();
var l = t ? mt.resolve(ht.join2(e, t)) : e;
function d(r) {
function d(r) {
c && c(), s || vt.createDataFile(e, t, r, n, o, u), a && a(), Wr()
}
var f = !1;
Ee.preloadPlugins.forEach((function (e) {
f || e.canHandle(l) && (e.handle(r, l, d, (function () {
i && i(), Wr()
})), f = !0)
})), f || d(r)
}
zr(), "string" == typeof r ? Browser.asyncLoad(r, (function (e) {
d(e)
}), i) : d(r)
},
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, t, r) {
t = t || function () {
}, r = r || function () {
};
var n = vt.indexedDB();
try {
var o = n.open(vt.DB_NAME(), vt.DB_VERSION)
} catch (e) {
return r(e)
}
o.onupgradeneeded = function () {
Be("creating db"), o.result.createObjectStore(vt.DB_STORE_NAME)
}, o.onsuccess = function () {
var n = o.result.transaction([vt.DB_STORE_NAME], "readwrite"), a = n.objectStore(vt.DB_STORE_NAME), i = 0,
s = 0, u = e.length;
function c() {
0 == s ? t() : r()
}
e.forEach((function (e) {
var t = a.put(vt.analyzePath(e).object.contents, e);
t.onsuccess = function () {
++i + s == u && c()
}, t.onerror = function () {
s++, i + s == u && c()
}
})), n.onerror = r
}, o.onerror = r
},
loadFilesFromDB: function (e, t, r) {
t = t || function () {
}, r = r || function () {
};
var n = vt.indexedDB();
try {
var o = n.open(vt.DB_NAME(), vt.DB_VERSION)
} catch (e) {
return r(e)
}
o.onupgradeneeded = r, o.onsuccess = function () {
var n = o.result;
try {
var a = n.transaction([vt.DB_STORE_NAME], "readonly")
} catch (e) {
return void r(e)
}
var i = a.objectStore(vt.DB_STORE_NAME), s = 0, u = 0, c = e.length;
function l() {
0 == u ? t() : r()
}
e.forEach((function (e) {
var t = i.get(e);
t.onsuccess = function () {
vt.analyzePath(e).exists && vt.unlink(e), vt.createDataFile(ht.dirname(e), ht.basename(e), t.result, !0, !0, !0), ++s + u == c && l()
}, t.onerror = function () {
u++, s + u == c && l()
}
})), a.onerror = r
}, o.onerror = r
}
}, Et = {
mappings: {}, DEFAULT_POLLMASK: 5, umask: 511, calculateAt: function (e, t, r) {
if ("/" === t[0]) return t;
var n;
if (-100 === e) n = vt.cwd(); else {
var o = vt.getStream(e);
if (!o) throw new vt.ErrnoError(8);
n = o.path
}
if (0 == t.length) {
if (!r) throw new vt.ErrnoError(44);
return n
}
return ht.join2(n, t)
}, doStat: function (e, t, r) {
try {
var n = e(t)
} catch (e) {
if (e && e.node && ht.normalize(t) !== ht.normalize(vt.getPath(e.node))) return -54;
throw e
}
return $e[r >> 2] = n.dev, $e[r + 4 >> 2] = 0, $e[r + 8 >> 2] = n.ino, $e[r + 12 >> 2] = n.mode, $e[r + 16 >> 2] = n.nlink, $e[r + 20 >> 2] = n.uid, $e[r + 24 >> 2] = n.gid, $e[r + 28 >> 2] = n.rdev, $e[r + 32 >> 2] = 0, ct = [n.size >>> 0, (ut = n.size, +Math.abs(ut) >= 1 ? ut > 0 ? (0 | Math.min(+Math.floor(ut / 4294967296), 4294967295)) >>> 0 : ~~+Math.ceil((ut - +(~~ut >>> 0)) / 4294967296) >>> 0 : 0)], $e[r + 40 >> 2] = ct[0], $e[r + 44 >> 2] = ct[1], $e[r + 48 >> 2] = 4096, $e[r + 52 >> 2] = n.blocks, $e[r + 56 >> 2] = n.atime.getTime() / 1e3 | 0, $e[r + 60 >> 2] = 0, $e[r + 64 >> 2] = n.mtime.getTime() / 1e3 | 0, $e[r + 68 >> 2] = 0, $e[r + 72 >> 2] = n.ctime.getTime() / 1e3 | 0, $e[r + 76 >> 2] = 0, ct = [n.ino >>> 0, (ut = n.ino, +Math.abs(ut) >= 1 ? ut > 0 ? (0 | Math.min(+Math.floor(ut / 4294967296), 4294967295)) >>> 0 : ~~+Math.ceil((ut - +(~~ut >>> 0)) / 4294967296) >>> 0 : 0)], $e[r + 80 >> 2] = ct[0], $e[r + 84 >> 2] = ct[1], 0
}, doMsync: function (e, t, r, n, o) {
var a = We.slice(e, e + r);
vt.msync(t, a, o, r, n)
}, doMkdir: function (e, t) {
return "/" === (e = ht.normalize(e))[e.length - 1] && (e = e.substr(0, e.length - 1)), vt.mkdir(e, t, 0), 0
}, doMknod: function (e, t, r) {
switch (61440 & t) {
case 32768:
case 8192:
case 24576:
case 4096:
case 49152:
break;
default:
return -28
}
return vt.mknod(e, t, r), 0
}, doReadlink: function (e, t, r) {
if (r <= 0) return -28;
var n = vt.readlink(e), o = Math.min(r, Rr(n)), a = ze[t + o];
return Mr(n, t, r + 1), ze[t + o] = a, o
}, doAccess: function (e, t) {
if (-8 & t) return -28;
var r;
if (!(r = vt.lookupPath(e, {follow: !0}).node)) return -44;
var n = "";
return 4 & t && (n += "r"), 2 & t && (n += "w"), 1 & t && (n += "x"), n && vt.nodePermissions(r, n) ? -2 : 0
}, doDup: function (e, t, r) {
var n = vt.getStream(r);
return n && vt.close(n), vt.open(e, t, 0, r, r).fd
}, doReadv: function (e, t, r, n) {
for (var o = 0, a = 0; a < r; a++) {
var i = $e[t + 8 * a >> 2], s = $e[t + (8 * a + 4) >> 2], u = vt.read(e, ze, i, s, n);
if (u < 0) return -1;
if (o += u, u < s) break
}
return o
}, doWritev: function (e, t, r, n) {
for (var o = 0, a = 0; a < r; a++) {
var i = $e[t + 8 * a >> 2], s = $e[t + (8 * a + 4) >> 2], u = vt.write(e, ze, i, s, n);
if (u < 0) return -1;
o += u
}
return o
}, varargs: void 0, get: function () {
return Et.varargs += 4, $e[Et.varargs - 4 >> 2]
}, getStr: function (e) {
return xr(e)
}, getStreamFromFD: function (e) {
var t = vt.getStream(e);
if (!t) throw new vt.ErrnoError(8);
return t
}, get64: function (e, t) {
return e
}
}, yt = void 0, wt = {}, _t = {}, bt = {}, kt = 48, Tt = 57, Dt = void 0, St = void 0, Ct = !1, Ot = void 0, Pt = [], xt = {}, Bt = {}, Mt = void 0, Rt = [], Lt = [{}, {value: void 0}, {value: null}, {value: !0}, {value: !1}], It = {}, Ft = [], Ut = [], Nt = [], jt = {
inEventHandler: 0, removeAllEventListeners: function () {
for (var e = jt.eventHandlers.length - 1; e >= 0; --e) jt._removeHandler(e);
jt.eventHandlers = [], jt.deferredCalls = []
}, registerRemoveEventListeners: function () {
jt.removeEventListenersRegistered || (tt.push(jt.removeAllEventListeners), jt.removeEventListenersRegistered = !0)
}, deferredCalls: [], deferCall: function (e, t, r) {
function n(e, t) {
if (e.length != t.length) return !1;
for (var r in e) if (e[r] != t[r]) return !1;
return !0
}
for (var o in jt.deferredCalls) {
var a = jt.deferredCalls[o];
if (a.targetFunction == e && n(a.argsList, r)) return
}
jt.deferredCalls.push({targetFunction: e, precedence: t, argsList: r}), jt.deferredCalls.sort((function (e, t) {
return e.precedence < t.precedence
}))
}, removeDeferredCalls: function (e) {
for (var t = 0; t < jt.deferredCalls.length; ++t) jt.deferredCalls[t].targetFunction == e && (jt.deferredCalls.splice(t, 1), --t)
}, canPerformEventHandlerRequests: function () {
return jt.inEventHandler && jt.currentEventHandler.allowsDeferredCalls
}, runDeferredCalls: function () {
if (jt.canPerformEventHandlerRequests()) for (var e = 0; e < jt.deferredCalls.length; ++e) {
var t = jt.deferredCalls[e];
jt.deferredCalls.splice(e, 1), --e, t.targetFunction.apply(null, t.argsList)
}
}, eventHandlers: [], removeAllHandlersOnTarget: function (e, t) {
for (var r = 0; r < jt.eventHandlers.length; ++r) jt.eventHandlers[r].target != e || t && t != jt.eventHandlers[r].eventTypeString || jt._removeHandler(r--)
}, _removeHandler: function (e) {
var t = jt.eventHandlers[e];
t.target.removeEventListener(t.eventTypeString, t.eventListenerFunc, t.useCapture), jt.eventHandlers.splice(e, 1)
}, registerOrRemoveHandler: function (e) {
var t = function (t) {
++jt.inEventHandler, jt.currentEventHandler = e, jt.runDeferredCalls(), e.handlerFunc(t), jt.runDeferredCalls(), --jt.inEventHandler
};
if (e.callbackfunc) e.eventListenerFunc = t, e.target.addEventListener(e.eventTypeString, t, e.useCapture), jt.eventHandlers.push(e), jt.registerRemoveEventListeners(); else for (var r = 0; r < jt.eventHandlers.length; ++r) jt.eventHandlers[r].target == e.target && jt.eventHandlers[r].eventTypeString == e.eventTypeString && jt._removeHandler(r--)
}, queueEventHandlerOnThread_iiii: function (e, t, r, n, o) {
var a = gr(), i = Er(12);
$e[i >> 2] = r, $e[i + 4 >> 2] = n, $e[i + 8 >> 2] = o, mr(0, e, 637534208, t, n, i), vr(a)
}, getTargetThreadForEventCallback: function (e) {
switch (e) {
case 1:
return 0;
case 2:
return ft.currentProxiedOperationCallerThread;
default:
return e
}
}, getNodeNameForTarget: function (e) {
return e ? e == window ? "#window" : e == screen ? "#screen" : e && e.nodeName ? e.nodeName : "" : ""
}, fullscreenEnabled: function () {
return document.fullscreenEnabled || document.webkitFullscreenEnabled
}
}, Gt = [0, "undefined" != typeof document ? document : 0, "undefined" != typeof window ? window : 0], zt = {
counter: 1,
buffers: [],
programs: [],
framebuffers: [],
renderbuffers: [],
textures: [],
uniforms: [],
shaders: [],
vaos: [],
contexts: {},
offscreenCanvases: {},
timerQueriesEXT: [],
programInfos: {},
stringCache: {},
unpackAlignment: 4,
recordError: function (e) {
zt.lastError || (zt.lastError = e)
},
getNewId: function (e) {
for (var t = zt.counter++, r = e.length; r < t; r++) e[r] = null;
return t
},
getSource: function (e, t, r, n) {
for (var o = "", a = 0; a < t; ++a) {
var i = n ? $e[n + 4 * a >> 2] : -1;
o += xr($e[r + 4 * a >> 2], i < 0 ? void 0 : i)
}
return o
},
createContext: function (e, t) {
var r = e.getContext("webgl", t);
return r ? zt.registerContext(r, t) : 0
},
registerContext: function (e, t) {
var r = Jt(8);
$e[r + 4 >> 2] = sr();
var n = {handle: r, attributes: t, version: t.majorVersion, GLctx: e};
return e.canvas && (e.canvas.GLctxObject = n), zt.contexts[r] = n, (void 0 === t.enableExtensionsByDefault || t.enableExtensionsByDefault) && zt.initExtensions(n), r
},
makeContextCurrent: function (e) {
return zt.currentContext = zt.contexts[e], Ee.ctx = Qt = zt.currentContext && zt.currentContext.GLctx, !(e && !Qt)
},
getContext: function (e) {
return zt.contexts[e]
},
deleteContext: function (e) {
zt.currentContext === zt.contexts[e] && (zt.currentContext = null), "object" == typeof jt && jt.removeAllHandlersOnTarget(zt.contexts[e].GLctx.canvas), zt.contexts[e] && zt.contexts[e].GLctx.canvas && (zt.contexts[e].GLctx.canvas.GLctxObject = void 0), Kt(zt.contexts[e].handle), zt.contexts[e] = null
},
initExtensions: function (e) {
if (e || (e = zt.currentContext), !e.initExtensionsDone) {
e.initExtensionsDone = !0;
var t, r = e.GLctx;
!function (e) {
var t = e.getExtension("ANGLE_instanced_arrays");
if (t) e.vertexAttribDivisor = function (e, r) {
t.vertexAttribDivisorANGLE(e, r)
}, e.drawArraysInstanced = function (e, r, n, o) {
t.drawArraysInstancedANGLE(e, r, n, o)
}, e.drawElementsInstanced = function (e, r, n, o, a) {
t.drawElementsInstancedANGLE(e, r, n, o, a)
}
}(r), function (e) {
var t = e.getExtension("OES_vertex_array_object");
if (t) e.createVertexArray = function () {
return t.createVertexArrayOES()
}, e.deleteVertexArray = function (e) {
t.deleteVertexArrayOES(e)
}, e.bindVertexArray = function (e) {
t.bindVertexArrayOES(e)
}, e.isVertexArray = function (e) {
return t.isVertexArrayOES(e)
}
}(r), function (e) {
var t = e.getExtension("WEBGL_draw_buffers");
if (t) e.drawBuffers = function (e, r) {
t.drawBuffersWEBGL(e, r)
}
}(r), r.disjointTimerQueryExt = r.getExtension("EXT_disjoint_timer_query"), (t = r).multiDrawWebgl = t.getExtension("WEBGL_multi_draw"), (r.getSupportedExtensions() || []).forEach((function (e) {
e.indexOf("lose_context") < 0 && e.indexOf("debug") < 0 && r.getExtension(e)
}))
}
},
populateUniformTable: function (e) {
for (var t = zt.programs[e], r = zt.programInfos[e] = {
uniforms: {},
maxUniformLength: 0,
maxAttributeLength: -1,
maxUniformBlockNameLength: -1
}, n = r.uniforms, o = Qt.getProgramParameter(t, 35718), a = 0; a < o; ++a) {
var i = Qt.getActiveUniform(t, a), s = i.name;
r.maxUniformLength = Math.max(r.maxUniformLength, s.length + 1), "]" == s.slice(-1) && (s = s.slice(0, s.lastIndexOf("[")));
var u = Qt.getUniformLocation(t, s);
if (u) {
var c = zt.getNewId(zt.uniforms);
n[s] = [i.size, c], zt.uniforms[c] = u;
for (var l = 1; l < i.size; ++l) {
var d = s + "[" + l + "]";
u = Qt.getUniformLocation(t, d), c = zt.getNewId(zt.uniforms), zt.uniforms[c] = u
}
}
}
}
}, Wt = ["default", "low-power", "high-performance"], Yt = {}, Se || ft.initMainThreadBlock(), Ht = function (e, t, r, n) {
e || (e = this), this.parent = e, this.mount = e.mount, this.mounted = null, this.id = vt.nextInode++, this.name = t, this.mode = r, this.node_ops = {}, this.stream_ops = {}, this.rdev = n
}, $t = 365, Vt = 146, Object.defineProperties(Ht.prototype, {
read: {
get: function () {
return (this.mode & $t) === $t
}, set: function (e) {
e ? this.mode |= $t : this.mode &= -366
}
}, write: {
get: function () {
return (this.mode & Vt) === Vt
}, set: function (e) {
e ? this.mode |= Vt : this.mode &= -147
}
}, isFolder: {
get: function () {
return vt.isDir(this.mode)
}
}, isDevice: {
get: function () {
return vt.isChrdev(this.mode)
}
}
}), vt.FSNode = Ht, vt.staticInit(), function () {
for (var e = new Array(256), t = 0; t < 256; ++t) e[t] = String.fromCharCode(t);
yt = e
}(), Dt = Ee.BindingError = fn(Error, "BindingError"), St = Ee.InternalError = fn(Error, "InternalError"), Cn.prototype.isAliasOf = vn, Cn.prototype.clone = bn, Cn.prototype.delete = kn, Cn.prototype.isDeleted = Tn, Cn.prototype.deleteLater = Sn, $n.prototype.getPointee = In, $n.prototype.destructor = Fn, $n.prototype.argPackAdvance = 8, $n.prototype.readValueFromPointer = Ln, $n.prototype.deleteObject = Un, $n.prototype.fromWireType = Hn, Ee.getInheritedInstanceCount = jn, Ee.getLiveInheritedInstances = Gn, Ee.flushPendingDeletes = Dn, Ee.setDelayFunction = zn, Mt = Ee.UnboundTypeError = fn(Error, "UnboundTypeError"), Ee.count_emval_handles = io, Ee.get_first_emval = so, Xt = [null, an, sn, Xo, ea, ta, ra, na, oa, aa, ia, ua, Aa], qt = {
e: rn,
Q: an,
P: sn,
V: gn,
y: Zn,
q: eo,
m: ro,
$: oo,
U: co,
w: po,
d: mo,
c: Ao,
x: go,
o: vo,
W: Eo,
I: yo,
J: bo,
i: ko,
z: ao,
h: To,
_: Do,
C: So,
R: Co,
b: Oo,
Y: Po,
s: xo,
M: Bo,
t: Mo,
g: Ro,
f: qr,
k: pt,
j: jo,
D: Go,
F: Wo,
E: Yo,
G: qo,
r: Zo,
H: Ko,
N: ea,
O: ta,
v: ra,
S: na,
T: oa,
A: aa,
u: ia,
X: sa,
B: Qr,
a: Ue,
K: ca,
L: la,
l: fa,
p: ha,
n: ma,
Z: Aa
}, Vr(), Zt = Ee.___wasm_call_ctors = function () {
return (Zt = Ee.___wasm_call_ctors = Ee.asm.aa).apply(null, arguments)
}, Kt = Ee._free = function () {
return (Kt = Ee._free = Ee.asm.ba).apply(null, arguments)
}, Jt = Ee._malloc = function () {
return (Jt = Ee._malloc = Ee.asm.ca).apply(null, arguments)
}, er = Ee._strlen = function () {
return (er = Ee._strlen = Ee.asm.ea).apply(null, arguments)
},tr = Ee.___errno_location = function () {
return (tr = Ee.___errno_location = Ee.asm.fa).apply(null, arguments)
},rr = Ee.___getTypeName = function () {
return (rr = Ee.___getTypeName = Ee.asm.ga).apply(null, arguments)
},Ee.___embind_register_native_and_builtin_types = function () {
return (Ee.___embind_register_native_and_builtin_types = Ee.asm.ha).apply(null, arguments)
},nr = Ee._emscripten_get_global_libc = function () {
return (nr = Ee._emscripten_get_global_libc = Ee.asm.ia).apply(null, arguments)
},or = Ee.__get_tzname = function () {
return (or = Ee.__get_tzname = Ee.asm.ja).apply(null, arguments)
},ar = Ee.__get_daylight = function () {
return (ar = Ee.__get_daylight = Ee.asm.ka).apply(null, arguments)
},ir = Ee.__get_timezone = function () {
return (ir = Ee.__get_timezone = Ee.asm.la).apply(null, arguments)
},sr = Ee._pthread_self = function () {
return (sr = Ee._pthread_self = Ee.asm.ma).apply(null, arguments)
},ur = Ee._emscripten_main_browser_thread_id = function () {
return (ur = Ee._emscripten_main_browser_thread_id = Ee.asm.na).apply(null, arguments)
},cr = Ee.___pthread_tsd_run_dtors = function () {
return (cr = Ee.___pthread_tsd_run_dtors = Ee.asm.oa).apply(null, arguments)
},lr = Ee._emscripten_main_thread_process_queued_calls = function () {
return (lr = Ee._emscripten_main_thread_process_queued_calls = Ee.asm.pa).apply(null, arguments)
},Ee._emscripten_current_thread_process_queued_calls = function () {
return (Ee._emscripten_current_thread_process_queued_calls = Ee.asm.qa).apply(null, arguments)
},dr = Ee._emscripten_register_main_browser_thread_id = function () {
return (dr = Ee._emscripten_register_main_browser_thread_id = Ee.asm.ra).apply(null, arguments)
},fr = Ee.__emscripten_do_dispatch_to_thread = function () {
return (fr = Ee.__emscripten_do_dispatch_to_thread = Ee.asm.sa).apply(null, arguments)
},pr = Ee._emscripten_sync_run_in_main_thread_4 = function () {
return (pr = Ee._emscripten_sync_run_in_main_thread_4 = Ee.asm.ta).apply(null, arguments)
},hr = Ee._emscripten_run_in_main_runtime_thread_js = function () {
return (hr = Ee._emscripten_run_in_main_runtime_thread_js = Ee.asm.ua).apply(null, arguments)
},mr = Ee.__emscripten_call_on_thread = function () {
return (mr = Ee.__emscripten_call_on_thread = Ee.asm.va).apply(null, arguments)
},Ee._emscripten_tls_init = function () {
return (Ee._emscripten_tls_init = Ee.asm.wa).apply(null, arguments)
},Ar = Ee.__emscripten_thread_init = function () {
return (Ar = Ee.__emscripten_thread_init = Ee.asm.xa).apply(null, arguments)
},gr = Ee.stackSave = function () {
return (gr = Ee.stackSave = Ee.asm.ya).apply(null, arguments)
},vr = Ee.stackRestore = function () {
return (vr = Ee.stackRestore = Ee.asm.za).apply(null, arguments)
},Er = Ee.stackAlloc = function () {
return (Er = Ee.stackAlloc = Ee.asm.Aa).apply(null, arguments)
},yr = Ee._emscripten_stack_set_limits = function () {
return (yr = Ee._emscripten_stack_set_limits = Ee.asm.Ba).apply(null, arguments)
},wr = Ee._memalign = function () {
return (wr = Ee._memalign = Ee.asm.Ca).apply(null, arguments)
},Ee.dynCall_ijiii = function () {
return (Ee.dynCall_ijiii = Ee.asm.Da).apply(null, arguments)
},Ee.dynCall_viiijj = function () {
return (Ee.dynCall_viiijj = Ee.asm.Ea).apply(null, arguments)
},Ee.dynCall_jij = function () {
return (Ee.dynCall_jij = Ee.asm.Fa).apply(null, arguments)
},Ee.dynCall_jii = function () {
return (Ee.dynCall_jii = Ee.asm.Ga).apply(null, arguments)
},Ee.dynCall_jiji = function () {
return (Ee.dynCall_jiji = Ee.asm.Ha).apply(null, arguments)
},Ee._ff_h264_cabac_tables = 77706,_r = Ee.__emscripten_allow_main_runtime_queued_calls = 241152,br = Ee.__emscripten_main_thread_futex = 1178e3,Ee.PThread = ft,Ee.PThread = ft,Ee.wasmMemory = Ue,Ee.ExitStatus = va,at = function e() {
kr || Ea(), kr || (at = e)
},Ee.run = Ea,Ee.preInit) for ("function" == typeof Ee.preInit && (Ee.preInit = [Ee.preInit]); Ee.preInit.length > 0;) Ee.preInit.pop()();
Se && (Fe = !1, ft.initWorker()), Ea(), Tr = e(Ee)
}
var _a = !1;
function ba(e) {
let t = e.next(), r = null;
return n => {
var o = new Uint8Array(n);
if (r) {
var a = new Uint8Array(r.length + o.length);
a.set(r), a.set(o, r.length), o = a, r = null
}
for (; o.length >= t.value;) {
var i = o.slice(t.value);
t = e.next(o.slice(0, t.value)), o = i
}
o.length > 0 && (r = o)
}
}
function ka() {
({}), Dr || (Dr = !0, wa()), a(), (() => {
try {
if ("object" == typeof WebAssembly && "function" == typeof WebAssembly.instantiate) {
const e = new WebAssembly.Module(Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0));
if (e instanceof WebAssembly.Module) return new WebAssembly.Instance(e) instanceof WebAssembly.Instance
}
} catch (e) {
}
return !1
})(), Date.now || (Date.now = function () {
return (new Date).getTime()
}), Tr.print = function (e) {
postMessage({cmd: "print", text: e})
}, Tr.printErr = function (e) {
postMessage({cmd: "printErr", text: e})
}, Tr.postRun = function () {
var e = [], t = {
_firstCheckpoint: 0, _lastCheckpoint: 0, _intervalBytes: 0, _lastSecondBytes: 0, addBytes: function (e) {
0 === t._firstCheckpoint ? (t._firstCheckpoint = Date.now(), t._lastCheckpoint = t._firstCheckpoint, t._intervalBytes += e) : Date.now() - t._lastCheckpoint < 1e3 ? t._intervalBytes += e : (t._lastSecondBytes = t._intervalBytes, t._intervalBytes = e, t._lastCheckpoint = Date.now())
}, reset: function () {
t._firstCheckpoint = t._lastCheckpoint = 0, t._intervalBytes = 0, t._lastSecondBytes = 0
}, getCurrentKBps: function () {
t.addBytes(0);
var e = (Date.now() - t._lastCheckpoint) / 1e3;
return 0 == e && (e = 1), t._intervalBytes / e / 1024
}, getLastSecondKBps: function () {
return t.addBytes(0), 0 !== t._lastSecondBytes ? t._lastSecondBytes / 1024 : Date.now() - t._lastCheckpoint >= 500 ? t.getCurrentKBps() : 0
}
}, r = {
opt: {}, initAudioPlanar: function (e, t) {
postMessage({cmd: "initAudioPlanar", samplerate: t, channels: e});
var r = [], n = [], o = 0;
this.playAudioPlanar = function (t, a) {
for (var i = a, s = [], u = 0, c = 0; c < 2; c++) {
var l = Tr.HEAPU32[(t >> 2) + c] >> 2;
s[c] = Tr.HEAPF32.subarray(l, l + i)
}
if (o) {
if (!(i >= (a = 1024 - o))) return o += i, r[0] = Float32Array.of(...r[0], ...s[0]), void (2 == e && (r[1] = Float32Array.of(...r[1], ...s[1])));
n[0] = Float32Array.of(...r[0], ...s[0].subarray(0, a)), 2 == e && (n[1] = Float32Array.of(...r[1], ...s[1].subarray(0, a))), postMessage({
cmd: "playAudio",
buffer: n
}, n.map((e => e.buffer))), u = a, i -= a
}
for (o = i; o >= 1024; o -= 1024) n[0] = s[0].slice(u, u += 1024), 2 == e && (n[1] = s[1].slice(u - 1024, u)), postMessage({
cmd: "playAudio",
buffer: n
}, n.map((e => e.buffer)));
o && (r[0] = s[0].slice(u), 2 == e && (r[1] = s[1].slice(u)))
}
}, inputFlv: function* () {
yield 9;
for (var t = new ArrayBuffer(4), r = new Uint8Array(t), a = new Uint32Array(t); ;) {
r[3] = 0;
var i = yield 15, s = i[4];
r[0] = i[7], r[1] = i[6], r[2] = i[5];
var u = a[0];
r[0] = i[10], r[1] = i[9], r[2] = i[8];
var c = a[0];
16777215 === c && (r[3] = i[11], c = a[0]);
var l = yield u;
switch (s) {
case 8:
this.opt.hasAudio && e.push({ts: c, payload: l, decoder: n, type: 0});
break;
case 9:
e.push({ts: c, payload: l, decoder: o, type: l[0] >> 4})
}
}
}, play: function (r) {
this.opt.debug && console.log("Jessibuca play", r), this.getDelay = function (e) {
return e ? (this.firstTimestamp = e, this.startTimestamp = Date.now(), this.getDelay = function (e) {
return this.delay = Date.now() - this.startTimestamp - (e - this.firstTimestamp), this.delay
}, -1) : -1
};
var i = this.opt.vod ? () => {
if (e.length) {
var t = e[0];
if (-1 === this.getDelay(t.ts)) e.shift(), this.ts = t.ts, t.decoder.decode(t.payload); else for (; e.length && (t = e[0], this.getDelay(t.ts) > this.videoBuffer);) e.shift(), this.ts = t.ts, t.decoder.decode(t.payload)
}
} : () => {
if (e.length) if (this.dropping) 1 == (t = e.shift()).type ? (this.dropping = !1, this.ts = t.ts, t.decoder.decode(t.payload)) : 0 == t.type && (this.ts = t.ts, t.decoder.decode(t.payload)); else {
var t = e[0];
if (-1 === this.getDelay(t.ts)) e.shift(), this.ts = t.ts, t.decoder.decode(t.payload); else if (this.delay > this.videoBuffer + 1e3) this.dropping = !0; else for (; e.length && (t = e[0], this.getDelay(t.ts) > this.videoBuffer);) e.shift(), this.ts = t.ts, t.decoder.decode(t.payload)
}
};
if (this.stopId = setInterval(i, 10), this.speedSamplerId = setInterval((() => {
postMessage({cmd: "kBps", kBps: t.getLastSecondKBps()})
}), 1e3), 0 == r.indexOf("http")) {
this.flvMode = !0;
var s = this, u = new AbortController;
fetch(r, {signal: u.signal}).then((function (e) {
var r = e.body.getReader(), n = s.inputFlv(), o = ba(n), a = function () {
r.read().then((({done: e, value: r}) => {
e ? n.return(null) : (t.addBytes(r.byteLength), o(r), a())
})).catch((function (e) {
n.return(null), s.opt.debug && console.error(e), -1 === e.toString().indexOf("The user aborted a request") && postMessage({
cmd: "printErr",
text: e.toString()
})
}))
};
a()
})).catch((e => {
postMessage({cmd: "printErr", text: e.message})
})), this._close = function () {
u.abort()
}
} else {
if (this.flvMode = -1 != r.indexOf(".flv"), this.ws = new WebSocket(r), this.ws.binaryType = "arraybuffer", this.flvMode) {
let e = this.inputFlv();
var c = ba(e);
this.ws.onmessage = e => {
t.addBytes(e.data.byteLength), c(e.data)
}, this.ws.onerror = t => {
e.return(null), postMessage({cmd: "printErr", text: t.toString()})
}
} else this.ws.onmessage = r => {
t.addBytes(r.data.byteLength);
var a = new DataView(r.data);
switch (a.getUint8(0)) {
case 1:
this.opt.hasAudio && e.push({
ts: a.getUint32(1, !1),
payload: new Uint8Array(r.data, 5),
decoder: n,
type: 0
});
break;
case 2:
e.push({
ts: a.getUint32(1, !1),
payload: new Uint8Array(r.data, 5),
decoder: o,
type: a.getUint8(5) >> 4
})
}
}, this.ws.onerror = e => {
postMessage({cmd: "printErr", text: e.toString()})
};
this._close = function () {
this.ws.close(), this.ws = null
}
}
this.setVideoSize = function (e, t) {
postMessage({cmd: "initSize", w: e, h: t});
var r = e * t, n = r >> 2;
if (this.opt.forceNoOffscreen || "undefined" == typeof OffscreenCanvas) this.draw = function (e, t, o, a) {
var i = [Tr.HEAPU8.subarray(t, t + r), Tr.HEAPU8.subarray(o, o + n), Tr.HEAPU8.subarray(a, a + n)].map((e => Uint8Array.from(e)));
postMessage({
cmd: "render",
compositionTime: e,
delay: this.delay,
ts: this.ts,
output: i
}, i.map((e => e.buffer)))
}; else {
var o = new OffscreenCanvas(e, t), i = o.getContext("webgl"), s = a().default(i);
this.draw = function (a, i, u, c) {
s(e, t, Tr.HEAPU8.subarray(i, i + r), Tr.HEAPU8.subarray(u, u + n), Tr.HEAPU8.subarray(c, c + n));
let l = o.transferToImageBitmap();
postMessage({cmd: "render", compositionTime: a, delay: this.delay, ts: this.ts, buffer: l}, [l])
}
}
}
}, close: function () {
this._close && (this.opt.debug && console.log("worker close"), this._close(), clearInterval(this.stopId), this.stopId = null, clearInterval(this.speedSamplerId), this.speedSamplerId = null, t.reset(), this.ws = null, n.clear(), o.clear(), this.firstTimestamp = 0, this.startTimestamp = 0, this.delay = 0, this.ts = 0, this.flvMode = !1, e = [], delete this.playAudioPlanar, delete this.draw, delete this.getDelay)
}
}, n = new Tr.AudioDecoder(r), o = new Tr.VideoDecoder(r);
postMessage({cmd: "init"}), self.onmessage = function (e) {
var t = e.data;
switch (t.cmd) {
case"init":
r.opt = JSON.parse(t.opt), n.sample_rate = t.sampleRate;
break;
case"getProp":
postMessage({cmd: "getProp", value: r[t.prop]});
break;
case"setProp":
r[t.prop] = t.value;
break;
case"play":
r.play(t.url);
break;
case"setVideoBuffer":
r.videoBuffer = 1e3 * t.time | 0;
break;
case"close":
r.close()
}
}
}
}
"undefined" == typeof importScripts ? ve || (ve = !0, {}, l(), U(), $(), q(), Ae(), v(), R(), ge = class {
constructor(e) {
if (this._opt = Object.assign(v().DEFAULT_OPTIONS, e), this.$container = e.container, "string" == typeof e.container && (this.$container = document.querySelector(e.container)), !this.$container) throw new Error("Jessibuca need container option");
delete this._opt.container, this._opt.debug && console.log("options", this._opt), Ae().default(this), l().default(this), U().default(this), q().default(this), $().default(this)
}
set fullscreen(e) {
e ? (R().checkFull() || this.$container.requestFullscreen(), R().$domToggle(this.$doms.minScreenDom, !0), R().$domToggle(this.$doms.fullscreenDom, !1)) : (R().checkFull() && document.exitFullscreen(), R().$domToggle(this.$doms.minScreenDom, !1), R().$domToggle(this.$doms.fullscreenDom, !0)), this._fullscreen !== e && (this.onFullscreen(e), this._trigger(v().EVEMTS.fullscreen, e)), this._fullscreen = e
}
get fullscreen() {
return this._fullscreen
}
set playing(e) {
e ? (R().$domToggle(this.$doms.playBigDom, !1), R().$domToggle(this.$doms.playDom, !1), R().$domToggle(this.$doms.pauseDom, !0), R().$domToggle(this.$doms.screenshotsDom, !0), R().$domToggle(this.$doms.recordDom, !0), this._quieting ? (R().$domToggle(this.$doms.quietAudioDom, !0), R().$domToggle(this.$doms.playAudioDom, !1)) : (R().$domToggle(this.$doms.quietAudioDom, !1), R().$domToggle(this.$doms.playAudioDom, !0))) : (this.$doms.speedDom && (this.$doms.speedDom.innerText = ""), this._playUrl && (R().$domToggle(this.$doms.playDom, !0), R().$domToggle(this.$doms.playBigDom, !0), R().$domToggle(this.$doms.pauseDom, !1)), R().$domToggle(this.$doms.recordDom, !1), R().$domToggle(this.$doms.recordingDom, !1), R().$domToggle(this.$doms.screenshotsDom, !1), R().$domToggle(this.$doms.quietAudioDom, !1), R().$domToggle(this.$doms.playAudioDom, !1)), this._playing !== e && (e ? (this.onPlay(), this._trigger(v().EVEMTS.play)) : (this.onPause(), this._trigger(v().EVEMTS.pause))), this._playing = e
}
get playing() {
return this._playing
}
set quieting(e) {
e ? (R().$domToggle(this.$doms.quietAudioDom, !0), R().$domToggle(this.$doms.playAudioDom, !1)) : (R().$domToggle(this.$doms.quietAudioDom, !1), R().$domToggle(this.$doms.playAudioDom, !0)), this._quieting !== e && (this.onMute(e), this._trigger(v().EVEMTS.mute, e)), this._quieting = e
}
get quieting() {
return this._quieting
}
set loading(e) {
e ? (R().$hideBtns(this.$doms), R().$domToggle(this.$doms.fullscreenDom, !0), R().$domToggle(this.$doms.pauseDom, !0), R().$domToggle(this.$doms.loadingDom, !0)) : R().$initBtns(this.$doms), this._loading = e
}
get loading() {
return this._loading
}
set recording(e) {
e ? (R().$domToggle(this.$doms.recordDom, !1), R().$domToggle(this.$doms.recordingDom, !0)) : (R().$domToggle(this.$doms.recordDom, !0), R().$domToggle(this.$doms.recordingDom, !1)), this._recording !== e && (this.onRecord(e), this._trigger(v().EVEMTS.record, e), this._recording = e)
}
get recording() {
return this._recording
}
setDebug(e) {
this._opt.isDebug = !!e
}
setTimeout(e) {
this._opt.timeout = Number(e)
}
setVod(e) {
this._opt.vod = !!e
}
setNoOffscreen(e) {
this._opt.forceNoOffscreen = !!e
}
setScaleMode(e) {
0 === (e = Number(e)) ? (this._opt.isFullResize = !1, this._opt.isResize = !1) : 1 === e ? (this._opt.isFullResize = !1, this._opt.isResize = !0) : 2 === e && (this._opt.isFullResize = !0), this._resize()
}
mute() {
this._mute()
}
cancelMute() {
this._cancelMute()
}
audioResume() {
this._cancelMute()
}
pause() {
this._pause()
}
play(e) {
this._play(e)
}
close() {
this._close()
}
destroy() {
this._close(), this._destroyAudioContext(), this._destroyContextGL(), this._decoderWorker.terminate(), this._removeEventListener(), this._initCheckVariable(), this._off(), this._removeContainerChild()
}
clearView() {
this._clearView()
}
resize() {
this._resize()
}
setBufferTime(e) {
e = Number(e), this._decoderWorker.postMessage({cmd: v().POST_MESSAGE.setVideoBuffer, time: e})
}
setRotate(e) {
e = parseInt(e, 10), this._opt.rotate !== e && -1 !== [0, 90, 270].indexOf(e) && (this._opt.rotate = e, this.resize())
}
setVolume(e) {
if (this._gainNode) {
if (e = parseFloat(e), isNaN(e)) return;
this._gainNode.gain.setValueAtTime(e, this._audioContext.currentTime)
}
}
setKeepScreenOn() {
this._opt.keepScreenOn = !0
}
setFullscreen(e) {
const t = !!e;
this.fullscreen !== t && (this.fullscreen = t)
}
hasLoaded() {
return this._hasLoaded
}
screenshot(e, t, r) {
this._screenshot(e, t, r)
}
on(e, t) {
this._on(e, t)
}
}, window.Jessibuca = ge) : _a || (_a = !0, ka())
}();