!(function (e, r) {
  'object' == typeof exports && 'undefined' != typeof module
    ? r(require('path'), require('fs'), require('crypto'))
    : 'function' == typeof define && define.amd
    ? define(['path', 'fs', 'crypto'], r)
    : r((e = 'undefined' != typeof globalThis ? globalThis : e || self).path, e.fs, e.crypto$1);
})(this, function (e, r, t) {
  'use strict';
  function n(e) {
    return e && 'object' == typeof e && 'default' in e ? e : { default: e };
  }
  var o = n(e),
    a = n(r),
    i = n(t);
  var s = (function (e, r) {
    return e((r = { exports: {} }), r.exports), r.exports;
  })(function (e) {
    var r = void 0 !== r ? r : {},
      t =
        ((r = {
          print: function (e) {
            console.log('Jessibuca: [worker]:', e);
          },
          printErr: function (e) {
            console.warn('Jessibuca: [worker]:', e), postMessage({ cmd: 'wasmError', message: e });
          },
        }),
        Object.assign({}, r)),
      n = './this.program',
      s = 'object' == typeof window,
      l = 'function' == typeof importScripts,
      u =
        'object' == typeof process &&
        'object' == typeof process.versions &&
        'string' == typeof process.versions.node,
      c = !s && !u && !l;
    if (r.ENVIRONMENT)
      throw new Error(
        'Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)',
      );
    var d,
      f,
      p,
      m,
      h,
      g,
      v = '';
    if (u) {
      if ('object' != typeof process)
        throw new Error(
          'not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)',
        );
      (v = l ? o.default.dirname(v) + '/' : __dirname + '/'),
        (g = () => {
          h || ((m = a.default), (h = o.default));
        }),
        (d = function (e, r) {
          return g(), (e = h.normalize(e)), m.readFileSync(e, r ? void 0 : 'utf8');
        }),
        (p = (e) => {
          var r = d(e, !0);
          return r.buffer || (r = new Uint8Array(r)), D(r.buffer), r;
        }),
        (f = (e, r, t) => {
          g(),
            (e = h.normalize(e)),
            m.readFile(e, function (e, n) {
              e ? t(e) : r(n.buffer);
            });
        }),
        process.argv.length > 1 && (n = process.argv[1].replace(/\\/g, '/')),
        process.argv.slice(2),
        (e.exports = r),
        process.on('uncaughtException', function (e) {
          if (!(e instanceof St)) throw e;
        }),
        process.on('unhandledRejection', function (e) {
          throw e;
        }),
        (r.inspect = function () {
          return '[Emscripten Module object]';
        });
    } else if (c) {
      if (
        'object' == typeof process ||
        'object' == typeof window ||
        'function' == typeof importScripts
      )
        throw new Error(
          'not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)',
        );
      'undefined' != typeof read &&
        (d = function (e) {
          return read(e);
        }),
        (p = function (e) {
          let r;
          return 'function' == typeof readbuffer
            ? new Uint8Array(readbuffer(e))
            : ((r = read(e, 'binary')), D('object' == typeof r), r);
        }),
        (f = function (e, r, t) {
          setTimeout(() => r(p(e)), 0);
        }),
        'undefined' != typeof scriptArgs && scriptArgs,
        'undefined' != typeof print &&
          ('undefined' == typeof console && (console = {}),
          (console.log = print),
          (console.warn = console.error = 'undefined' != typeof printErr ? printErr : print));
    } else {
      if (!s && !l) throw new Error('environment detection error');
      if (
        (l
          ? (v = self.location.href)
          : 'undefined' != typeof document &&
            document.currentScript &&
            (v = document.currentScript.src),
        (v =
          0 !== v.indexOf('blob:')
            ? v.substr(0, v.replace(/[?#].*/, '').lastIndexOf('/') + 1)
            : ''),
        'object' != typeof window && 'function' != typeof importScripts)
      )
        throw new Error(
          'not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)',
        );
      (d = (e) => {
        var r = new XMLHttpRequest();
        return r.open('GET', e, !1), r.send(null), r.responseText;
      }),
        l &&
          (p = (e) => {
            var r = new XMLHttpRequest();
            return (
              r.open('GET', e, !1),
              (r.responseType = 'arraybuffer'),
              r.send(null),
              new Uint8Array(r.response)
            );
          }),
        (f = (e, r, t) => {
          var n = new XMLHttpRequest();
          n.open('GET', e, !0),
            (n.responseType = 'arraybuffer'),
            (n.onload = () => {
              200 == n.status || (0 == n.status && n.response) ? r(n.response) : t();
            }),
            (n.onerror = t),
            n.send(null);
        });
    }
    var y,
      E,
      w,
      b = r.print || console.log.bind(console),
      _ = r.printErr || console.warn.bind(console);
    function T(e) {
      T.shown || (T.shown = {}), T.shown[e] || ((T.shown[e] = 1), _(e));
    }
    function k(e, t) {
      Object.getOwnPropertyDescriptor(r, e) ||
        Object.defineProperty(r, e, {
          configurable: !0,
          get: function () {
            ge(
              'Module.' +
                e +
                ' has been replaced with plain ' +
                t +
                ' (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)',
            );
          },
        });
    }
    function S(e, r) {
      var t = "'" + e + "' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)";
      return (
        r &&
          (t +=
            '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'),
        t
      );
    }
    function C(e, t) {
      Object.getOwnPropertyDescriptor(r, e) ||
        Object.defineProperty(r, e, {
          configurable: !0,
          get: function () {
            ge(S(e, t));
          },
        });
    }
    function P(e, t) {
      Object.getOwnPropertyDescriptor(r, e) || (r[e] = () => ge(S(e, t)));
    }
    Object.assign(r, t),
      (t = null),
      (y = 'fetchSettings'),
      Object.getOwnPropertyDescriptor(r, y) &&
        ge(
          '`Module.' + y + '` was supplied but `' + y + '` not included in INCOMING_MODULE_JS_API',
        ),
      r.arguments,
      k('arguments', 'arguments_'),
      r.thisProgram && (n = r.thisProgram),
      k('thisProgram', 'thisProgram'),
      r.quit,
      k('quit', 'quit_'),
      D(
        void 0 === r.memoryInitializerPrefixURL,
        'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead',
      ),
      D(
        void 0 === r.pthreadMainPrefixURL,
        'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead',
      ),
      D(
        void 0 === r.cdInitializerPrefixURL,
        'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead',
      ),
      D(
        void 0 === r.filePackagePrefixURL,
        'Module.filePackagePrefixURL option was removed, use Module.locateFile instead',
      ),
      D(void 0 === r.read, 'Module.read option was removed (modify read_ in JS)'),
      D(void 0 === r.readAsync, 'Module.readAsync option was removed (modify readAsync in JS)'),
      D(void 0 === r.readBinary, 'Module.readBinary option was removed (modify readBinary in JS)'),
      D(
        void 0 === r.setWindowTitle,
        'Module.setWindowTitle option was removed (modify setWindowTitle in JS)',
      ),
      D(void 0 === r.TOTAL_MEMORY, 'Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY'),
      k('read', 'read_'),
      k('readAsync', 'readAsync'),
      k('readBinary', 'readBinary'),
      k('setWindowTitle', 'setWindowTitle'),
      D(
        !c,
        "shell environment detected but not enabled at build time.  Add 'shell' to `-sENVIRONMENT` to enable.",
      ),
      r.wasmBinary && (E = r.wasmBinary),
      k('wasmBinary', 'wasmBinary'),
      r.noExitRuntime,
      k('noExitRuntime', 'noExitRuntime'),
      'object' != typeof WebAssembly && ge('no native wasm support detected');
    var A = !1;
    function D(e, r) {
      e || ge('Assertion failed' + (r ? ': ' + r : ''));
    }
    var O = 'undefined' != typeof TextDecoder ? new TextDecoder('utf8') : void 0;
    function F(e, r, t) {
      for (var n = r + t, o = r; e[o] && !(o >= n); ) ++o;
      if (o - r > 16 && e.buffer && O) return O.decode(e.subarray(r, o));
      for (var a = ''; r < o; ) {
        var i = e[r++];
        if (128 & i) {
          var s = 63 & e[r++];
          if (192 != (224 & i)) {
            var l = 63 & e[r++];
            if (
              (224 == (240 & i)
                ? (i = ((15 & i) << 12) | (s << 6) | l)
                : (240 != (248 & i) &&
                    T(
                      'Invalid UTF-8 leading byte 0x' +
                        i.toString(16) +
                        ' encountered when deserializing a UTF-8 string in wasm memory to a JS string!',
                    ),
                  (i = ((7 & i) << 18) | (s << 12) | (l << 6) | (63 & e[r++]))),
              i < 65536)
            )
              a += String.fromCharCode(i);
            else {
              var u = i - 65536;
              a += String.fromCharCode(55296 | (u >> 10), 56320 | (1023 & u));
            }
          } else a += String.fromCharCode(((31 & i) << 6) | s);
        } else a += String.fromCharCode(i);
      }
      return a;
    }
    function M(e, r) {
      return e ? F(U, e, r) : '';
    }
    function R(e, r, t, n) {
      if (!(n > 0)) return 0;
      for (var o = t, a = t + 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 (t >= a) break;
          r[t++] = s;
        } else if (s <= 2047) {
          if (t + 1 >= a) break;
          (r[t++] = 192 | (s >> 6)), (r[t++] = 128 | (63 & s));
        } else if (s <= 65535) {
          if (t + 2 >= a) break;
          (r[t++] = 224 | (s >> 12)), (r[t++] = 128 | ((s >> 6) & 63)), (r[t++] = 128 | (63 & s));
        } else {
          if (t + 3 >= a) break;
          s > 1114111 &&
            T(
              'Invalid Unicode code point 0x' +
                s.toString(16) +
                ' encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).',
            ),
            (r[t++] = 240 | (s >> 18)),
            (r[t++] = 128 | ((s >> 12) & 63)),
            (r[t++] = 128 | ((s >> 6) & 63)),
            (r[t++] = 128 | (63 & s));
        }
      }
      return (r[t] = 0), t - o;
    }
    function N(e, r, t) {
      return (
        D(
          'number' == typeof t,
          'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!',
        ),
        R(e, U, r, t)
      );
    }
    function I(e) {
      for (var r = 0, t = 0; t < e.length; ++t) {
        var n = e.charCodeAt(t);
        n >= 55296 && n <= 57343 && (n = (65536 + ((1023 & n) << 10)) | (1023 & e.charCodeAt(++t))),
          n <= 127 ? ++r : (r += n <= 2047 ? 2 : n <= 65535 ? 3 : 4);
      }
      return r;
    }
    var L,
      x,
      U,
      B,
      j,
      $,
      W,
      z,
      H,
      G = 'undefined' != typeof TextDecoder ? new TextDecoder('utf-16le') : void 0;
    function V(e, r) {
      D(e % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!');
      for (var t = e, n = t >> 1, o = n + r / 2; !(n >= o) && j[n]; ) ++n;
      if ((t = n << 1) - e > 32 && G) return G.decode(U.subarray(e, t));
      for (var a = '', i = 0; !(i >= r / 2); ++i) {
        var s = B[(e + 2 * i) >> 1];
        if (0 == s) break;
        a += String.fromCharCode(s);
      }
      return a;
    }
    function Y(e, r, t) {
      if (
        (D(r % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!'),
        D(
          'number' == typeof t,
          'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!',
        ),
        void 0 === t && (t = 2147483647),
        t < 2)
      )
        return 0;
      for (var n = r, o = (t -= 2) < 2 * e.length ? t / 2 : e.length, a = 0; a < o; ++a) {
        var i = e.charCodeAt(a);
        (B[r >> 1] = i), (r += 2);
      }
      return (B[r >> 1] = 0), r - n;
    }
    function X(e) {
      return 2 * e.length;
    }
    function q(e, r) {
      D(e % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!');
      for (var t = 0, n = ''; !(t >= r / 4); ) {
        var o = $[(e + 4 * t) >> 2];
        if (0 == o) break;
        if ((++t, o >= 65536)) {
          var a = o - 65536;
          n += String.fromCharCode(55296 | (a >> 10), 56320 | (1023 & a));
        } else n += String.fromCharCode(o);
      }
      return n;
    }
    function K(e, r, t) {
      if (
        (D(r % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!'),
        D(
          'number' == typeof t,
          'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!',
        ),
        void 0 === t && (t = 2147483647),
        t < 4)
      )
        return 0;
      for (var n = r, o = n + t - 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 ((($[r >> 2] = i), (r += 4) + 4 > o)) break;
      }
      return ($[r >> 2] = 0), r - n;
    }
    function J(e) {
      for (var r = 0, t = 0; t < e.length; ++t) {
        var n = e.charCodeAt(t);
        n >= 55296 && n <= 57343 && ++t, (r += 4);
      }
      return r;
    }
    function Q(e) {
      var r = I(e) + 1,
        t = gt(r);
      return t && R(e, x, t, r), t;
    }
    function Z(e) {
      (L = e),
        (r.HEAP8 = x = new Int8Array(e)),
        (r.HEAP16 = B = new Int16Array(e)),
        (r.HEAP32 = $ = new Int32Array(e)),
        (r.HEAPU8 = U = new Uint8Array(e)),
        (r.HEAPU16 = j = new Uint16Array(e)),
        (r.HEAPU32 = W = new Uint32Array(e)),
        (r.HEAPF32 = z = new Float32Array(e)),
        (r.HEAPF64 = H = new Float64Array(e));
    }
    var ee = 5242880;
    r.TOTAL_STACK &&
      D(ee === r.TOTAL_STACK, 'the stack size can no longer be determined at runtime');
    var re,
      te = r.INITIAL_MEMORY || 67108864;
    function ne() {
      var e = kt();
      D(0 == (3 & e)), ($[e >> 2] = 34821223), ($[(e + 4) >> 2] = 2310721022), ($[0] = 1668509029);
    }
    function oe() {
      if (!A) {
        var e = kt(),
          r = W[e >> 2],
          t = W[(e + 4) >> 2];
        (34821223 == r && 2310721022 == t) ||
          ge(
            'Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x' +
              t.toString(16) +
              ' 0x' +
              r.toString(16),
          ),
          1668509029 !== $[0] &&
            ge('Runtime error: The application has corrupted its heap memory area (address zero)!');
      }
    }
    k('INITIAL_MEMORY', 'INITIAL_MEMORY'),
      D(
        te >= ee,
        'INITIAL_MEMORY should be larger than TOTAL_STACK, was ' +
          te +
          '! (TOTAL_STACK=' +
          '5242880)',
      ),
      D(
        'undefined' != typeof Int32Array &&
          'undefined' != typeof Float64Array &&
          null != Int32Array.prototype.subarray &&
          null != Int32Array.prototype.set,
        'JS engine does not provide full typed array support',
      ),
      D(
        !r.wasmMemory,
        'Use of `wasmMemory` detected.  Use -sIMPORTED_MEMORY to define wasmMemory externally',
      ),
      D(
        67108864 == te,
        'Detected runtime INITIAL_MEMORY setting.  Use -sIMPORTED_MEMORY to define wasmMemory dynamically',
      ),
      (function () {
        var e = new Int16Array(1),
          r = new Int8Array(e.buffer);
        if (((e[0] = 25459), 115 !== r[0] || 99 !== r[1]))
          throw 'Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)';
      })();
    var ae = [],
      ie = [],
      se = [],
      le = !1;
    D(
      Math.imul,
      'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill',
    ),
      D(
        Math.fround,
        'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill',
      ),
      D(
        Math.clz32,
        'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill',
      ),
      D(
        Math.trunc,
        'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill',
      );
    var ue = 0,
      ce = null,
      de = null,
      fe = {};
    function pe(e) {
      for (var r = e; ; ) {
        if (!fe[e]) return e;
        e = r + Math.random();
      }
    }
    function me(e) {
      ue++,
        r.monitorRunDependencies && r.monitorRunDependencies(ue),
        e
          ? (D(!fe[e]),
            (fe[e] = 1),
            null === ce &&
              'undefined' != typeof setInterval &&
              (ce = setInterval(function () {
                if (A) return clearInterval(ce), void (ce = null);
                var e = !1;
                for (var r in fe)
                  e || ((e = !0), _('still waiting on run dependencies:')), _('dependency: ' + r);
                e && _('(end of list)');
              }, 1e4)))
          : _('warning: run dependency added without ID');
    }
    function he(e) {
      if (
        (ue--,
        r.monitorRunDependencies && r.monitorRunDependencies(ue),
        e ? (D(fe[e]), delete fe[e]) : _('warning: run dependency removed without ID'),
        0 == ue && (null !== ce && (clearInterval(ce), (ce = null)), de))
      ) {
        var t = de;
        (de = null), t();
      }
    }
    function ge(e) {
      throw (
        (r.onAbort && r.onAbort(e),
        _((e = 'Aborted(' + e + ')')),
        (A = !0),
        new WebAssembly.RuntimeError(e))
      );
    }
    var ve, ye, Ee;
    function we(e) {
      return e.startsWith('data:application/octet-stream;base64,');
    }
    function be(e) {
      return e.startsWith('file://');
    }
    function _e(e, t) {
      return function () {
        var n = e,
          o = t;
        return (
          t || (o = r.asm),
          D(le, 'native function `' + n + '` called before runtime initialization'),
          o[e] || D(o[e], 'exported native function `' + n + '` not found'),
          o[e].apply(null, arguments)
        );
      };
    }
    function Te(e) {
      try {
        if (e == ve && E) return new Uint8Array(E);
        if (p) return p(e);
        throw 'both async and sync fetching of the wasm failed';
      } catch (e) {
        ge(e);
      }
    }
    function ke(e) {
      for (; e.length > 0; ) {
        var t = e.shift();
        if ('function' != typeof t) {
          var n = t.func;
          'number' == typeof n
            ? void 0 === t.arg
              ? Ce(n)()
              : Ce(n)(t.arg)
            : n(void 0 === t.arg ? null : t.arg);
        } else t(r);
      }
    }
    function Se(e) {
      return e.replace(/\b_Z[\w\d_]+/g, function (e) {
        var r,
          t =
            ((r = e),
            T('warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling'),
            r);
        return e === t ? e : t + ' [' + e + ']';
      });
    }
    function Ce(e) {
      return re.get(e);
    }
    function Pe() {
      var e = new Error();
      if (!e.stack) {
        try {
          throw new Error();
        } catch (r) {
          e = r;
        }
        if (!e.stack) return '(no stack trace available)';
      }
      return e.stack.toString();
    }
    we((ve = 'decoder.wasm')) ||
      (ve = (function (e) {
        return r.locateFile ? r.locateFile(e, v) : v + e;
      })(ve));
    var Ae = {
      isAbs: (e) => '/' === e.charAt(0),
      splitPath: (e) =>
        /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),
      normalizeArray: (e, r) => {
        for (var t = 0, n = e.length - 1; n >= 0; n--) {
          var o = e[n];
          '.' === o
            ? e.splice(n, 1)
            : '..' === o
            ? (e.splice(n, 1), t++)
            : t && (e.splice(n, 1), t--);
        }
        if (r) for (; t; t--) e.unshift('..');
        return e;
      },
      normalize: (e) => {
        var r = Ae.isAbs(e),
          t = '/' === e.substr(-1);
        return (
          (e = Ae.normalizeArray(
            e.split('/').filter((e) => !!e),
            !r,
          ).join('/')) ||
            r ||
            (e = '.'),
          e && t && (e += '/'),
          (r ? '/' : '') + e
        );
      },
      dirname: (e) => {
        var r = Ae.splitPath(e),
          t = r[0],
          n = r[1];
        return t || n ? (n && (n = n.substr(0, n.length - 1)), t + n) : '.';
      },
      basename: (e) => {
        if ('/' === e) return '/';
        var r = (e = (e = Ae.normalize(e)).replace(/\/$/, '')).lastIndexOf('/');
        return -1 === r ? e : e.substr(r + 1);
      },
      join: function () {
        var e = Array.prototype.slice.call(arguments, 0);
        return Ae.normalize(e.join('/'));
      },
      join2: (e, r) => Ae.normalize(e + '/' + r),
    };
    var De = {
        resolve: function () {
          for (var e = '', r = !1, t = arguments.length - 1; t >= -1 && !r; t--) {
            var n = t >= 0 ? arguments[t] : Ie.cwd();
            if ('string' != typeof n)
              throw new TypeError('Arguments to path.resolve must be strings');
            if (!n) return '';
            (e = n + '/' + e), (r = Ae.isAbs(n));
          }
          return (
            (r ? '/' : '') +
              (e = Ae.normalizeArray(
                e.split('/').filter((e) => !!e),
                !r,
              ).join('/')) || '.'
          );
        },
        relative: (e, r) => {
          function t(e) {
            for (var r = 0; r < e.length && '' === e[r]; r++);
            for (var t = e.length - 1; t >= 0 && '' === e[t]; t--);
            return r > t ? [] : e.slice(r, t - r + 1);
          }
          (e = De.resolve(e).substr(1)), (r = De.resolve(r).substr(1));
          for (
            var n = t(e.split('/')),
              o = t(r.split('/')),
              a = Math.min(n.length, o.length),
              i = a,
              s = 0;
            s < a;
            s++
          )
            if (n[s] !== o[s]) {
              i = s;
              break;
            }
          var l = [];
          for (s = i; s < n.length; s++) l.push('..');
          return (l = l.concat(o.slice(i))).join('/');
        },
      },
      Oe = {
        ttys: [],
        init: function () {},
        shutdown: function () {},
        register: function (e, r) {
          (Oe.ttys[e] = { input: [], output: [], ops: r }), Ie.registerDevice(e, Oe.stream_ops);
        },
        stream_ops: {
          open: function (e) {
            var r = Oe.ttys[e.node.rdev];
            if (!r) throw new Ie.ErrnoError(43);
            (e.tty = r), (e.seekable = !1);
          },
          close: function (e) {
            e.tty.ops.flush(e.tty);
          },
          flush: function (e) {
            e.tty.ops.flush(e.tty);
          },
          read: function (e, r, t, n, o) {
            if (!e.tty || !e.tty.ops.get_char) throw new Ie.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 Ie.ErrnoError(29);
              }
              if (void 0 === s && 0 === a) throw new Ie.ErrnoError(6);
              if (null == s) break;
              a++, (r[t + i] = s);
            }
            return a && (e.node.timestamp = Date.now()), a;
          },
          write: function (e, r, t, n, o) {
            if (!e.tty || !e.tty.ops.put_char) throw new Ie.ErrnoError(60);
            try {
              for (var a = 0; a < n; a++) e.tty.ops.put_char(e.tty, r[t + a]);
            } catch (e) {
              throw new Ie.ErrnoError(29);
            }
            return n && (e.node.timestamp = Date.now()), a;
          },
        },
        default_tty_ops: {
          get_char: function (e) {
            if (!e.input.length) {
              var r = null;
              if (u) {
                var t = Buffer.alloc(256),
                  n = 0;
                try {
                  n = m.readSync(process.stdin.fd, t, 0, 256, -1);
                } catch (e) {
                  if (!e.toString().includes('EOF')) throw e;
                  n = 0;
                }
                r = n > 0 ? t.slice(0, n).toString('utf-8') : null;
              } else
                'undefined' != typeof window && 'function' == typeof window.prompt
                  ? null !== (r = window.prompt('Input: ')) && (r += '\n')
                  : 'function' == typeof readline && null !== (r = readline()) && (r += '\n');
              if (!r) return null;
              e.input = pt(r, !0);
            }
            return e.input.shift();
          },
          put_char: function (e, r) {
            null === r || 10 === r
              ? (b(F(e.output, 0)), (e.output = []))
              : 0 != r && e.output.push(r);
          },
          flush: function (e) {
            e.output && e.output.length > 0 && (b(F(e.output, 0)), (e.output = []));
          },
        },
        default_tty1_ops: {
          put_char: function (e, r) {
            null === r || 10 === r
              ? (_(F(e.output, 0)), (e.output = []))
              : 0 != r && e.output.push(r);
          },
          flush: function (e) {
            e.output && e.output.length > 0 && (_(F(e.output, 0)), (e.output = []));
          },
        },
      };
    function Fe(e) {
      e = (function (e, r) {
        return D(r, 'alignment argument is required'), Math.ceil(e / r) * r;
      })(e, 65536);
      var r = bt(65536, e);
      return r
        ? ((function (e, r) {
            U.fill(0, e, e + r);
          })(r, e),
          r)
        : 0;
    }
    var Me = {
      ops_table: null,
      mount: function (e) {
        return Me.createNode(null, '/', 16895, 0);
      },
      createNode: function (e, r, t, n) {
        if (Ie.isBlkdev(t) || Ie.isFIFO(t)) throw new Ie.ErrnoError(63);
        Me.ops_table ||
          (Me.ops_table = {
            dir: {
              node: {
                getattr: Me.node_ops.getattr,
                setattr: Me.node_ops.setattr,
                lookup: Me.node_ops.lookup,
                mknod: Me.node_ops.mknod,
                rename: Me.node_ops.rename,
                unlink: Me.node_ops.unlink,
                rmdir: Me.node_ops.rmdir,
                readdir: Me.node_ops.readdir,
                symlink: Me.node_ops.symlink,
              },
              stream: { llseek: Me.stream_ops.llseek },
            },
            file: {
              node: { getattr: Me.node_ops.getattr, setattr: Me.node_ops.setattr },
              stream: {
                llseek: Me.stream_ops.llseek,
                read: Me.stream_ops.read,
                write: Me.stream_ops.write,
                allocate: Me.stream_ops.allocate,
                mmap: Me.stream_ops.mmap,
                msync: Me.stream_ops.msync,
              },
            },
            link: {
              node: {
                getattr: Me.node_ops.getattr,
                setattr: Me.node_ops.setattr,
                readlink: Me.node_ops.readlink,
              },
              stream: {},
            },
            chrdev: {
              node: { getattr: Me.node_ops.getattr, setattr: Me.node_ops.setattr },
              stream: Ie.chrdev_stream_ops,
            },
          });
        var o = Ie.createNode(e, r, t, n);
        return (
          Ie.isDir(o.mode)
            ? ((o.node_ops = Me.ops_table.dir.node),
              (o.stream_ops = Me.ops_table.dir.stream),
              (o.contents = {}))
            : Ie.isFile(o.mode)
            ? ((o.node_ops = Me.ops_table.file.node),
              (o.stream_ops = Me.ops_table.file.stream),
              (o.usedBytes = 0),
              (o.contents = null))
            : Ie.isLink(o.mode)
            ? ((o.node_ops = Me.ops_table.link.node), (o.stream_ops = Me.ops_table.link.stream))
            : Ie.isChrdev(o.mode) &&
              ((o.node_ops = Me.ops_table.chrdev.node),
              (o.stream_ops = Me.ops_table.chrdev.stream)),
          (o.timestamp = Date.now()),
          e && ((e.contents[r] = o), (e.timestamp = o.timestamp)),
          o
        );
      },
      getFileDataAsTypedArray: function (e) {
        return e.contents
          ? e.contents.subarray
            ? e.contents.subarray(0, e.usedBytes)
            : new Uint8Array(e.contents)
          : new Uint8Array(0);
      },
      expandFileStorage: function (e, r) {
        var t = e.contents ? e.contents.length : 0;
        if (!(t >= r)) {
          (r = Math.max(r, (t * (t < 1048576 ? 2 : 1.125)) >>> 0)),
            0 != t && (r = Math.max(r, 256));
          var n = e.contents;
          (e.contents = new Uint8Array(r)),
            e.usedBytes > 0 && e.contents.set(n.subarray(0, e.usedBytes), 0);
        }
      },
      resizeFileStorage: function (e, r) {
        if (e.usedBytes != r)
          if (0 == r) (e.contents = null), (e.usedBytes = 0);
          else {
            var t = e.contents;
            (e.contents = new Uint8Array(r)),
              t && e.contents.set(t.subarray(0, Math.min(r, e.usedBytes))),
              (e.usedBytes = r);
          }
      },
      node_ops: {
        getattr: function (e) {
          var r = {};
          return (
            (r.dev = Ie.isChrdev(e.mode) ? e.id : 1),
            (r.ino = e.id),
            (r.mode = e.mode),
            (r.nlink = 1),
            (r.uid = 0),
            (r.gid = 0),
            (r.rdev = e.rdev),
            Ie.isDir(e.mode)
              ? (r.size = 4096)
              : Ie.isFile(e.mode)
              ? (r.size = e.usedBytes)
              : Ie.isLink(e.mode)
              ? (r.size = e.link.length)
              : (r.size = 0),
            (r.atime = new Date(e.timestamp)),
            (r.mtime = new Date(e.timestamp)),
            (r.ctime = new Date(e.timestamp)),
            (r.blksize = 4096),
            (r.blocks = Math.ceil(r.size / r.blksize)),
            r
          );
        },
        setattr: function (e, r) {
          void 0 !== r.mode && (e.mode = r.mode),
            void 0 !== r.timestamp && (e.timestamp = r.timestamp),
            void 0 !== r.size && Me.resizeFileStorage(e, r.size);
        },
        lookup: function (e, r) {
          throw Ie.genericErrors[44];
        },
        mknod: function (e, r, t, n) {
          return Me.createNode(e, r, t, n);
        },
        rename: function (e, r, t) {
          if (Ie.isDir(e.mode)) {
            var n;
            try {
              n = Ie.lookupNode(r, t);
            } catch (e) {}
            if (n) for (var o in n.contents) throw new Ie.ErrnoError(55);
          }
          delete e.parent.contents[e.name],
            (e.parent.timestamp = Date.now()),
            (e.name = t),
            (r.contents[t] = e),
            (r.timestamp = e.parent.timestamp),
            (e.parent = r);
        },
        unlink: function (e, r) {
          delete e.contents[r], (e.timestamp = Date.now());
        },
        rmdir: function (e, r) {
          var t = Ie.lookupNode(e, r);
          for (var n in t.contents) throw new Ie.ErrnoError(55);
          delete e.contents[r], (e.timestamp = Date.now());
        },
        readdir: function (e) {
          var r = ['.', '..'];
          for (var t in e.contents) e.contents.hasOwnProperty(t) && r.push(t);
          return r;
        },
        symlink: function (e, r, t) {
          var n = Me.createNode(e, r, 41471, 0);
          return (n.link = t), n;
        },
        readlink: function (e) {
          if (!Ie.isLink(e.mode)) throw new Ie.ErrnoError(28);
          return e.link;
        },
      },
      stream_ops: {
        read: function (e, r, t, n, o) {
          var a = e.node.contents;
          if (o >= e.node.usedBytes) return 0;
          var i = Math.min(e.node.usedBytes - o, n);
          if ((D(i >= 0), i > 8 && a.subarray)) r.set(a.subarray(o, o + i), t);
          else for (var s = 0; s < i; s++) r[t + s] = a[o + s];
          return i;
        },
        write: function (e, r, t, n, o, a) {
          if ((D(!(r instanceof ArrayBuffer)), r.buffer === x.buffer && (a = !1), !n)) return 0;
          var i = e.node;
          if (((i.timestamp = Date.now()), r.subarray && (!i.contents || i.contents.subarray))) {
            if (a)
              return (
                D(0 === o, 'canOwn must imply no weird position inside the file'),
                (i.contents = r.subarray(t, t + n)),
                (i.usedBytes = n),
                n
              );
            if (0 === i.usedBytes && 0 === o)
              return (i.contents = r.slice(t, t + n)), (i.usedBytes = n), n;
            if (o + n <= i.usedBytes) return i.contents.set(r.subarray(t, t + n), o), n;
          }
          if ((Me.expandFileStorage(i, o + n), i.contents.subarray && r.subarray))
            i.contents.set(r.subarray(t, t + n), o);
          else for (var s = 0; s < n; s++) i.contents[o + s] = r[t + s];
          return (i.usedBytes = Math.max(i.usedBytes, o + n)), n;
        },
        llseek: function (e, r, t) {
          var n = r;
          if (
            (1 === t
              ? (n += e.position)
              : 2 === t && Ie.isFile(e.node.mode) && (n += e.node.usedBytes),
            n < 0)
          )
            throw new Ie.ErrnoError(28);
          return n;
        },
        allocate: function (e, r, t) {
          Me.expandFileStorage(e.node, r + t),
            (e.node.usedBytes = Math.max(e.node.usedBytes, r + t));
        },
        mmap: function (e, r, t, n, o, a) {
          if (0 !== r) throw new Ie.ErrnoError(28);
          if (!Ie.isFile(e.node.mode)) throw new Ie.ErrnoError(43);
          var i,
            s,
            l = e.node.contents;
          if (2 & a || l.buffer !== L) {
            if (
              ((n > 0 || n + t < l.length) &&
                (l = l.subarray ? l.subarray(n, n + t) : Array.prototype.slice.call(l, n, n + t)),
              (s = !0),
              !(i = Fe(t)))
            )
              throw new Ie.ErrnoError(48);
            x.set(l, i);
          } else (s = !1), (i = l.byteOffset);
          return { ptr: i, allocated: s };
        },
        msync: function (e, r, t, n, o) {
          if (!Ie.isFile(e.node.mode)) throw new Ie.ErrnoError(43);
          return 2 & o || Me.stream_ops.write(e, r, 0, n, t, !1), 0;
        },
      },
    };
    var Re = {
        0: 'Success',
        1: 'Arg list too long',
        2: 'Permission denied',
        3: 'Address already in use',
        4: 'Address not available',
        5: 'Address family not supported by protocol family',
        6: 'No more processes',
        7: 'Socket already connected',
        8: 'Bad file number',
        9: 'Trying to read unreadable message',
        10: 'Mount device busy',
        11: 'Operation canceled',
        12: 'No children',
        13: 'Connection aborted',
        14: 'Connection refused',
        15: 'Connection reset by peer',
        16: 'File locking deadlock error',
        17: 'Destination address required',
        18: 'Math arg out of domain of func',
        19: 'Quota exceeded',
        20: 'File exists',
        21: 'Bad address',
        22: 'File too large',
        23: 'Host is unreachable',
        24: 'Identifier removed',
        25: 'Illegal byte sequence',
        26: 'Connection already in progress',
        27: 'Interrupted system call',
        28: 'Invalid argument',
        29: 'I/O error',
        30: 'Socket is already connected',
        31: 'Is a directory',
        32: 'Too many symbolic links',
        33: 'Too many open files',
        34: 'Too many links',
        35: 'Message too long',
        36: 'Multihop attempted',
        37: 'File or path name too long',
        38: 'Network interface is not configured',
        39: 'Connection reset by network',
        40: 'Network is unreachable',
        41: 'Too many open files in system',
        42: 'No buffer space available',
        43: 'No such device',
        44: 'No such file or directory',
        45: 'Exec format error',
        46: 'No record locks available',
        47: 'The link has been severed',
        48: 'Not enough core',
        49: 'No message of desired type',
        50: 'Protocol not available',
        51: 'No space left on device',
        52: 'Function not implemented',
        53: 'Socket is not connected',
        54: 'Not a directory',
        55: 'Directory not empty',
        56: 'State not recoverable',
        57: 'Socket operation on non-socket',
        59: 'Not a typewriter',
        60: 'No such device or address',
        61: 'Value too large for defined data type',
        62: 'Previous owner died',
        63: 'Not super-user',
        64: 'Broken pipe',
        65: 'Protocol error',
        66: 'Unknown protocol',
        67: 'Protocol wrong type for socket',
        68: 'Math result not representable',
        69: 'Read only file system',
        70: 'Illegal seek',
        71: 'No such process',
        72: 'Stale file handle',
        73: 'Connection timed out',
        74: 'Text file busy',
        75: 'Cross-device link',
        100: 'Device not a stream',
        101: 'Bad font file fmt',
        102: 'Invalid slot',
        103: 'Invalid request code',
        104: 'No anode',
        105: 'Block device required',
        106: 'Channel number out of range',
        107: 'Level 3 halted',
        108: 'Level 3 reset',
        109: 'Link number out of range',
        110: 'Protocol driver not attached',
        111: 'No CSI structure available',
        112: 'Level 2 halted',
        113: 'Invalid exchange',
        114: 'Invalid request descriptor',
        115: 'Exchange full',
        116: 'No data (for no delay io)',
        117: 'Timer expired',
        118: 'Out of streams resources',
        119: 'Machine is not on the network',
        120: 'Package not installed',
        121: 'The object is remote',
        122: 'Advertise error',
        123: 'Srmount error',
        124: 'Communication error on send',
        125: 'Cross mount point (not really error)',
        126: 'Given log. name not unique',
        127: 'f.d. invalid for this operation',
        128: 'Remote address changed',
        129: 'Can   access a needed shared lib',
        130: 'Accessing a corrupted shared lib',
        131: '.lib section in a.out corrupted',
        132: 'Attempting to link in too many libs',
        133: 'Attempting to exec a shared library',
        135: 'Streams pipe error',
        136: 'Too many users',
        137: 'Socket type not supported',
        138: 'Not supported',
        139: 'Protocol family not supported',
        140: "Can't send after socket shutdown",
        141: 'Too many references',
        142: 'Host is down',
        148: 'No medium (in tape drive)',
        156: 'Level 2 not synchronized',
      },
      Ne = {},
      Ie = {
        root: null,
        mounts: [],
        devices: {},
        streams: [],
        nextInode: 1,
        nameTable: null,
        currentPath: '/',
        initialized: !1,
        ignorePermissions: !0,
        ErrnoError: null,
        genericErrors: {},
        filesystems: null,
        syncFSRequests: 0,
        lookupPath: function (e) {
          let r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
          if (!(e = De.resolve(Ie.cwd(), e))) return { path: '', node: null };
          var t = { follow_mount: !0, recurse_count: 0 };
          if (((r = Object.assign(t, r)), r.recurse_count > 8)) throw new Ie.ErrnoError(32);
          for (
            var n = Ae.normalizeArray(
                e.split('/').filter((e) => !!e),
                !1,
              ),
              o = Ie.root,
              a = '/',
              i = 0;
            i < n.length;
            i++
          ) {
            var s = i === n.length - 1;
            if (s && r.parent) break;
            if (
              ((o = Ie.lookupNode(o, n[i])),
              (a = Ae.join2(a, n[i])),
              Ie.isMountpoint(o) && (!s || (s && r.follow_mount)) && (o = o.mounted.root),
              !s || r.follow)
            )
              for (var l = 0; Ie.isLink(o.mode); ) {
                var u = Ie.readlink(a);
                a = De.resolve(Ae.dirname(a), u);
                var c = Ie.lookupPath(a, { recurse_count: r.recurse_count + 1 });
                if (((o = c.node), l++ > 40)) throw new Ie.ErrnoError(32);
              }
          }
          return { path: a, node: o };
        },
        getPath: (e) => {
          for (var r; ; ) {
            if (Ie.isRoot(e)) {
              var t = e.mount.mountpoint;
              return r ? ('/' !== t[t.length - 1] ? t + '/' + r : t + r) : t;
            }
            (r = r ? e.name + '/' + r : e.name), (e = e.parent);
          }
        },
        hashName: (e, r) => {
          for (var t = 0, n = 0; n < r.length; n++) t = ((t << 5) - t + r.charCodeAt(n)) | 0;
          return ((e + t) >>> 0) % Ie.nameTable.length;
        },
        hashAddNode: (e) => {
          var r = Ie.hashName(e.parent.id, e.name);
          (e.name_next = Ie.nameTable[r]), (Ie.nameTable[r] = e);
        },
        hashRemoveNode: (e) => {
          var r = Ie.hashName(e.parent.id, e.name);
          if (Ie.nameTable[r] === e) Ie.nameTable[r] = e.name_next;
          else
            for (var t = Ie.nameTable[r]; t; ) {
              if (t.name_next === e) {
                t.name_next = e.name_next;
                break;
              }
              t = t.name_next;
            }
        },
        lookupNode: (e, r) => {
          var t = Ie.mayLookup(e);
          if (t) throw new Ie.ErrnoError(t, e);
          for (var n = Ie.hashName(e.id, r), o = Ie.nameTable[n]; o; o = o.name_next) {
            var a = o.name;
            if (o.parent.id === e.id && a === r) return o;
          }
          return Ie.lookup(e, r);
        },
        createNode: (e, r, t, n) => {
          D('object' == typeof e);
          var o = new Ie.FSNode(e, r, t, n);
          return Ie.hashAddNode(o), o;
        },
        destroyNode: (e) => {
          Ie.hashRemoveNode(e);
        },
        isRoot: (e) => e === e.parent,
        isMountpoint: (e) => !!e.mounted,
        isFile: (e) => 32768 == (61440 & e),
        isDir: (e) => 16384 == (61440 & e),
        isLink: (e) => 40960 == (61440 & e),
        isChrdev: (e) => 8192 == (61440 & e),
        isBlkdev: (e) => 24576 == (61440 & e),
        isFIFO: (e) => 4096 == (61440 & e),
        isSocket: (e) => 49152 == (49152 & e),
        flagModes: { r: 0, 'r+': 2, w: 577, 'w+': 578, a: 1089, 'a+': 1090 },
        modeStringToFlags: (e) => {
          var r = Ie.flagModes[e];
          if (void 0 === r) throw new Error('Unknown file open mode: ' + e);
          return r;
        },
        flagsToPermissionString: (e) => {
          var r = ['r', 'w', 'rw'][3 & e];
          return 512 & e && (r += 'w'), r;
        },
        nodePermissions: (e, r) =>
          Ie.ignorePermissions ||
          ((!r.includes('r') || 292 & e.mode) &&
            (!r.includes('w') || 146 & e.mode) &&
            (!r.includes('x') || 73 & e.mode))
            ? 0
            : 2,
        mayLookup: (e) => {
          var r = Ie.nodePermissions(e, 'x');
          return r || (e.node_ops.lookup ? 0 : 2);
        },
        mayCreate: (e, r) => {
          try {
            Ie.lookupNode(e, r);
            return 20;
          } catch (e) {}
          return Ie.nodePermissions(e, 'wx');
        },
        mayDelete: (e, r, t) => {
          var n;
          try {
            n = Ie.lookupNode(e, r);
          } catch (e) {
            return e.errno;
          }
          var o = Ie.nodePermissions(e, 'wx');
          if (o) return o;
          if (t) {
            if (!Ie.isDir(n.mode)) return 54;
            if (Ie.isRoot(n) || Ie.getPath(n) === Ie.cwd()) return 10;
          } else if (Ie.isDir(n.mode)) return 31;
          return 0;
        },
        mayOpen: (e, r) =>
          e
            ? Ie.isLink(e.mode)
              ? 32
              : Ie.isDir(e.mode) && ('r' !== Ie.flagsToPermissionString(r) || 512 & r)
              ? 31
              : Ie.nodePermissions(e, Ie.flagsToPermissionString(r))
            : 44,
        MAX_OPEN_FDS: 4096,
        nextfd: function () {
          let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,
            r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Ie.MAX_OPEN_FDS;
          for (var t = e; t <= r; t++) if (!Ie.streams[t]) return t;
          throw new Ie.ErrnoError(33);
        },
        getStream: (e) => Ie.streams[e],
        createStream: (e, r, t) => {
          Ie.FSStream ||
            ((Ie.FSStream = function () {
              this.shared = {};
            }),
            (Ie.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;
                },
              },
              flags: {
                get: function () {
                  return this.shared.flags;
                },
                set: function (e) {
                  this.shared.flags = e;
                },
              },
              position: {
                get function() {
                  return this.shared.position;
                },
                set: function (e) {
                  this.shared.position = e;
                },
              },
            })),
            (e = Object.assign(new Ie.FSStream(), e));
          var n = Ie.nextfd(r, t);
          return (e.fd = n), (Ie.streams[n] = e), e;
        },
        closeStream: (e) => {
          Ie.streams[e] = null;
        },
        chrdev_stream_ops: {
          open: (e) => {
            var r = Ie.getDevice(e.node.rdev);
            (e.stream_ops = r.stream_ops), e.stream_ops.open && e.stream_ops.open(e);
          },
          llseek: () => {
            throw new Ie.ErrnoError(70);
          },
        },
        major: (e) => e >> 8,
        minor: (e) => 255 & e,
        makedev: (e, r) => (e << 8) | r,
        registerDevice: (e, r) => {
          Ie.devices[e] = { stream_ops: r };
        },
        getDevice: (e) => Ie.devices[e],
        getMounts: (e) => {
          for (var r = [], t = [e]; t.length; ) {
            var n = t.pop();
            r.push(n), t.push.apply(t, n.mounts);
          }
          return r;
        },
        syncfs: (e, r) => {
          'function' == typeof e && ((r = e), (e = !1)),
            Ie.syncFSRequests++,
            Ie.syncFSRequests > 1 &&
              _(
                'warning: ' +
                  Ie.syncFSRequests +
                  ' FS.syncfs operations in flight at once, probably just doing extra work',
              );
          var t = Ie.getMounts(Ie.root.mount),
            n = 0;
          function o(e) {
            return D(Ie.syncFSRequests > 0), Ie.syncFSRequests--, r(e);
          }
          function a(e) {
            if (e) return a.errored ? void 0 : ((a.errored = !0), o(e));
            ++n >= t.length && o(null);
          }
          t.forEach((r) => {
            if (!r.type.syncfs) return a(null);
            r.type.syncfs(r, e, a);
          });
        },
        mount: (e, r, t) => {
          if ('string' == typeof e) throw e;
          var n,
            o = '/' === t,
            a = !t;
          if (o && Ie.root) throw new Ie.ErrnoError(10);
          if (!o && !a) {
            var i = Ie.lookupPath(t, { follow_mount: !1 });
            if (((t = i.path), (n = i.node), Ie.isMountpoint(n))) throw new Ie.ErrnoError(10);
            if (!Ie.isDir(n.mode)) throw new Ie.ErrnoError(54);
          }
          var s = { type: e, opts: r, mountpoint: t, mounts: [] },
            l = e.mount(s);
          return (
            (l.mount = s),
            (s.root = l),
            o ? (Ie.root = l) : n && ((n.mounted = s), n.mount && n.mount.mounts.push(s)),
            l
          );
        },
        unmount: (e) => {
          var r = Ie.lookupPath(e, { follow_mount: !1 });
          if (!Ie.isMountpoint(r.node)) throw new Ie.ErrnoError(28);
          var t = r.node,
            n = t.mounted,
            o = Ie.getMounts(n);
          Object.keys(Ie.nameTable).forEach((e) => {
            for (var r = Ie.nameTable[e]; r; ) {
              var t = r.name_next;
              o.includes(r.mount) && Ie.destroyNode(r), (r = t);
            }
          }),
            (t.mounted = null);
          var a = t.mount.mounts.indexOf(n);
          D(-1 !== a), t.mount.mounts.splice(a, 1);
        },
        lookup: (e, r) => e.node_ops.lookup(e, r),
        mknod: (e, r, t) => {
          var n = Ie.lookupPath(e, { parent: !0 }).node,
            o = Ae.basename(e);
          if (!o || '.' === o || '..' === o) throw new Ie.ErrnoError(28);
          var a = Ie.mayCreate(n, o);
          if (a) throw new Ie.ErrnoError(a);
          if (!n.node_ops.mknod) throw new Ie.ErrnoError(63);
          return n.node_ops.mknod(n, o, r, t);
        },
        create: (e, r) => (
          (r = void 0 !== r ? r : 438), (r &= 4095), (r |= 32768), Ie.mknod(e, r, 0)
        ),
        mkdir: (e, r) => (
          (r = void 0 !== r ? r : 511), (r &= 1023), (r |= 16384), Ie.mknod(e, r, 0)
        ),
        mkdirTree: (e, r) => {
          for (var t = e.split('/'), n = '', o = 0; o < t.length; ++o)
            if (t[o]) {
              n += '/' + t[o];
              try {
                Ie.mkdir(n, r);
              } catch (e) {
                if (20 != e.errno) throw e;
              }
            }
        },
        mkdev: (e, r, t) => (void 0 === t && ((t = r), (r = 438)), (r |= 8192), Ie.mknod(e, r, t)),
        symlink: (e, r) => {
          if (!De.resolve(e)) throw new Ie.ErrnoError(44);
          var t = Ie.lookupPath(r, { parent: !0 }).node;
          if (!t) throw new Ie.ErrnoError(44);
          var n = Ae.basename(r),
            o = Ie.mayCreate(t, n);
          if (o) throw new Ie.ErrnoError(o);
          if (!t.node_ops.symlink) throw new Ie.ErrnoError(63);
          return t.node_ops.symlink(t, n, e);
        },
        rename: (e, r) => {
          var t,
            n,
            o = Ae.dirname(e),
            a = Ae.dirname(r),
            i = Ae.basename(e),
            s = Ae.basename(r);
          if (
            ((t = Ie.lookupPath(e, { parent: !0 }).node),
            (n = Ie.lookupPath(r, { parent: !0 }).node),
            !t || !n)
          )
            throw new Ie.ErrnoError(44);
          if (t.mount !== n.mount) throw new Ie.ErrnoError(75);
          var l,
            u = Ie.lookupNode(t, i),
            c = De.relative(e, a);
          if ('.' !== c.charAt(0)) throw new Ie.ErrnoError(28);
          if ('.' !== (c = De.relative(r, o)).charAt(0)) throw new Ie.ErrnoError(55);
          try {
            l = Ie.lookupNode(n, s);
          } catch (e) {}
          if (u !== l) {
            var d = Ie.isDir(u.mode),
              f = Ie.mayDelete(t, i, d);
            if (f) throw new Ie.ErrnoError(f);
            if ((f = l ? Ie.mayDelete(n, s, d) : Ie.mayCreate(n, s))) throw new Ie.ErrnoError(f);
            if (!t.node_ops.rename) throw new Ie.ErrnoError(63);
            if (Ie.isMountpoint(u) || (l && Ie.isMountpoint(l))) throw new Ie.ErrnoError(10);
            if (n !== t && (f = Ie.nodePermissions(t, 'w'))) throw new Ie.ErrnoError(f);
            Ie.hashRemoveNode(u);
            try {
              t.node_ops.rename(u, n, s);
            } catch (e) {
              throw e;
            } finally {
              Ie.hashAddNode(u);
            }
          }
        },
        rmdir: (e) => {
          var r = Ie.lookupPath(e, { parent: !0 }).node,
            t = Ae.basename(e),
            n = Ie.lookupNode(r, t),
            o = Ie.mayDelete(r, t, !0);
          if (o) throw new Ie.ErrnoError(o);
          if (!r.node_ops.rmdir) throw new Ie.ErrnoError(63);
          if (Ie.isMountpoint(n)) throw new Ie.ErrnoError(10);
          r.node_ops.rmdir(r, t), Ie.destroyNode(n);
        },
        readdir: (e) => {
          var r = Ie.lookupPath(e, { follow: !0 }).node;
          if (!r.node_ops.readdir) throw new Ie.ErrnoError(54);
          return r.node_ops.readdir(r);
        },
        unlink: (e) => {
          var r = Ie.lookupPath(e, { parent: !0 }).node;
          if (!r) throw new Ie.ErrnoError(44);
          var t = Ae.basename(e),
            n = Ie.lookupNode(r, t),
            o = Ie.mayDelete(r, t, !1);
          if (o) throw new Ie.ErrnoError(o);
          if (!r.node_ops.unlink) throw new Ie.ErrnoError(63);
          if (Ie.isMountpoint(n)) throw new Ie.ErrnoError(10);
          r.node_ops.unlink(r, t), Ie.destroyNode(n);
        },
        readlink: (e) => {
          var r = Ie.lookupPath(e).node;
          if (!r) throw new Ie.ErrnoError(44);
          if (!r.node_ops.readlink) throw new Ie.ErrnoError(28);
          return De.resolve(Ie.getPath(r.parent), r.node_ops.readlink(r));
        },
        stat: (e, r) => {
          var t = Ie.lookupPath(e, { follow: !r }).node;
          if (!t) throw new Ie.ErrnoError(44);
          if (!t.node_ops.getattr) throw new Ie.ErrnoError(63);
          return t.node_ops.getattr(t);
        },
        lstat: (e) => Ie.stat(e, !0),
        chmod: (e, r, t) => {
          var n;
          'string' == typeof e ? (n = Ie.lookupPath(e, { follow: !t }).node) : (n = e);
          if (!n.node_ops.setattr) throw new Ie.ErrnoError(63);
          n.node_ops.setattr(n, { mode: (4095 & r) | (-4096 & n.mode), timestamp: Date.now() });
        },
        lchmod: (e, r) => {
          Ie.chmod(e, r, !0);
        },
        fchmod: (e, r) => {
          var t = Ie.getStream(e);
          if (!t) throw new Ie.ErrnoError(8);
          Ie.chmod(t.node, r);
        },
        chown: (e, r, t, n) => {
          var o;
          'string' == typeof e ? (o = Ie.lookupPath(e, { follow: !n }).node) : (o = e);
          if (!o.node_ops.setattr) throw new Ie.ErrnoError(63);
          o.node_ops.setattr(o, { timestamp: Date.now() });
        },
        lchown: (e, r, t) => {
          Ie.chown(e, r, t, !0);
        },
        fchown: (e, r, t) => {
          var n = Ie.getStream(e);
          if (!n) throw new Ie.ErrnoError(8);
          Ie.chown(n.node, r, t);
        },
        truncate: (e, r) => {
          if (r < 0) throw new Ie.ErrnoError(28);
          var t;
          'string' == typeof e ? (t = Ie.lookupPath(e, { follow: !0 }).node) : (t = e);
          if (!t.node_ops.setattr) throw new Ie.ErrnoError(63);
          if (Ie.isDir(t.mode)) throw new Ie.ErrnoError(31);
          if (!Ie.isFile(t.mode)) throw new Ie.ErrnoError(28);
          var n = Ie.nodePermissions(t, 'w');
          if (n) throw new Ie.ErrnoError(n);
          t.node_ops.setattr(t, { size: r, timestamp: Date.now() });
        },
        ftruncate: (e, r) => {
          var t = Ie.getStream(e);
          if (!t) throw new Ie.ErrnoError(8);
          if (0 == (2097155 & t.flags)) throw new Ie.ErrnoError(28);
          Ie.truncate(t.node, r);
        },
        utime: (e, r, t) => {
          var n = Ie.lookupPath(e, { follow: !0 }).node;
          n.node_ops.setattr(n, { timestamp: Math.max(r, t) });
        },
        open: (e, t, n, o, a) => {
          if ('' === e) throw new Ie.ErrnoError(44);
          var i;
          if (
            ((n = void 0 === n ? 438 : n),
            (n =
              64 & (t = 'string' == typeof t ? Ie.modeStringToFlags(t) : t)
                ? (4095 & n) | 32768
                : 0),
            'object' == typeof e)
          )
            i = e;
          else {
            e = Ae.normalize(e);
            try {
              i = Ie.lookupPath(e, { follow: !(131072 & t) }).node;
            } catch (e) {}
          }
          var s = !1;
          if (64 & t)
            if (i) {
              if (128 & t) throw new Ie.ErrnoError(20);
            } else (i = Ie.mknod(e, n, 0)), (s = !0);
          if (!i) throw new Ie.ErrnoError(44);
          if ((Ie.isChrdev(i.mode) && (t &= -513), 65536 & t && !Ie.isDir(i.mode)))
            throw new Ie.ErrnoError(54);
          if (!s) {
            var l = Ie.mayOpen(i, t);
            if (l) throw new Ie.ErrnoError(l);
          }
          512 & t && Ie.truncate(i, 0), (t &= -131713);
          var u = Ie.createStream(
            {
              node: i,
              path: Ie.getPath(i),
              flags: t,
              seekable: !0,
              position: 0,
              stream_ops: i.stream_ops,
              ungotten: [],
              error: !1,
            },
            o,
            a,
          );
          return (
            u.stream_ops.open && u.stream_ops.open(u),
            !r.logReadFiles ||
              1 & t ||
              (Ie.readFiles || (Ie.readFiles = {}), e in Ie.readFiles || (Ie.readFiles[e] = 1)),
            u
          );
        },
        close: (e) => {
          if (Ie.isClosed(e)) throw new Ie.ErrnoError(8);
          e.getdents && (e.getdents = null);
          try {
            e.stream_ops.close && e.stream_ops.close(e);
          } catch (e) {
            throw e;
          } finally {
            Ie.closeStream(e.fd);
          }
          e.fd = null;
        },
        isClosed: (e) => null === e.fd,
        llseek: (e, r, t) => {
          if (Ie.isClosed(e)) throw new Ie.ErrnoError(8);
          if (!e.seekable || !e.stream_ops.llseek) throw new Ie.ErrnoError(70);
          if (0 != t && 1 != t && 2 != t) throw new Ie.ErrnoError(28);
          return (e.position = e.stream_ops.llseek(e, r, t)), (e.ungotten = []), e.position;
        },
        read: (e, r, t, n, o) => {
          if (n < 0 || o < 0) throw new Ie.ErrnoError(28);
          if (Ie.isClosed(e)) throw new Ie.ErrnoError(8);
          if (1 == (2097155 & e.flags)) throw new Ie.ErrnoError(8);
          if (Ie.isDir(e.node.mode)) throw new Ie.ErrnoError(31);
          if (!e.stream_ops.read) throw new Ie.ErrnoError(28);
          var a = void 0 !== o;
          if (a) {
            if (!e.seekable) throw new Ie.ErrnoError(70);
          } else o = e.position;
          var i = e.stream_ops.read(e, r, t, n, o);
          return a || (e.position += i), i;
        },
        write: (e, r, t, n, o, a) => {
          if (n < 0 || o < 0) throw new Ie.ErrnoError(28);
          if (Ie.isClosed(e)) throw new Ie.ErrnoError(8);
          if (0 == (2097155 & e.flags)) throw new Ie.ErrnoError(8);
          if (Ie.isDir(e.node.mode)) throw new Ie.ErrnoError(31);
          if (!e.stream_ops.write) throw new Ie.ErrnoError(28);
          e.seekable && 1024 & e.flags && Ie.llseek(e, 0, 2);
          var i = void 0 !== o;
          if (i) {
            if (!e.seekable) throw new Ie.ErrnoError(70);
          } else o = e.position;
          var s = e.stream_ops.write(e, r, t, n, o, a);
          return i || (e.position += s), s;
        },
        allocate: (e, r, t) => {
          if (Ie.isClosed(e)) throw new Ie.ErrnoError(8);
          if (r < 0 || t <= 0) throw new Ie.ErrnoError(28);
          if (0 == (2097155 & e.flags)) throw new Ie.ErrnoError(8);
          if (!Ie.isFile(e.node.mode) && !Ie.isDir(e.node.mode)) throw new Ie.ErrnoError(43);
          if (!e.stream_ops.allocate) throw new Ie.ErrnoError(138);
          e.stream_ops.allocate(e, r, t);
        },
        mmap: (e, r, t, n, o, a) => {
          if (0 != (2 & o) && 0 == (2 & a) && 2 != (2097155 & e.flags)) throw new Ie.ErrnoError(2);
          if (1 == (2097155 & e.flags)) throw new Ie.ErrnoError(2);
          if (!e.stream_ops.mmap) throw new Ie.ErrnoError(43);
          return e.stream_ops.mmap(e, r, t, n, o, a);
        },
        msync: (e, r, t, n, o) => (e && e.stream_ops.msync ? e.stream_ops.msync(e, r, t, n, o) : 0),
        munmap: (e) => 0,
        ioctl: (e, r, t) => {
          if (!e.stream_ops.ioctl) throw new Ie.ErrnoError(59);
          return e.stream_ops.ioctl(e, r, t);
        },
        readFile: function (e) {
          let r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
          if (
            ((r.flags = r.flags || 0),
            (r.encoding = r.encoding || 'binary'),
            'utf8' !== r.encoding && 'binary' !== r.encoding)
          )
            throw new Error('Invalid encoding type "' + r.encoding + '"');
          var t,
            n = Ie.open(e, r.flags),
            o = Ie.stat(e),
            a = o.size,
            i = new Uint8Array(a);
          return (
            Ie.read(n, i, 0, a, 0),
            'utf8' === r.encoding ? (t = F(i, 0)) : 'binary' === r.encoding && (t = i),
            Ie.close(n),
            t
          );
        },
        writeFile: function (e, r) {
          let t = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
          t.flags = t.flags || 577;
          var n = Ie.open(e, t.flags, t.mode);
          if ('string' == typeof r) {
            var o = new Uint8Array(I(r) + 1),
              a = R(r, o, 0, o.length);
            Ie.write(n, o, 0, a, void 0, t.canOwn);
          } else {
            if (!ArrayBuffer.isView(r)) throw new Error('Unsupported data type');
            Ie.write(n, r, 0, r.byteLength, void 0, t.canOwn);
          }
          Ie.close(n);
        },
        cwd: () => Ie.currentPath,
        chdir: (e) => {
          var r = Ie.lookupPath(e, { follow: !0 });
          if (null === r.node) throw new Ie.ErrnoError(44);
          if (!Ie.isDir(r.node.mode)) throw new Ie.ErrnoError(54);
          var t = Ie.nodePermissions(r.node, 'x');
          if (t) throw new Ie.ErrnoError(t);
          Ie.currentPath = r.path;
        },
        createDefaultDirectories: () => {
          Ie.mkdir('/tmp'), Ie.mkdir('/home'), Ie.mkdir('/home/web_user');
        },
        createDefaultDevices: () => {
          Ie.mkdir('/dev'),
            Ie.registerDevice(Ie.makedev(1, 3), { read: () => 0, write: (e, r, t, n, o) => n }),
            Ie.mkdev('/dev/null', Ie.makedev(1, 3)),
            Oe.register(Ie.makedev(5, 0), Oe.default_tty_ops),
            Oe.register(Ie.makedev(6, 0), Oe.default_tty1_ops),
            Ie.mkdev('/dev/tty', Ie.makedev(5, 0)),
            Ie.mkdev('/dev/tty1', Ie.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];
              };
            }
            if (u)
              try {
                var r = i.default;
                return function () {
                  return r.randomBytes(1)[0];
                };
              } catch (e) {}
            return function () {
              ge(
                'no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };',
              );
            };
          })();
          Ie.createDevice('/dev', 'random', e),
            Ie.createDevice('/dev', 'urandom', e),
            Ie.mkdir('/dev/shm'),
            Ie.mkdir('/dev/shm/tmp');
        },
        createSpecialDirectories: () => {
          Ie.mkdir('/proc');
          var e = Ie.mkdir('/proc/self');
          Ie.mkdir('/proc/self/fd'),
            Ie.mount(
              {
                mount: () => {
                  var r = Ie.createNode(e, 'fd', 16895, 73);
                  return (
                    (r.node_ops = {
                      lookup: (e, r) => {
                        var t = +r,
                          n = Ie.getStream(t);
                        if (!n) throw new Ie.ErrnoError(8);
                        var o = {
                          parent: null,
                          mount: { mountpoint: 'fake' },
                          node_ops: { readlink: () => n.path },
                        };
                        return (o.parent = o), o;
                      },
                    }),
                    r
                  );
                },
              },
              {},
              '/proc/self/fd',
            );
        },
        createStandardStreams: () => {
          r.stdin
            ? Ie.createDevice('/dev', 'stdin', r.stdin)
            : Ie.symlink('/dev/tty', '/dev/stdin'),
            r.stdout
              ? Ie.createDevice('/dev', 'stdout', null, r.stdout)
              : Ie.symlink('/dev/tty', '/dev/stdout'),
            r.stderr
              ? Ie.createDevice('/dev', 'stderr', null, r.stderr)
              : Ie.symlink('/dev/tty1', '/dev/stderr');
          var e = Ie.open('/dev/stdin', 0),
            t = Ie.open('/dev/stdout', 1),
            n = Ie.open('/dev/stderr', 1);
          D(0 === e.fd, 'invalid handle for stdin (' + e.fd + ')'),
            D(1 === t.fd, 'invalid handle for stdout (' + t.fd + ')'),
            D(2 === n.fd, 'invalid handle for stderr (' + n.fd + ')');
        },
        ensureErrnoError: () => {
          Ie.ErrnoError ||
            ((Ie.ErrnoError = function (e, r) {
              (this.node = r),
                (this.setErrno = function (e) {
                  for (var r in ((this.errno = e), Ne))
                    if (Ne[r] === e) {
                      this.code = r;
                      break;
                    }
                }),
                this.setErrno(e),
                (this.message = Re[e]),
                this.stack &&
                  (Object.defineProperty(this, 'stack', { value: new Error().stack, writable: !0 }),
                  (this.stack = Se(this.stack)));
            }),
            (Ie.ErrnoError.prototype = new Error()),
            (Ie.ErrnoError.prototype.constructor = Ie.ErrnoError),
            [44].forEach((e) => {
              (Ie.genericErrors[e] = new Ie.ErrnoError(e)),
                (Ie.genericErrors[e].stack = '<generic error, no stack>');
            }));
        },
        staticInit: () => {
          Ie.ensureErrnoError(),
            (Ie.nameTable = new Array(4096)),
            Ie.mount(Me, {}, '/'),
            Ie.createDefaultDirectories(),
            Ie.createDefaultDevices(),
            Ie.createSpecialDirectories(),
            (Ie.filesystems = { MEMFS: Me });
        },
        init: (e, t, n) => {
          D(
            !Ie.init.initialized,
            'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)',
          ),
            (Ie.init.initialized = !0),
            Ie.ensureErrnoError(),
            (r.stdin = e || r.stdin),
            (r.stdout = t || r.stdout),
            (r.stderr = n || r.stderr),
            Ie.createStandardStreams();
        },
        quit: () => {
          (Ie.init.initialized = !1), wt();
          for (var e = 0; e < Ie.streams.length; e++) {
            var r = Ie.streams[e];
            r && Ie.close(r);
          }
        },
        getMode: (e, r) => {
          var t = 0;
          return e && (t |= 365), r && (t |= 146), t;
        },
        findObject: (e, r) => {
          var t = Ie.analyzePath(e, r);
          return t.exists ? t.object : null;
        },
        analyzePath: (e, r) => {
          try {
            e = (n = Ie.lookupPath(e, { follow: !r })).path;
          } catch (e) {}
          var t = {
            isRoot: !1,
            exists: !1,
            error: 0,
            name: null,
            path: null,
            object: null,
            parentExists: !1,
            parentPath: null,
            parentObject: null,
          };
          try {
            var n = Ie.lookupPath(e, { parent: !0 });
            (t.parentExists = !0),
              (t.parentPath = n.path),
              (t.parentObject = n.node),
              (t.name = Ae.basename(e)),
              (n = Ie.lookupPath(e, { follow: !r })),
              (t.exists = !0),
              (t.path = n.path),
              (t.object = n.node),
              (t.name = n.node.name),
              (t.isRoot = '/' === n.path);
          } catch (e) {
            t.error = e.errno;
          }
          return t;
        },
        createPath: (e, r, t, n) => {
          e = 'string' == typeof e ? e : Ie.getPath(e);
          for (var o = r.split('/').reverse(); o.length; ) {
            var a = o.pop();
            if (a) {
              var i = Ae.join2(e, a);
              try {
                Ie.mkdir(i);
              } catch (e) {}
              e = i;
            }
          }
          return i;
        },
        createFile: (e, r, t, n, o) => {
          var a = Ae.join2('string' == typeof e ? e : Ie.getPath(e), r),
            i = Ie.getMode(n, o);
          return Ie.create(a, i);
        },
        createDataFile: (e, r, t, n, o, a) => {
          var i = r;
          e && ((e = 'string' == typeof e ? e : Ie.getPath(e)), (i = r ? Ae.join2(e, r) : e));
          var s = Ie.getMode(n, o),
            l = Ie.create(i, s);
          if (t) {
            if ('string' == typeof t) {
              for (var u = new Array(t.length), c = 0, d = t.length; c < d; ++c)
                u[c] = t.charCodeAt(c);
              t = u;
            }
            Ie.chmod(l, 146 | s);
            var f = Ie.open(l, 577);
            Ie.write(f, t, 0, t.length, 0, a), Ie.close(f), Ie.chmod(l, s);
          }
          return l;
        },
        createDevice: (e, r, t, n) => {
          var o = Ae.join2('string' == typeof e ? e : Ie.getPath(e), r),
            a = Ie.getMode(!!t, !!n);
          Ie.createDevice.major || (Ie.createDevice.major = 64);
          var i = Ie.makedev(Ie.createDevice.major++, 0);
          return (
            Ie.registerDevice(i, {
              open: (e) => {
                e.seekable = !1;
              },
              close: (e) => {
                n && n.buffer && n.buffer.length && n(10);
              },
              read: (e, r, n, o, a) => {
                for (var i = 0, s = 0; s < o; s++) {
                  var l;
                  try {
                    l = t();
                  } catch (e) {
                    throw new Ie.ErrnoError(29);
                  }
                  if (void 0 === l && 0 === i) throw new Ie.ErrnoError(6);
                  if (null == l) break;
                  i++, (r[n + s] = l);
                }
                return i && (e.node.timestamp = Date.now()), i;
              },
              write: (e, r, t, o, a) => {
                for (var i = 0; i < o; i++)
                  try {
                    n(r[t + i]);
                  } catch (e) {
                    throw new Ie.ErrnoError(29);
                  }
                return o && (e.node.timestamp = Date.now()), i;
              },
            }),
            Ie.mkdev(o, a, i)
          );
        },
        forceLoadFile: (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 (!d) throw new Error('Cannot load without read() or XMLHttpRequest.');
          try {
            (e.contents = pt(d(e.url), !0)), (e.usedBytes = e.contents.length);
          } catch (e) {
            throw new Ie.ErrnoError(29);
          }
        },
        createLazyFile: (e, r, t, n, o) => {
          function a() {
            (this.lengthKnown = !1), (this.chunks = []);
          }
          if (
            ((a.prototype.get = function (e) {
              if (!(e > this.length - 1 || e < 0)) {
                var r = e % this.chunkSize,
                  t = (e / this.chunkSize) | 0;
                return this.getter(t)[r];
              }
            }),
            (a.prototype.setDataGetter = function (e) {
              this.getter = e;
            }),
            (a.prototype.cacheLength = function () {
              var e = new XMLHttpRequest();
              if (
                (e.open('HEAD', t, !1),
                e.send(null),
                !((e.status >= 200 && e.status < 300) || 304 === e.status))
              )
                throw new Error("Couldn't load " + t + '. Status: ' + e.status);
              var r,
                n = Number(e.getResponseHeader('Content-length')),
                o = (r = e.getResponseHeader('Accept-Ranges')) && 'bytes' === r,
                a = (r = e.getResponseHeader('Content-Encoding')) && 'gzip' === r,
                i = 1048576;
              o || (i = n);
              var s = this;
              s.setDataGetter((e) => {
                var r = e * i,
                  o = (e + 1) * i - 1;
                if (
                  ((o = Math.min(o, n - 1)),
                  void 0 === s.chunks[e] &&
                    (s.chunks[e] = ((e, r) => {
                      if (e > r)
                        throw new Error(
                          'invalid range (' + e + ', ' + r + ') or no bytes requested!',
                        );
                      if (r > n - 1)
                        throw new Error('only ' + n + ' bytes available! programmer error!');
                      var o = new XMLHttpRequest();
                      if (
                        (o.open('GET', t, !1),
                        n !== i && o.setRequestHeader('Range', 'bytes=' + e + '-' + r),
                        (o.responseType = 'arraybuffer'),
                        o.overrideMimeType &&
                          o.overrideMimeType('text/plain; charset=x-user-defined'),
                        o.send(null),
                        !((o.status >= 200 && o.status < 300) || 304 === o.status))
                      )
                        throw new Error("Couldn't load " + t + '. Status: ' + o.status);
                      return void 0 !== o.response
                        ? new Uint8Array(o.response || [])
                        : pt(o.responseText || '', !0);
                    })(r, 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),
                  b('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 (!l)
              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: t };
          var u = Ie.createFile(e, r, s, n, o);
          s.contents ? (u.contents = s.contents) : s.url && ((u.contents = null), (u.url = s.url)),
            Object.defineProperties(u, {
              usedBytes: {
                get: function () {
                  return this.contents.length;
                },
              },
            });
          var c = {};
          return (
            Object.keys(u.stream_ops).forEach((e) => {
              var r = u.stream_ops[e];
              c[e] = function () {
                return Ie.forceLoadFile(u), r.apply(null, arguments);
              };
            }),
            (c.read = (e, r, t, n, o) => {
              Ie.forceLoadFile(u);
              var a = e.node.contents;
              if (o >= a.length) return 0;
              var i = Math.min(a.length - o, n);
              if ((D(i >= 0), a.slice)) for (var s = 0; s < i; s++) r[t + s] = a[o + s];
              else for (s = 0; s < i; s++) r[t + s] = a.get(o + s);
              return i;
            }),
            (u.stream_ops = c),
            u
          );
        },
        createPreloadedFile: (e, r, t, n, o, a, i, s, l, u) => {
          var c = r ? De.resolve(Ae.join2(e, r)) : e,
            d = pe('cp ' + c);
          function p(t) {
            function f(t) {
              u && u(), s || Ie.createDataFile(e, r, t, n, o, l), a && a(), he(d);
            }
            Browser.handledByPreloadPlugin(t, c, f, () => {
              i && i(), he(d);
            }) || f(t);
          }
          me(d),
            'string' == typeof t
              ? (function (e, r, t, n) {
                  var o = n ? '' : pe('al ' + e);
                  f(
                    e,
                    function (t) {
                      D(t, 'Loading data file "' + e + '" failed (no arrayBuffer).'),
                        r(new Uint8Array(t)),
                        o && he(o);
                    },
                    function (r) {
                      if (!t) throw 'Loading data file "' + e + '" failed.';
                      t();
                    },
                  ),
                    o && me(o);
                })(t, (e) => p(e), i)
              : p(t);
        },
        indexedDB: () =>
          window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB,
        DB_NAME: () => 'EM_FS_' + window.location.pathname,
        DB_VERSION: 20,
        DB_STORE_NAME: 'FILE_DATA',
        saveFilesToDB: (e, r, t) => {
          (r = r || (() => {})), (t = t || (() => {}));
          var n = Ie.indexedDB();
          try {
            var o = n.open(Ie.DB_NAME(), Ie.DB_VERSION);
          } catch (e) {
            return t(e);
          }
          (o.onupgradeneeded = () => {
            b('creating db'), o.result.createObjectStore(Ie.DB_STORE_NAME);
          }),
            (o.onsuccess = () => {
              var n = o.result.transaction([Ie.DB_STORE_NAME], 'readwrite'),
                a = n.objectStore(Ie.DB_STORE_NAME),
                i = 0,
                s = 0,
                l = e.length;
              function u() {
                0 == s ? r() : t();
              }
              e.forEach((e) => {
                var r = a.put(Ie.analyzePath(e).object.contents, e);
                (r.onsuccess = () => {
                  ++i + s == l && u();
                }),
                  (r.onerror = () => {
                    s++, i + s == l && u();
                  });
              }),
                (n.onerror = t);
            }),
            (o.onerror = t);
        },
        loadFilesFromDB: (e, r, t) => {
          (r = r || (() => {})), (t = t || (() => {}));
          var n = Ie.indexedDB();
          try {
            var o = n.open(Ie.DB_NAME(), Ie.DB_VERSION);
          } catch (e) {
            return t(e);
          }
          (o.onupgradeneeded = t),
            (o.onsuccess = () => {
              var n = o.result;
              try {
                var a = n.transaction([Ie.DB_STORE_NAME], 'readonly');
              } catch (e) {
                return void t(e);
              }
              var i = a.objectStore(Ie.DB_STORE_NAME),
                s = 0,
                l = 0,
                u = e.length;
              function c() {
                0 == l ? r() : t();
              }
              e.forEach((e) => {
                var r = i.get(e);
                (r.onsuccess = () => {
                  Ie.analyzePath(e).exists && Ie.unlink(e),
                    Ie.createDataFile(Ae.dirname(e), Ae.basename(e), r.result, !0, !0, !0),
                    ++s + l == u && c();
                }),
                  (r.onerror = () => {
                    l++, s + l == u && c();
                  });
              }),
                (a.onerror = t);
            }),
            (o.onerror = t);
        },
        absolutePath: () => {
          ge('FS.absolutePath has been removed; use PATH_FS.resolve instead');
        },
        createFolder: () => {
          ge('FS.createFolder has been removed; use FS.mkdir instead');
        },
        createLink: () => {
          ge('FS.createLink has been removed; use FS.symlink instead');
        },
        joinPath: () => {
          ge('FS.joinPath has been removed; use PATH.join instead');
        },
        mmapAlloc: () => {
          ge('FS.mmapAlloc has been replaced by the top level function mmapAlloc');
        },
        standardizePath: () => {
          ge('FS.standardizePath has been removed; use PATH.normalize instead');
        },
      },
      Le = {
        DEFAULT_POLLMASK: 5,
        calculateAt: function (e, r, t) {
          if (Ae.isAbs(r)) return r;
          var n;
          if (-100 === e) n = Ie.cwd();
          else {
            var o = Ie.getStream(e);
            if (!o) throw new Ie.ErrnoError(8);
            n = o.path;
          }
          if (0 == r.length) {
            if (!t) throw new Ie.ErrnoError(44);
            return n;
          }
          return Ae.join2(n, r);
        },
        doStat: function (e, r, t) {
          try {
            var n = e(r);
          } catch (e) {
            if (e && e.node && Ae.normalize(r) !== Ae.normalize(Ie.getPath(e.node))) return -54;
            throw e;
          }
          return (
            ($[t >> 2] = n.dev),
            ($[(t + 4) >> 2] = 0),
            ($[(t + 8) >> 2] = n.ino),
            ($[(t + 12) >> 2] = n.mode),
            ($[(t + 16) >> 2] = n.nlink),
            ($[(t + 20) >> 2] = n.uid),
            ($[(t + 24) >> 2] = n.gid),
            ($[(t + 28) >> 2] = n.rdev),
            ($[(t + 32) >> 2] = 0),
            (Ee = [
              n.size >>> 0,
              ((ye = n.size),
              +Math.abs(ye) >= 1
                ? ye > 0
                  ? (0 | Math.min(+Math.floor(ye / 4294967296), 4294967295)) >>> 0
                  : ~~+Math.ceil((ye - +(~~ye >>> 0)) / 4294967296) >>> 0
                : 0),
            ]),
            ($[(t + 40) >> 2] = Ee[0]),
            ($[(t + 44) >> 2] = Ee[1]),
            ($[(t + 48) >> 2] = 4096),
            ($[(t + 52) >> 2] = n.blocks),
            ($[(t + 56) >> 2] = (n.atime.getTime() / 1e3) | 0),
            ($[(t + 60) >> 2] = 0),
            ($[(t + 64) >> 2] = (n.mtime.getTime() / 1e3) | 0),
            ($[(t + 68) >> 2] = 0),
            ($[(t + 72) >> 2] = (n.ctime.getTime() / 1e3) | 0),
            ($[(t + 76) >> 2] = 0),
            (Ee = [
              n.ino >>> 0,
              ((ye = n.ino),
              +Math.abs(ye) >= 1
                ? ye > 0
                  ? (0 | Math.min(+Math.floor(ye / 4294967296), 4294967295)) >>> 0
                  : ~~+Math.ceil((ye - +(~~ye >>> 0)) / 4294967296) >>> 0
                : 0),
            ]),
            ($[(t + 80) >> 2] = Ee[0]),
            ($[(t + 84) >> 2] = Ee[1]),
            0
          );
        },
        doMsync: function (e, r, t, n, o) {
          var a = U.slice(e, e + t);
          Ie.msync(r, a, o, t, n);
        },
        doMknod: function (e, r, t) {
          switch (61440 & r) {
            case 32768:
            case 8192:
            case 24576:
            case 4096:
            case 49152:
              break;
            default:
              return -28;
          }
          return Ie.mknod(e, r, t), 0;
        },
        doReadlink: function (e, r, t) {
          if (t <= 0) return -28;
          var n = Ie.readlink(e),
            o = Math.min(t, I(n)),
            a = x[r + o];
          return N(n, r, t + 1), (x[r + o] = a), o;
        },
        doAccess: function (e, r) {
          if (-8 & r) return -28;
          var t = Ie.lookupPath(e, { follow: !0 }).node;
          if (!t) return -44;
          var n = '';
          return (
            4 & r && (n += 'r'),
            2 & r && (n += 'w'),
            1 & r && (n += 'x'),
            n && Ie.nodePermissions(t, n) ? -2 : 0
          );
        },
        doReadv: function (e, r, t, n) {
          for (var o = 0, a = 0; a < t; a++) {
            var i = $[r >> 2],
              s = $[(r + 4) >> 2];
            r += 8;
            var l = Ie.read(e, x, i, s, n);
            if (l < 0) return -1;
            if (((o += l), l < s)) break;
          }
          return o;
        },
        doWritev: function (e, r, t, n) {
          for (var o = 0, a = 0; a < t; a++) {
            var i = $[r >> 2],
              s = $[(r + 4) >> 2];
            r += 8;
            var l = Ie.write(e, x, i, s, n);
            if (l < 0) return -1;
            o += l;
          }
          return o;
        },
        varargs: void 0,
        get: function () {
          return D(null != Le.varargs), (Le.varargs += 4), $[(Le.varargs - 4) >> 2];
        },
        getStr: function (e) {
          return M(e);
        },
        getStreamFromFD: function (e) {
          var r = Ie.getStream(e);
          if (!r) throw new Ie.ErrnoError(8);
          return r;
        },
      };
    function xe(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);
      }
    }
    var Ue = void 0;
    function Be(e) {
      for (var r = '', t = e; U[t]; ) r += Ue[U[t++]];
      return r;
    }
    var je = {},
      $e = {},
      We = {};
    function ze(e) {
      if (void 0 === e) return '_unknown';
      var r = (e = e.replace(/[^a-zA-Z0-9_]/g, '$')).charCodeAt(0);
      return r >= 48 && r <= 57 ? '_' + e : e;
    }
    function He(e, r) {
      return (
        (e = ze(e)),
        new Function(
          'body',
          'return function ' +
            e +
            '() {\n    "use strict";    return body.apply(this, arguments);\n};\n',
        )(r)
      );
    }
    function Ge(e, r) {
      var t = He(r, function (e) {
        (this.name = r), (this.message = e);
        var t = new Error(e).stack;
        void 0 !== t && (this.stack = this.toString() + '\n' + t.replace(/^Error(:[^\n]*)?\n/, ''));
      });
      return (
        (t.prototype = Object.create(e.prototype)),
        (t.prototype.constructor = t),
        (t.prototype.toString = function () {
          return void 0 === this.message ? this.name : this.name + ': ' + this.message;
        }),
        t
      );
    }
    var Ve = void 0;
    function Ye(e) {
      throw new Ve(e);
    }
    var Xe = void 0;
    function qe(e) {
      throw new Xe(e);
    }
    function Ke(e, r, t) {
      function n(r) {
        var n = t(r);
        n.length !== e.length && qe('Mismatched type converter count');
        for (var o = 0; o < e.length; ++o) Je(e[o], n[o]);
      }
      e.forEach(function (e) {
        We[e] = r;
      });
      var o = new Array(r.length),
        a = [],
        i = 0;
      r.forEach((e, r) => {
        $e.hasOwnProperty(e)
          ? (o[r] = $e[e])
          : (a.push(e),
            je.hasOwnProperty(e) || (je[e] = []),
            je[e].push(() => {
              (o[r] = $e[e]), ++i === a.length && n(o);
            }));
      }),
        0 === a.length && n(o);
    }
    function Je(e, r) {
      let t = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
      if (!('argPackAdvance' in r))
        throw new TypeError('registerType registeredInstance requires argPackAdvance');
      var n = r.name;
      if (
        (e || Ye('type "' + n + '" must have a positive integer typeid pointer'),
        $e.hasOwnProperty(e))
      ) {
        if (t.ignoreDuplicateRegistrations) return;
        Ye("Cannot register type '" + n + "' twice");
      }
      if ((($e[e] = r), delete We[e], je.hasOwnProperty(e))) {
        var o = je[e];
        delete je[e], o.forEach((e) => e());
      }
    }
    function Qe(e) {
      if (!(this instanceof wr)) return !1;
      if (!(e instanceof wr)) return !1;
      for (
        var r = this.$$.ptrType.registeredClass,
          t = this.$$.ptr,
          n = e.$$.ptrType.registeredClass,
          o = e.$$.ptr;
        r.baseClass;

      )
        (t = r.upcast(t)), (r = r.baseClass);
      for (; n.baseClass; ) (o = n.upcast(o)), (n = n.baseClass);
      return r === n && t === o;
    }
    function Ze(e) {
      Ye(e.$$.ptrType.registeredClass.name + ' instance already deleted');
    }
    var er = !1;
    function rr(e) {}
    function tr(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 nr(e, r, t) {
      if (r === t) return e;
      if (void 0 === t.baseClass) return null;
      var n = nr(e, r, t.baseClass);
      return null === n ? null : t.downcast(n);
    }
    var or = {};
    function ar() {
      return Object.keys(dr).length;
    }
    function ir() {
      var e = [];
      for (var r in dr) dr.hasOwnProperty(r) && e.push(dr[r]);
      return e;
    }
    var sr = [];
    function lr() {
      for (; sr.length; ) {
        var e = sr.pop();
        (e.$$.deleteScheduled = !1), e.delete();
      }
    }
    var ur = void 0;
    function cr(e) {
      (ur = e), sr.length && ur && ur(lr);
    }
    var dr = {};
    function fr(e, r) {
      return (
        (r = (function (e, r) {
          for (void 0 === r && Ye('ptr should not be undefined'); e.baseClass; )
            (r = e.upcast(r)), (e = e.baseClass);
          return r;
        })(e, r)),
        dr[r]
      );
    }
    function pr(e, r) {
      return (
        (r.ptrType && r.ptr) || qe('makeClassHandle requires ptr and ptrType'),
        !!r.smartPtrType !== !!r.smartPtr && qe('Both smartPtrType and smartPtr must be specified'),
        (r.count = { value: 1 }),
        hr(Object.create(e, { $$: { value: r } }))
      );
    }
    function mr(e) {
      var r = this.getPointee(e);
      if (!r) return this.destructor(e), null;
      var t = fr(this.registeredClass, r);
      if (void 0 !== t) {
        if (0 === t.$$.count.value) return (t.$$.ptr = r), (t.$$.smartPtr = e), t.clone();
        var n = t.clone();
        return this.destructor(e), n;
      }
      function o() {
        return this.isSmartPointer
          ? pr(this.registeredClass.instancePrototype, {
              ptrType: this.pointeeType,
              ptr: r,
              smartPtrType: this,
              smartPtr: e,
            })
          : pr(this.registeredClass.instancePrototype, { ptrType: this, ptr: e });
      }
      var a,
        i = this.registeredClass.getActualType(r),
        s = or[i];
      if (!s) return o.call(this);
      a = this.isConst ? s.constPointerType : s.pointerType;
      var l = nr(r, this.registeredClass, a.registeredClass);
      return null === l
        ? o.call(this)
        : this.isSmartPointer
        ? pr(a.registeredClass.instancePrototype, {
            ptrType: a,
            ptr: l,
            smartPtrType: this,
            smartPtr: e,
          })
        : pr(a.registeredClass.instancePrototype, { ptrType: a, ptr: l });
    }
    function hr(e) {
      return 'undefined' == typeof FinalizationRegistry
        ? ((hr = (e) => e), e)
        : ((er = new FinalizationRegistry((e) => {
            console.warn(e.leakWarning.stack.replace(/^Error: /, '')), tr(e.$$);
          })),
          (hr = (e) => {
            var r = e.$$;
            if (!!r.smartPtr) {
              var t = { $$: r },
                n = r.ptrType.registeredClass;
              (t.leakWarning = new Error(
                'Embind found a leaked C++ instance ' +
                  n.name +
                  ' <0x' +
                  r.ptr.toString(16) +
                  ">.\nWe'll free it automatically in this case, but this functionality is not reliable across various environments.\nMake sure to invoke .delete() manually once you're done with the instance instead.\nOriginally allocated",
              )),
                'captureStackTrace' in Error && Error.captureStackTrace(t.leakWarning, mr),
                er.register(e, t, e);
            }
            return e;
          }),
          (rr = (e) => er.unregister(e)),
          hr(e));
    }
    function gr() {
      if ((this.$$.ptr || Ze(this), this.$$.preservePointerOnDelete))
        return (this.$$.count.value += 1), this;
      var e,
        r = hr(
          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 (r.$$.count.value += 1), (r.$$.deleteScheduled = !1), r;
    }
    function vr() {
      this.$$.ptr || Ze(this),
        this.$$.deleteScheduled &&
          !this.$$.preservePointerOnDelete &&
          Ye('Object already scheduled for deletion'),
        rr(this),
        tr(this.$$),
        this.$$.preservePointerOnDelete || ((this.$$.smartPtr = void 0), (this.$$.ptr = void 0));
    }
    function yr() {
      return !this.$$.ptr;
    }
    function Er() {
      return (
        this.$$.ptr || Ze(this),
        this.$$.deleteScheduled &&
          !this.$$.preservePointerOnDelete &&
          Ye('Object already scheduled for deletion'),
        sr.push(this),
        1 === sr.length && ur && ur(lr),
        (this.$$.deleteScheduled = !0),
        this
      );
    }
    function wr() {}
    function br(e, r, t) {
      if (void 0 === e[r].overloadTable) {
        var n = e[r];
        (e[r] = function () {
          return (
            e[r].overloadTable.hasOwnProperty(arguments.length) ||
              Ye(
                "Function '" +
                  t +
                  "' called with an invalid number of arguments (" +
                  arguments.length +
                  ') - expects one of (' +
                  e[r].overloadTable +
                  ')!',
              ),
            e[r].overloadTable[arguments.length].apply(this, arguments)
          );
        }),
          (e[r].overloadTable = []),
          (e[r].overloadTable[n.argCount] = n);
      }
    }
    function _r(e, r, t, n, o, a, i, s) {
      (this.name = e),
        (this.constructor = r),
        (this.instancePrototype = t),
        (this.rawDestructor = n),
        (this.baseClass = o),
        (this.getActualType = a),
        (this.upcast = i),
        (this.downcast = s),
        (this.pureVirtualFunctions = []);
    }
    function Tr(e, r, t) {
      for (; r !== t; )
        r.upcast || Ye('Expected null or instance of ' + t.name + ', got an instance of ' + r.name),
          (e = r.upcast(e)),
          (r = r.baseClass);
      return e;
    }
    function kr(e, r) {
      if (null === r) return this.isReference && Ye('null is not a valid ' + this.name), 0;
      r.$$ || Ye('Cannot pass "' + Xr(r) + '" as a ' + this.name),
        r.$$.ptr || Ye('Cannot pass deleted object as a pointer of type ' + this.name);
      var t = r.$$.ptrType.registeredClass;
      return Tr(r.$$.ptr, t, this.registeredClass);
    }
    function Sr(e, r) {
      var t;
      if (null === r)
        return (
          this.isReference && Ye('null is not a valid ' + this.name),
          this.isSmartPointer
            ? ((t = this.rawConstructor()), null !== e && e.push(this.rawDestructor, t), t)
            : 0
        );
      r.$$ || Ye('Cannot pass "' + Xr(r) + '" as a ' + this.name),
        r.$$.ptr || Ye('Cannot pass deleted object as a pointer of type ' + this.name),
        !this.isConst &&
          r.$$.ptrType.isConst &&
          Ye(
            'Cannot convert argument of type ' +
              (r.$$.smartPtrType ? r.$$.smartPtrType.name : r.$$.ptrType.name) +
              ' to parameter type ' +
              this.name,
          );
      var n = r.$$.ptrType.registeredClass;
      if (((t = Tr(r.$$.ptr, n, this.registeredClass)), this.isSmartPointer))
        switch (
          (void 0 === r.$$.smartPtr && Ye('Passing raw pointer to smart pointer is illegal'),
          this.sharingPolicy)
        ) {
          case 0:
            r.$$.smartPtrType === this
              ? (t = r.$$.smartPtr)
              : Ye(
                  'Cannot convert argument of type ' +
                    (r.$$.smartPtrType ? r.$$.smartPtrType.name : r.$$.ptrType.name) +
                    ' to parameter type ' +
                    this.name,
                );
            break;
          case 1:
            t = r.$$.smartPtr;
            break;
          case 2:
            if (r.$$.smartPtrType === this) t = r.$$.smartPtr;
            else {
              var o = r.clone();
              (t = this.rawShare(
                t,
                Yr.toHandle(function () {
                  o.delete();
                }),
              )),
                null !== e && e.push(this.rawDestructor, t);
            }
            break;
          default:
            Ye('Unsupporting sharing policy');
        }
      return t;
    }
    function Cr(e, r) {
      if (null === r) return this.isReference && Ye('null is not a valid ' + this.name), 0;
      r.$$ || Ye('Cannot pass "' + Xr(r) + '" as a ' + this.name),
        r.$$.ptr || Ye('Cannot pass deleted object as a pointer of type ' + this.name),
        r.$$.ptrType.isConst &&
          Ye(
            'Cannot convert argument of type ' +
              r.$$.ptrType.name +
              ' to parameter type ' +
              this.name,
          );
      var t = r.$$.ptrType.registeredClass;
      return Tr(r.$$.ptr, t, this.registeredClass);
    }
    function Pr(e) {
      return this.fromWireType(W[e >> 2]);
    }
    function Ar(e) {
      return this.rawGetPointee && (e = this.rawGetPointee(e)), e;
    }
    function Dr(e) {
      this.rawDestructor && this.rawDestructor(e);
    }
    function Or(e) {
      null !== e && e.delete();
    }
    function Fr(e, r, t, n, o, a, i, s, l, u, c) {
      (this.name = e),
        (this.registeredClass = r),
        (this.isReference = t),
        (this.isConst = n),
        (this.isSmartPointer = o),
        (this.pointeeType = a),
        (this.sharingPolicy = i),
        (this.rawGetPointee = s),
        (this.rawConstructor = l),
        (this.rawShare = u),
        (this.rawDestructor = c),
        o || void 0 !== r.baseClass
          ? (this.toWireType = Sr)
          : n
          ? ((this.toWireType = kr), (this.destructorFunction = null))
          : ((this.toWireType = Cr), (this.destructorFunction = null));
    }
    function Mr(e, t, n) {
      return e.includes('j')
        ? (function (e, t, n) {
            D('dynCall_' + e in r, "bad function pointer type - no table for sig '" + e + "'"),
              n && n.length
                ? D(n.length === e.substring(1).replace(/j/g, '--').length)
                : D(1 == e.length);
            var o = r['dynCall_' + e];
            return n && n.length ? o.apply(null, [t].concat(n)) : o.call(null, t);
          })(e, t, n)
        : (D(Ce(t), 'missing table entry in dynCall: ' + t), Ce(t).apply(null, n));
    }
    function Rr(e, r) {
      var t = (e = Be(e)).includes('j')
        ? (function (e, r) {
            D(e.includes('j'), 'getDynCaller should only be called with i64 sigs');
            var t = [];
            return function () {
              return (t.length = 0), Object.assign(t, arguments), Mr(e, r, t);
            };
          })(e, r)
        : Ce(r);
      return (
        'function' != typeof t && Ye('unknown function pointer with signature ' + e + ': ' + r), t
      );
    }
    var Nr = void 0;
    function Ir(e) {
      var r = Et(e),
        t = Be(r);
      return ht(r), t;
    }
    function Lr(e, r) {
      var t = [],
        n = {};
      throw (
        (r.forEach(function e(r) {
          n[r] || $e[r] || (We[r] ? We[r].forEach(e) : (t.push(r), (n[r] = !0)));
        }),
        new Nr(e + ': ' + t.map(Ir).join([', '])))
      );
    }
    function xr(e, r) {
      for (var t = [], n = 0; n < e; n++) t.push($[(r >> 2) + n]);
      return t;
    }
    function Ur(e) {
      for (; e.length; ) {
        var r = e.pop();
        e.pop()(r);
      }
    }
    function Br(e, r) {
      if (!(e instanceof Function))
        throw new TypeError(
          'new_ called with constructor type ' + typeof e + ' which is not a function',
        );
      var t = He(e.name || 'unknownFunctionName', function () {});
      t.prototype = e.prototype;
      var n = new t(),
        o = e.apply(n, r);
      return o instanceof Object ? o : n;
    }
    function jr(e, r, t, n, o) {
      var a = r.length;
      a < 2 && Ye("argTypes array size mismatch! Must at least get return value and 'this' types!");
      for (var i = null !== r[1] && null !== t, s = !1, l = 1; l < r.length; ++l)
        if (null !== r[l] && void 0 === r[l].destructorFunction) {
          s = !0;
          break;
        }
      var u = 'void' !== r[0].name,
        c = '',
        d = '';
      for (l = 0; l < a - 2; ++l)
        (c += (0 !== l ? ', ' : '') + 'arg' + l),
          (d += (0 !== l ? ', ' : '') + 'arg' + l + 'Wired');
      var f =
        'return function ' +
        ze(e) +
        '(' +
        c +
        ') {\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',
        m = ['throwBindingError', 'invoker', 'fn', 'runDestructors', 'retType', 'classParam'],
        h = [Ye, n, o, Ur, r[0], r[1]];
      i && (f += 'var thisWired = classParam.toWireType(' + p + ', this);\n');
      for (l = 0; l < a - 2; ++l)
        (f +=
          'var arg' +
          l +
          'Wired = argType' +
          l +
          '.toWireType(' +
          p +
          ', arg' +
          l +
          '); // ' +
          r[l + 2].name +
          '\n'),
          m.push('argType' + l),
          h.push(r[l + 2]);
      if (
        (i && (d = 'thisWired' + (d.length > 0 ? ', ' : '') + d),
        (f += (u ? 'var rv = ' : '') + 'invoker(fn' + (d.length > 0 ? ', ' : '') + d + ');\n'),
        s)
      )
        f += 'runDestructors(destructors);\n';
      else
        for (l = i ? 1 : 2; l < r.length; ++l) {
          var g = 1 === l ? 'thisWired' : 'arg' + (l - 2) + 'Wired';
          null !== r[l].destructorFunction &&
            ((f += g + '_dtor(' + g + '); // ' + r[l].name + '\n'),
            m.push(g + '_dtor'),
            h.push(r[l].destructorFunction));
        }
      return (
        u && (f += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'),
        (f += '}\n'),
        m.push(f),
        Br(Function, m).apply(null, h)
      );
    }
    function $r(e, r, t) {
      return (
        e instanceof Object || Ye(t + ' with invalid "this": ' + e),
        e instanceof r.registeredClass.constructor ||
          Ye(t + ' incompatible with "this" of type ' + e.constructor.name),
        e.$$.ptr || Ye('cannot call emscripten binding method ' + t + ' on deleted object'),
        Tr(e.$$.ptr, e.$$.ptrType.registeredClass, r.registeredClass)
      );
    }
    var Wr = [],
      zr = [{}, { value: void 0 }, { value: null }, { value: !0 }, { value: !1 }];
    function Hr(e) {
      e > 4 && 0 == --zr[e].refcount && ((zr[e] = void 0), Wr.push(e));
    }
    function Gr() {
      for (var e = 0, r = 5; r < zr.length; ++r) void 0 !== zr[r] && ++e;
      return e;
    }
    function Vr() {
      for (var e = 5; e < zr.length; ++e) if (void 0 !== zr[e]) return zr[e];
      return null;
    }
    var Yr = {
      toValue: (e) => (e || Ye('Cannot use deleted val. handle = ' + e), zr[e].value),
      toHandle: (e) => {
        switch (e) {
          case void 0:
            return 1;
          case null:
            return 2;
          case !0:
            return 3;
          case !1:
            return 4;
          default:
            var r = Wr.length ? Wr.pop() : zr.length;
            return (zr[r] = { refcount: 1, value: e }), r;
        }
      },
    };
    function Xr(e) {
      if (null === e) return 'null';
      var r = typeof e;
      return 'object' === r || 'array' === r || 'function' === r ? e.toString() : '' + e;
    }
    function qr(e, r) {
      switch (r) {
        case 2:
          return function (e) {
            return this.fromWireType(z[e >> 2]);
          };
        case 3:
          return function (e) {
            return this.fromWireType(H[e >> 3]);
          };
        default:
          throw new TypeError('Unknown float type: ' + e);
      }
    }
    function Kr(e, r, t) {
      switch (r) {
        case 0:
          return t
            ? function (e) {
                return x[e];
              }
            : function (e) {
                return U[e];
              };
        case 1:
          return t
            ? function (e) {
                return B[e >> 1];
              }
            : function (e) {
                return j[e >> 1];
              };
        case 2:
          return t
            ? function (e) {
                return $[e >> 2];
              }
            : function (e) {
                return W[e >> 2];
              };
        default:
          throw new TypeError('Unknown integer type: ' + e);
      }
    }
    function Jr(e, r) {
      var t = $e[e];
      return void 0 === t && Ye(r + ' has unknown type ' + Ir(e)), t;
    }
    var Qr = {};
    var Zr = [];
    var et = [];
    function rt(e, r) {
      return D(r === (0 | r)), (e >>> 0) + 4294967296 * r;
    }
    function tt(e, r) {
      if (e <= 0) return e;
      var t = r <= 32 ? Math.abs(1 << (r - 1)) : Math.pow(2, r - 1);
      return e >= t && (r <= 32 || e > t) && (e = -2 * t + e), e;
    }
    function nt(e, r) {
      return e >= 0 ? e : r <= 32 ? 2 * Math.abs(1 << (r - 1)) + e : Math.pow(2, r) + e;
    }
    function ot(e, r) {
      D(0 == (3 & r));
      var t = e,
        n = r;
      function o(e) {
        var r;
        return (
          (n = (function (e, r) {
            return (
              'double' === r || 'i64' === r
                ? 7 & e && (D(4 == (7 & e)), (e += 4))
                : D(0 == (3 & e)),
              e
            );
          })(n, e)),
          'double' === e
            ? ((r = Number(H[n >> 3])), (n += 8))
            : 'i64' == e
            ? ((r = [$[n >> 2], $[(n + 4) >> 2]]), (n += 8))
            : (D(0 == (3 & n)), (e = 'i32'), (r = $[n >> 2]), (n += 4)),
          r
        );
      }
      for (var a, i, s, l, u, c, d = []; ; ) {
        var f = t;
        if (0 === (a = x[t >> 0])) break;
        if (((i = x[(t + 1) >> 0]), 37 == a)) {
          var p = !1,
            m = !1,
            h = !1,
            g = !1,
            v = !1;
          e: for (;;) {
            switch (i) {
              case 43:
                p = !0;
                break;
              case 45:
                m = !0;
                break;
              case 35:
                h = !0;
                break;
              case 48:
                if (g) break e;
                g = !0;
                break;
              case 32:
                v = !0;
                break;
              default:
                break e;
            }
            t++, (i = x[(t + 1) >> 0]);
          }
          var y = 0;
          if (42 == i) (y = o('i32')), t++, (i = x[(t + 1) >> 0]);
          else for (; i >= 48 && i <= 57; ) (y = 10 * y + (i - 48)), t++, (i = x[(t + 1) >> 0]);
          var E,
            w = !1,
            b = -1;
          if (46 == i) {
            if (((b = 0), (w = !0), t++, 42 == (i = x[(t + 1) >> 0]))) (b = o('i32')), t++;
            else
              for (;;) {
                var _ = x[(t + 1) >> 0];
                if (_ < 48 || _ > 57) break;
                (b = 10 * b + (_ - 48)), t++;
              }
            i = x[(t + 1) >> 0];
          }
          switch ((b < 0 && ((b = 6), (w = !1)), String.fromCharCode(i))) {
            case 'h':
              104 == x[(t + 2) >> 0] ? (t++, (E = 1)) : (E = 2);
              break;
            case 'l':
              108 == x[(t + 2) >> 0] ? (t++, (E = 8)) : (E = 4);
              break;
            case 'L':
            case 'q':
            case 'j':
              E = 8;
              break;
            case 'z':
            case 't':
            case 'I':
              E = 4;
              break;
            default:
              E = null;
          }
          switch ((E && t++, (i = x[(t + 1) >> 0]), String.fromCharCode(i))) {
            case 'd':
            case 'i':
            case 'u':
            case 'o':
            case 'x':
            case 'X':
            case 'p':
              var T = 100 == i || 105 == i;
              if (
                ((s = o('i' + 8 * (E = E || 4))),
                8 == E &&
                  (s =
                    117 == i
                      ? ((u = s[0]), (c = s[1]), (u >>> 0) + 4294967296 * (c >>> 0))
                      : rt(s[0], s[1])),
                E <= 4)
              )
                s = (T ? tt : nt)(s & (Math.pow(256, E) - 1), 8 * E);
              var k = Math.abs(s),
                S = '';
              if (100 == i || 105 == i) A = tt(s, 8 * E).toString(10);
              else if (117 == i) (A = nt(s, 8 * E).toString(10)), (s = Math.abs(s));
              else if (111 == i) A = (h ? '0' : '') + k.toString(8);
              else if (120 == i || 88 == i) {
                if (((S = h && 0 != s ? '0x' : ''), s < 0)) {
                  (s = -s), (A = (k - 1).toString(16));
                  for (var C = [], P = 0; P < A.length; P++)
                    C.push((15 - parseInt(A[P], 16)).toString(16));
                  for (A = C.join(''); A.length < 2 * E; ) A = 'f' + A;
                } else A = k.toString(16);
                88 == i && ((S = S.toUpperCase()), (A = A.toUpperCase()));
              } else 112 == i && (0 === k ? (A = '(nil)') : ((S = '0x'), (A = k.toString(16))));
              if (w) for (; A.length < b; ) A = '0' + A;
              for (
                s >= 0 && (p ? (S = '+' + S) : v && (S = ' ' + S)),
                  '-' == A.charAt(0) && ((S = '-' + S), (A = A.substr(1)));
                S.length + A.length < y;

              )
                m ? (A += ' ') : g ? (A = '0' + A) : (S = ' ' + S);
              (A = S + A).split('').forEach(function (e) {
                d.push(e.charCodeAt(0));
              });
              break;
            case 'f':
            case 'F':
            case 'e':
            case 'E':
            case 'g':
            case 'G':
              var A;
              if (((s = o('double')), isNaN(s))) (A = 'nan'), (g = !1);
              else if (isFinite(s)) {
                var O = !1,
                  F = Math.min(b, 20);
                if (103 == i || 71 == i) {
                  (O = !0), (b = b || 1);
                  var M = parseInt(s.toExponential(F).split('e')[1], 10);
                  b > M && M >= -4
                    ? ((i = (103 == i ? 'f' : 'F').charCodeAt(0)), (b -= M + 1))
                    : ((i = (103 == i ? 'e' : 'E').charCodeAt(0)), b--),
                    (F = Math.min(b, 20));
                }
                101 == i || 69 == i
                  ? ((A = s.toExponential(F)),
                    /[eE][-+]\d$/.test(A) && (A = A.slice(0, -1) + '0' + A.slice(-1)))
                  : (102 != i && 70 != i) ||
                    ((A = s.toFixed(F)),
                    0 === s && ((l = s) < 0 || (0 === l && 1 / l == -1 / 0)) && (A = '-' + A));
                var R = A.split('e');
                if (O && !h)
                  for (
                    ;
                    R[0].length > 1 &&
                    R[0].includes('.') &&
                    ('0' == R[0].slice(-1) || '.' == R[0].slice(-1));

                  )
                    R[0] = R[0].slice(0, -1);
                else for (h && -1 == A.indexOf('.') && (R[0] += '.'); b > F++; ) R[0] += '0';
                (A = R[0] + (R.length > 1 ? 'e' + R[1] : '')),
                  69 == i && (A = A.toUpperCase()),
                  s >= 0 && (p ? (A = '+' + A) : v && (A = ' ' + A));
              } else (A = (s < 0 ? '-' : '') + 'inf'), (g = !1);
              for (; A.length < y; )
                m
                  ? (A += ' ')
                  : (A =
                      !g || ('-' != A[0] && '+' != A[0])
                        ? (g ? '0' : ' ') + A
                        : A[0] + '0' + A.slice(1));
              i < 97 && (A = A.toUpperCase()),
                A.split('').forEach(function (e) {
                  d.push(e.charCodeAt(0));
                });
              break;
            case 's':
              var N = o('i8*'),
                I = N ? vt(N) : '(null)'.length;
              if ((w && (I = Math.min(I, b)), !m)) for (; I < y--; ) d.push(32);
              if (N) for (P = 0; P < I; P++) d.push(U[N++ >> 0]);
              else d = d.concat(pt('(null)'.substr(0, I), !0));
              if (m) for (; I < y--; ) d.push(32);
              break;
            case 'c':
              for (m && d.push(o('i8')); --y > 0; ) d.push(32);
              m || d.push(o('i8'));
              break;
            case 'n':
              var L = o('i32*');
              $[L >> 2] = d.length;
              break;
            case '%':
              d.push(a);
              break;
            default:
              for (P = f; P < t + 2; P++) d.push(x[P >> 0]);
          }
          t += 2;
        } else d.push(a), (t += 1);
      }
      return d;
    }
    function at(e) {
      if (!e || !e.callee || !e.callee.name) return [null, '', ''];
      e.callee.toString();
      var r = e.callee.name,
        t = '(',
        n = !0;
      for (var o in e) {
        var a = e[o];
        n || (t += ', '),
          (n = !1),
          (t += 'number' == typeof a || 'string' == typeof a ? a : '(' + typeof a + ')');
      }
      t += ')';
      var i = e.callee.caller;
      return n && (t = ''), [(e = i ? i.arguments : []), r, t];
    }
    function it(e, r) {
      24 & e &&
        ((r = r.replace(/\s+$/, '')),
        (r +=
          (r.length > 0 ? '\n' : '') +
          (function (e) {
            var r = Pe(),
              t = r.lastIndexOf('_emscripten_log'),
              n = r.lastIndexOf('_emscripten_get_callstack'),
              o = r.indexOf('\n', Math.max(t, n)) + 1;
            (r = r.slice(o)),
              32 & e && T('EM_LOG_DEMANGLE is deprecated; ignoring'),
              8 & e &&
                'undefined' == typeof emscripten_source_map &&
                (T(
                  '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 = at(arguments); a[1].includes('_emscripten_'); ) a = at(a[0]);
            var i = r.split('\n');
            r = '';
            var s = new RegExp('\\s*(.*?)@(.*?):([0-9]+):([0-9]+)'),
              l = new RegExp('\\s*(.*?)@(.*):(.*)(:(.*))?'),
              u = new RegExp('\\s*at (.*?) \\((.*):(.*):(.*)\\)');
            for (var c in i) {
              var d = i[c],
                f = '',
                p = '',
                m = 0,
                h = 0,
                g = u.exec(d);
              if (g && 5 == g.length) (f = g[1]), (p = g[2]), (m = g[3]), (h = g[4]);
              else {
                if (((g = s.exec(d)) || (g = l.exec(d)), !(g && g.length >= 4))) {
                  r += d + '\n';
                  continue;
                }
                (f = g[1]), (p = g[2]), (m = g[3]), (h = 0 | g[4]);
              }
              var v = !1;
              if (8 & e) {
                var y = emscripten_source_map.originalPositionFor({ line: m, column: h });
                (v = y && y.source) &&
                  (64 & e &&
                    (y.source = y.source.substring(
                      y.source.replace(/\\/g, '/').lastIndexOf('/') + 1,
                    )),
                  (r += '    at ' + f + ' (' + y.source + ':' + y.line + ':' + y.column + ')\n'));
              }
              (16 & e || !v) &&
                (64 & e && (p = p.substring(p.replace(/\\/g, '/').lastIndexOf('/') + 1)),
                (r += (v ? '     = ' + f : '    at ' + f) + ' (' + p + ':' + m + ':' + h + ')\n')),
                128 & e &&
                  a[0] &&
                  (a[1] == f &&
                    a[2].length > 0 &&
                    ((r = r.replace(/\s+$/, '')), (r += ' with values: ' + a[1] + a[2] + '\n')),
                  (a = at(a[0])));
            }
            return r.replace(/\s+$/, '');
          })(e))),
        1 & e
          ? 4 & e
            ? console.error(r)
            : 2 & e
            ? console.warn(r)
            : 512 & e
            ? console.info(r)
            : 256 & e
            ? console.debug(r)
            : console.log(r)
          : 6 & e
          ? _(r)
          : b(r);
    }
    function st(e) {
      try {
        return w.grow((e - L.byteLength + 65535) >>> 16), Z(w.buffer), 1;
      } catch (r) {
        _(
          'emscripten_realloc_buffer: Attempted to grow heap from ' +
            L.byteLength +
            ' bytes to ' +
            e +
            ' bytes, but got error: ' +
            r,
        );
      }
    }
    var lt = {};
    function ut() {
      if (!ut.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',
          _: n || './this.program',
        };
        for (var r in lt) void 0 === lt[r] ? delete e[r] : (e[r] = lt[r]);
        var t = [];
        for (var r in e) t.push(r + '=' + e[r]);
        ut.strings = t;
      }
      return ut.strings;
    }
    var ct = function (e, r, t, n) {
        e || (e = this),
          (this.parent = e),
          (this.mount = e.mount),
          (this.mounted = null),
          (this.id = Ie.nextInode++),
          (this.name = r),
          (this.mode = t),
          (this.node_ops = {}),
          (this.stream_ops = {}),
          (this.rdev = n);
      },
      dt = 365,
      ft = 146;
    function pt(e, r, t) {
      var n = t > 0 ? t : I(e) + 1,
        o = new Array(n),
        a = R(e, o, 0, o.length);
      return r && (o.length = a), o;
    }
    Object.defineProperties(ct.prototype, {
      read: {
        get: function () {
          return (this.mode & dt) === dt;
        },
        set: function (e) {
          e ? (this.mode |= dt) : (this.mode &= -366);
        },
      },
      write: {
        get: function () {
          return (this.mode & ft) === ft;
        },
        set: function (e) {
          e ? (this.mode |= ft) : (this.mode &= -147);
        },
      },
      isFolder: {
        get: function () {
          return Ie.isDir(this.mode);
        },
      },
      isDevice: {
        get: function () {
          return Ie.isChrdev(this.mode);
        },
      },
    }),
      (Ie.FSNode = ct),
      Ie.staticInit(),
      (Ne = {
        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,
      }),
      (function () {
        for (var e = new Array(256), r = 0; r < 256; ++r) e[r] = String.fromCharCode(r);
        Ue = e;
      })(),
      (Ve = r.BindingError = Ge(Error, 'BindingError')),
      (Xe = r.InternalError = Ge(Error, 'InternalError')),
      (wr.prototype.isAliasOf = Qe),
      (wr.prototype.clone = gr),
      (wr.prototype.delete = vr),
      (wr.prototype.isDeleted = yr),
      (wr.prototype.deleteLater = Er),
      (r.getInheritedInstanceCount = ar),
      (r.getLiveInheritedInstances = ir),
      (r.flushPendingDeletes = lr),
      (r.setDelayFunction = cr),
      (Fr.prototype.getPointee = Ar),
      (Fr.prototype.destructor = Dr),
      (Fr.prototype.argPackAdvance = 8),
      (Fr.prototype.readValueFromPointer = Pr),
      (Fr.prototype.deleteObject = Or),
      (Fr.prototype.fromWireType = mr),
      (Nr = r.UnboundTypeError = Ge(Error, 'UnboundTypeError')),
      (r.count_emval_handles = Gr),
      (r.get_first_emval = Vr);
    var mt = {
      __syscall_fcntl64: function (e, r, t) {
        Le.varargs = t;
        try {
          var n = Le.getStreamFromFD(e);
          switch (r) {
            case 0:
              return (o = Le.get()) < 0 ? -28 : Ie.createStream(n, o).fd;
            case 1:
            case 2:
            case 6:
            case 7:
              return 0;
            case 3:
              return n.flags;
            case 4:
              var o = Le.get();
              return (n.flags |= o), 0;
            case 5:
              o = Le.get();
              return (B[(o + 0) >> 1] = 2), 0;
            case 16:
            case 8:
            default:
              return -28;
            case 9:
              return (a = 28), ($[yt() >> 2] = a), -1;
          }
        } catch (e) {
          if (void 0 === Ie || !(e instanceof Ie.ErrnoError)) throw e;
          return -e.errno;
        }
        var a;
      },
      __syscall_openat: function (e, r, t, n) {
        Le.varargs = n;
        try {
          (r = Le.getStr(r)), (r = Le.calculateAt(e, r));
          var o = n ? Le.get() : 0;
          return Ie.open(r, t, o).fd;
        } catch (e) {
          if (void 0 === Ie || !(e instanceof Ie.ErrnoError)) throw e;
          return -e.errno;
        }
      },
      _embind_register_bigint: function (e, r, t, n, o) {},
      _embind_register_bool: function (e, r, t, n, o) {
        var a = xe(t);
        Je(e, {
          name: (r = Be(r)),
          fromWireType: function (e) {
            return !!e;
          },
          toWireType: function (e, r) {
            return r ? n : o;
          },
          argPackAdvance: 8,
          readValueFromPointer: function (e) {
            var n;
            if (1 === t) n = x;
            else if (2 === t) n = B;
            else {
              if (4 !== t) throw new TypeError('Unknown boolean type size: ' + r);
              n = $;
            }
            return this.fromWireType(n[e >> a]);
          },
          destructorFunction: null,
        });
      },
      _embind_register_class: function (e, t, n, o, a, i, s, l, u, c, d, f, p) {
        (d = Be(d)), (i = Rr(a, i)), l && (l = Rr(s, l)), c && (c = Rr(u, c)), (p = Rr(f, p));
        var m = ze(d);
        !(function (e, t, n) {
          r.hasOwnProperty(e)
            ? ((void 0 === n ||
                (void 0 !== r[e].overloadTable && void 0 !== r[e].overloadTable[n])) &&
                Ye("Cannot register public name '" + e + "' twice"),
              br(r, e, e),
              r.hasOwnProperty(n) &&
                Ye(
                  'Cannot register multiple overloads of a function with the same number of arguments (' +
                    n +
                    ')!',
                ),
              (r[e].overloadTable[n] = t))
            : ((r[e] = t), void 0 !== n && (r[e].numArguments = n));
        })(m, function () {
          Lr('Cannot construct ' + d + ' due to unbound types', [o]);
        }),
          Ke([e, t, n], o ? [o] : [], function (t) {
            var n, a;
            (t = t[0]), (a = o ? (n = t.registeredClass).instancePrototype : wr.prototype);
            var s = He(m, function () {
                if (Object.getPrototypeOf(this) !== u) throw new Ve("Use 'new' to construct " + d);
                if (void 0 === f.constructor_body)
                  throw new Ve(d + ' has no accessible constructor');
                var e = f.constructor_body[arguments.length];
                if (void 0 === e)
                  throw new Ve(
                    'Tried to invoke ctor of ' +
                      d +
                      ' with invalid number of parameters (' +
                      arguments.length +
                      ') - expected (' +
                      Object.keys(f.constructor_body).toString() +
                      ') parameters instead!',
                  );
                return e.apply(this, arguments);
              }),
              u = Object.create(a, { constructor: { value: s } });
            s.prototype = u;
            var f = new _r(d, s, u, p, n, i, l, c),
              h = new Fr(d, f, !0, !1, !1),
              g = new Fr(d + '*', f, !1, !1, !1),
              v = new Fr(d + ' const*', f, !1, !0, !1);
            return (
              (or[e] = { pointerType: g, constPointerType: v }),
              (function (e, t, n) {
                r.hasOwnProperty(e) || qe('Replacing nonexistant public symbol'),
                  void 0 !== r[e].overloadTable && void 0 !== n
                    ? (r[e].overloadTable[n] = t)
                    : ((r[e] = t), (r[e].argCount = n));
              })(m, s),
              [h, g, v]
            );
          });
      },
      _embind_register_class_constructor: function (e, r, t, n, o, a) {
        D(r > 0);
        var i = xr(r, t);
        (o = Rr(n, o)),
          Ke([], [e], function (e) {
            var t = 'constructor ' + (e = e[0]).name;
            if (
              (void 0 === e.registeredClass.constructor_body &&
                (e.registeredClass.constructor_body = []),
              void 0 !== e.registeredClass.constructor_body[r - 1])
            )
              throw new Ve(
                'Cannot register multiple constructors with identical number of parameters (' +
                  (r - 1) +
                  ") for class '" +
                  e.name +
                  "'! Overload resolution is currently only performed using the parameter count, not actual type info!",
              );
            return (
              (e.registeredClass.constructor_body[r - 1] = () => {
                Lr('Cannot construct ' + e.name + ' due to unbound types', i);
              }),
              Ke([], i, function (n) {
                return (
                  n.splice(1, 0, null),
                  (e.registeredClass.constructor_body[r - 1] = jr(t, n, null, o, a)),
                  []
                );
              }),
              []
            );
          });
      },
      _embind_register_class_function: function (e, r, t, n, o, a, i, s) {
        var l = xr(t, n);
        (r = Be(r)),
          (a = Rr(o, a)),
          Ke([], [e], function (e) {
            var n = (e = e[0]).name + '.' + r;
            function o() {
              Lr('Cannot call ' + n + ' due to unbound types', l);
            }
            r.startsWith('@@') && (r = Symbol[r.substring(2)]),
              s && e.registeredClass.pureVirtualFunctions.push(r);
            var u = e.registeredClass.instancePrototype,
              c = u[r];
            return (
              void 0 === c ||
              (void 0 === c.overloadTable && c.className !== e.name && c.argCount === t - 2)
                ? ((o.argCount = t - 2), (o.className = e.name), (u[r] = o))
                : (br(u, r, n), (u[r].overloadTable[t - 2] = o)),
              Ke([], l, function (o) {
                var s = jr(n, o, e, a, i);
                return (
                  void 0 === u[r].overloadTable
                    ? ((s.argCount = t - 2), (u[r] = s))
                    : (u[r].overloadTable[t - 2] = s),
                  []
                );
              }),
              []
            );
          });
      },
      _embind_register_class_property: function (e, r, t, n, o, a, i, s, l, u) {
        (r = Be(r)),
          (o = Rr(n, o)),
          Ke([], [e], function (e) {
            var n = (e = e[0]).name + '.' + r,
              c = {
                get: function () {
                  Lr('Cannot access ' + n + ' due to unbound types', [t, i]);
                },
                enumerable: !0,
                configurable: !0,
              };
            return (
              (c.set = l
                ? () => {
                    Lr('Cannot access ' + n + ' due to unbound types', [t, i]);
                  }
                : (e) => {
                    Ye(n + ' is a read-only property');
                  }),
              Object.defineProperty(e.registeredClass.instancePrototype, r, c),
              Ke([], l ? [t, i] : [t], function (t) {
                var i = t[0],
                  c = {
                    get: function () {
                      var r = $r(this, e, n + ' getter');
                      return i.fromWireType(o(a, r));
                    },
                    enumerable: !0,
                  };
                if (l) {
                  l = Rr(s, l);
                  var d = t[1];
                  c.set = function (r) {
                    var t = $r(this, e, n + ' setter'),
                      o = [];
                    l(u, t, d.toWireType(o, r)), Ur(o);
                  };
                }
                return Object.defineProperty(e.registeredClass.instancePrototype, r, c), [];
              }),
              []
            );
          });
      },
      _embind_register_emval: function (e, r) {
        Je(e, {
          name: (r = Be(r)),
          fromWireType: function (e) {
            var r = Yr.toValue(e);
            return Hr(e), r;
          },
          toWireType: function (e, r) {
            return Yr.toHandle(r);
          },
          argPackAdvance: 8,
          readValueFromPointer: Pr,
          destructorFunction: null,
        });
      },
      _embind_register_float: function (e, r, t) {
        var n = xe(t);
        Je(e, {
          name: (r = Be(r)),
          fromWireType: function (e) {
            return e;
          },
          toWireType: function (e, r) {
            if ('number' != typeof r && 'boolean' != typeof r)
              throw new TypeError('Cannot convert "' + Xr(r) + '" to ' + this.name);
            return r;
          },
          argPackAdvance: 8,
          readValueFromPointer: qr(r, n),
          destructorFunction: null,
        });
      },
      _embind_register_integer: function (e, r, t, n, o) {
        (r = Be(r)), -1 === o && (o = 4294967295);
        var a = xe(t),
          i = (e) => e;
        if (0 === n) {
          var s = 32 - 8 * t;
          i = (e) => (e << s) >>> s;
        }
        var l = r.includes('unsigned'),
          u = (e, t) => {
            if ('number' != typeof e && 'boolean' != typeof e)
              throw new TypeError('Cannot convert "' + Xr(e) + '" to ' + t);
            if (e < n || e > o)
              throw new TypeError(
                'Passing a number "' +
                  Xr(e) +
                  '" from JS side to C/C++ side to an argument of type "' +
                  r +
                  '", which is outside the valid range [' +
                  n +
                  ', ' +
                  o +
                  ']!',
              );
          };
        Je(e, {
          name: r,
          fromWireType: i,
          toWireType: l
            ? function (e, r) {
                return u(r, this.name), r >>> 0;
              }
            : function (e, r) {
                return u(r, this.name), r;
              },
          argPackAdvance: 8,
          readValueFromPointer: Kr(r, a, 0 !== n),
          destructorFunction: null,
        });
      },
      _embind_register_memory_view: function (e, r, t) {
        var n = [
          Int8Array,
          Uint8Array,
          Int16Array,
          Uint16Array,
          Int32Array,
          Uint32Array,
          Float32Array,
          Float64Array,
        ][r];
        function o(e) {
          var r = W,
            t = r[(e >>= 2)],
            o = r[e + 1];
          return new n(L, o, t);
        }
        Je(
          e,
          { name: (t = Be(t)), fromWireType: o, argPackAdvance: 8, readValueFromPointer: o },
          { ignoreDuplicateRegistrations: !0 },
        );
      },
      _embind_register_std_string: function (e, r) {
        var t = 'std::string' === (r = Be(r));
        Je(e, {
          name: r,
          fromWireType: function (e) {
            var r,
              n = W[e >> 2];
            if (t)
              for (var o = e + 4, a = 0; a <= n; ++a) {
                var i = e + 4 + a;
                if (a == n || 0 == U[i]) {
                  var s = M(o, i - o);
                  void 0 === r ? (r = s) : ((r += String.fromCharCode(0)), (r += s)), (o = i + 1);
                }
              }
            else {
              var l = new Array(n);
              for (a = 0; a < n; ++a) l[a] = String.fromCharCode(U[e + 4 + a]);
              r = l.join('');
            }
            return ht(e), r;
          },
          toWireType: function (e, r) {
            r instanceof ArrayBuffer && (r = new Uint8Array(r));
            var n = 'string' == typeof r;
            n ||
              r instanceof Uint8Array ||
              r instanceof Uint8ClampedArray ||
              r instanceof Int8Array ||
              Ye('Cannot pass non-string to std::string');
            var o = (t && n ? () => I(r) : () => r.length)(),
              a = gt(4 + o + 1);
            if (((W[a >> 2] = o), t && n)) N(r, a + 4, o + 1);
            else if (n)
              for (var i = 0; i < o; ++i) {
                var s = r.charCodeAt(i);
                s > 255 && (ht(a), Ye('String has UTF-16 code units that do not fit in 8 bits')),
                  (U[a + 4 + i] = s);
              }
            else for (i = 0; i < o; ++i) U[a + 4 + i] = r[i];
            return null !== e && e.push(ht, a), a;
          },
          argPackAdvance: 8,
          readValueFromPointer: Pr,
          destructorFunction: function (e) {
            ht(e);
          },
        });
      },
      _embind_register_std_wstring: function (e, r, t) {
        var n, o, a, i, s;
        (t = Be(t)),
          2 === r
            ? ((n = V), (o = Y), (i = X), (a = () => j), (s = 1))
            : 4 === r && ((n = q), (o = K), (i = J), (a = () => W), (s = 2)),
          Je(e, {
            name: t,
            fromWireType: function (e) {
              for (var t, o = W[e >> 2], i = a(), l = e + 4, u = 0; u <= o; ++u) {
                var c = e + 4 + u * r;
                if (u == o || 0 == i[c >> s]) {
                  var d = n(l, c - l);
                  void 0 === t ? (t = d) : ((t += String.fromCharCode(0)), (t += d)), (l = c + r);
                }
              }
              return ht(e), t;
            },
            toWireType: function (e, n) {
              'string' != typeof n && Ye('Cannot pass non-string to C++ string type ' + t);
              var a = i(n),
                l = gt(4 + a + r);
              return (W[l >> 2] = a >> s), o(n, l + 4, a + r), null !== e && e.push(ht, l), l;
            },
            argPackAdvance: 8,
            readValueFromPointer: Pr,
            destructorFunction: function (e) {
              ht(e);
            },
          });
      },
      _embind_register_void: function (e, r) {
        Je(e, {
          isVoid: !0,
          name: (r = Be(r)),
          argPackAdvance: 0,
          fromWireType: function () {},
          toWireType: function (e, r) {},
        });
      },
      _emscripten_date_now: function () {
        return Date.now();
      },
      _emval_as: function (e, r, t) {
        (e = Yr.toValue(e)), (r = Jr(r, 'emval::as'));
        var n = [],
          o = Yr.toHandle(n);
        return ($[t >> 2] = o), r.toWireType(n, e);
      },
      _emval_call_void_method: function (e, r, t, n) {
        var o, a;
        (e = Zr[e])((r = Yr.toValue(r)), (t = void 0 === (a = Qr[(o = t)]) ? Be(o) : a), null, n);
      },
      _emval_decref: Hr,
      _emval_get_method_caller: function (e, r) {
        var t = (function (e, r) {
            for (var t = new Array(e), n = 0; n < e; ++n)
              t[n] = Jr($[(r >> 2) + n], 'parameter ' + n);
            return t;
          })(e, r),
          n = t[0],
          o =
            n.name +
            '_$' +
            t
              .slice(1)
              .map(function (e) {
                return e.name;
              })
              .join('_') +
            '$',
          a = et[o];
        if (void 0 !== a) return a;
        for (var i = ['retType'], s = [n], l = '', u = 0; u < e - 1; ++u)
          (l += (0 !== u ? ', ' : '') + 'arg' + u), i.push('argType' + u), s.push(t[1 + u]);
        var c =
            'return function ' + ze('methodCaller_' + o) + '(handle, name, destructors, args) {\n',
          d = 0;
        for (u = 0; u < e - 1; ++u)
          (c +=
            '    var arg' +
            u +
            ' = argType' +
            u +
            '.readValueFromPointer(args' +
            (d ? '+' + d : '') +
            ');\n'),
            (d += t[u + 1].argPackAdvance);
        for (c += '    var rv = handle[name](' + l + ');\n', u = 0; u < e - 1; ++u)
          t[u + 1].deleteObject && (c += '    argType' + u + '.deleteObject(arg' + u + ');\n');
        n.isVoid || (c += '    return retType.toWireType(destructors, rv);\n'),
          (c += '};\n'),
          i.push(c);
        var f,
          p,
          m = Br(Function, i).apply(null, s);
        return (f = m), (p = Zr.length), Zr.push(f), (a = p), (et[o] = a), a;
      },
      _emval_incref: function (e) {
        e > 4 && (zr[e].refcount += 1);
      },
      _emval_run_destructors: function (e) {
        Ur(Yr.toValue(e)), Hr(e);
      },
      _emval_take_value: function (e, r) {
        var t = (e = Jr(e, '_emval_take_value')).readValueFromPointer(r);
        return Yr.toHandle(t);
      },
      _gmtime_js: function (e, r) {
        var t = new Date(1e3 * $[e >> 2]);
        ($[r >> 2] = t.getUTCSeconds()),
          ($[(r + 4) >> 2] = t.getUTCMinutes()),
          ($[(r + 8) >> 2] = t.getUTCHours()),
          ($[(r + 12) >> 2] = t.getUTCDate()),
          ($[(r + 16) >> 2] = t.getUTCMonth()),
          ($[(r + 20) >> 2] = t.getUTCFullYear() - 1900),
          ($[(r + 24) >> 2] = t.getUTCDay());
        var n = Date.UTC(t.getUTCFullYear(), 0, 1, 0, 0, 0, 0),
          o = ((t.getTime() - n) / 864e5) | 0;
        $[(r + 28) >> 2] = o;
      },
      _localtime_js: function (e, r) {
        var t = new Date(1e3 * $[e >> 2]);
        ($[r >> 2] = t.getSeconds()),
          ($[(r + 4) >> 2] = t.getMinutes()),
          ($[(r + 8) >> 2] = t.getHours()),
          ($[(r + 12) >> 2] = t.getDate()),
          ($[(r + 16) >> 2] = t.getMonth()),
          ($[(r + 20) >> 2] = t.getFullYear() - 1900),
          ($[(r + 24) >> 2] = t.getDay());
        var n = new Date(t.getFullYear(), 0, 1),
          o = ((t.getTime() - n.getTime()) / 864e5) | 0;
        ($[(r + 28) >> 2] = o), ($[(r + 36) >> 2] = -60 * t.getTimezoneOffset());
        var a = new Date(t.getFullYear(), 6, 1).getTimezoneOffset(),
          i = n.getTimezoneOffset(),
          s = 0 | (a != i && t.getTimezoneOffset() == Math.min(i, a));
        $[(r + 32) >> 2] = s;
      },
      _mktime_js: function (e) {
        var r = new Date(
            $[(e + 20) >> 2] + 1900,
            $[(e + 16) >> 2],
            $[(e + 12) >> 2],
            $[(e + 8) >> 2],
            $[(e + 4) >> 2],
            $[e >> 2],
            0,
          ),
          t = $[(e + 32) >> 2],
          n = r.getTimezoneOffset(),
          o = new Date(r.getFullYear(), 0, 1),
          a = new Date(r.getFullYear(), 6, 1).getTimezoneOffset(),
          i = o.getTimezoneOffset(),
          s = Math.min(i, a);
        if (t < 0) $[(e + 32) >> 2] = Number(a != i && s == n);
        else if (t > 0 != (s == n)) {
          var l = Math.max(i, a),
            u = t > 0 ? s : l;
          r.setTime(r.getTime() + 6e4 * (u - n));
        }
        $[(e + 24) >> 2] = r.getDay();
        var c = ((r.getTime() - o.getTime()) / 864e5) | 0;
        return (
          ($[(e + 28) >> 2] = c),
          ($[e >> 2] = r.getSeconds()),
          ($[(e + 4) >> 2] = r.getMinutes()),
          ($[(e + 8) >> 2] = r.getHours()),
          ($[(e + 12) >> 2] = r.getDate()),
          ($[(e + 16) >> 2] = r.getMonth()),
          (r.getTime() / 1e3) | 0
        );
      },
      _tzset_js: function e(r, t, n) {
        e.called ||
          ((e.called = !0),
          (function (e, r, t) {
            var n = new Date().getFullYear(),
              o = new Date(n, 0, 1),
              a = new Date(n, 6, 1),
              i = o.getTimezoneOffset(),
              s = a.getTimezoneOffset(),
              l = Math.max(i, s);
            function u(e) {
              var r = e.toTimeString().match(/\(([A-Za-z ]+)\)$/);
              return r ? r[1] : 'GMT';
            }
            ($[e >> 2] = 60 * l), ($[r >> 2] = Number(i != s));
            var c = u(o),
              d = u(a),
              f = Q(c),
              p = Q(d);
            s < i
              ? (($[t >> 2] = f), ($[(t + 4) >> 2] = p))
              : (($[t >> 2] = p), ($[(t + 4) >> 2] = f));
          })(r, t, n));
      },
      abort: function () {
        ge('native code called abort()');
      },
      emscripten_log: function (e, r, t) {
        it(e, F(ot(r, t), 0));
      },
      emscripten_resize_heap: function (e) {
        var r = U.length;
        D((e >>>= 0) > r);
        var t,
          n,
          o = 2147483648;
        if (e > o)
          return (
            _(
              'Cannot enlarge memory, asked to go up to ' +
                e +
                ' bytes, but the limit is ' +
                '2147483648 bytes!',
            ),
            !1
          );
        for (var a = 1; a <= 4; a *= 2) {
          var i = r * (1 + 0.2 / a);
          i = Math.min(i, e + 100663296);
          var s = Math.min(o, (t = Math.max(e, i)) + (((n = 65536) - (t % n)) % n));
          if (st(s)) return !0;
        }
        return (
          _('Failed to grow the heap from ' + r + ' bytes to ' + s + ' bytes, not enough memory!'),
          !1
        );
      },
      environ_get: function (e, r) {
        var t = 0;
        return (
          ut().forEach(function (n, o) {
            var a = r + t;
            ($[(e + 4 * o) >> 2] = a),
              (function (e, r, t) {
                for (var n = 0; n < e.length; ++n)
                  D(e.charCodeAt(n) === (255 & e.charCodeAt(n))), (x[r++ >> 0] = e.charCodeAt(n));
                t || (x[r >> 0] = 0);
              })(n, a),
              (t += n.length + 1);
          }),
          0
        );
      },
      environ_sizes_get: function (e, r) {
        var t = ut();
        $[e >> 2] = t.length;
        var n = 0;
        return (
          t.forEach(function (e) {
            n += e.length + 1;
          }),
          ($[r >> 2] = n),
          0
        );
      },
      fd_close: function (e) {
        try {
          var r = Le.getStreamFromFD(e);
          return Ie.close(r), 0;
        } catch (e) {
          if (void 0 === Ie || !(e instanceof Ie.ErrnoError)) throw e;
          return e.errno;
        }
      },
      fd_fdstat_get: function (e, r) {
        try {
          var t = Le.getStreamFromFD(e),
            n = t.tty ? 2 : Ie.isDir(t.mode) ? 3 : Ie.isLink(t.mode) ? 7 : 4;
          return (x[r >> 0] = n), 0;
        } catch (e) {
          if (void 0 === Ie || !(e instanceof Ie.ErrnoError)) throw e;
          return e.errno;
        }
      },
      fd_read: function (e, r, t, n) {
        try {
          var o = Le.getStreamFromFD(e),
            a = Le.doReadv(o, r, t);
          return ($[n >> 2] = a), 0;
        } catch (e) {
          if (void 0 === Ie || !(e instanceof Ie.ErrnoError)) throw e;
          return e.errno;
        }
      },
      fd_seek: function (e, r, t, n, o) {
        try {
          var a = Le.getStreamFromFD(e),
            i = 4294967296 * t + (r >>> 0),
            s = 9007199254740992;
          return i <= -s || i >= s
            ? -61
            : (Ie.llseek(a, i, n),
              (Ee = [
                a.position >>> 0,
                ((ye = a.position),
                +Math.abs(ye) >= 1
                  ? ye > 0
                    ? (0 | Math.min(+Math.floor(ye / 4294967296), 4294967295)) >>> 0
                    : ~~+Math.ceil((ye - +(~~ye >>> 0)) / 4294967296) >>> 0
                  : 0),
              ]),
              ($[o >> 2] = Ee[0]),
              ($[(o + 4) >> 2] = Ee[1]),
              a.getdents && 0 === i && 0 === n && (a.getdents = null),
              0);
        } catch (e) {
          if (void 0 === Ie || !(e instanceof Ie.ErrnoError)) throw e;
          return e.errno;
        }
      },
      fd_write: function (e, r, t, n) {
        try {
          var o = Le.getStreamFromFD(e),
            a = Le.doWritev(o, r, t);
          return ($[n >> 2] = a), 0;
        } catch (e) {
          if (void 0 === Ie || !(e instanceof Ie.ErrnoError)) throw e;
          return e.errno;
        }
      },
      setTempRet0: function (e) {},
    };
    !(function () {
      var e = { env: mt, wasi_snapshot_preview1: mt };
      function t(e, t) {
        var n,
          o = e.exports;
        (r.asm = o),
          D((w = r.asm.memory), 'memory not found in wasm exports'),
          Z(w.buffer),
          D((re = r.asm.__indirect_function_table), 'table not found in wasm exports'),
          (n = r.asm.__wasm_call_ctors),
          ie.unshift(n),
          he('wasm-instantiate');
      }
      me('wasm-instantiate');
      var n = r;
      function o(e) {
        D(
          r === n,
          'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?',
        ),
          (n = null),
          t(e.instance);
      }
      function a(r) {
        return (function () {
          if (!E && (s || l)) {
            if ('function' == typeof fetch && !be(ve))
              return fetch(ve, { credentials: 'same-origin' })
                .then(function (e) {
                  if (!e.ok) throw "failed to load wasm binary file at '" + ve + "'";
                  return e.arrayBuffer();
                })
                .catch(function () {
                  return Te(ve);
                });
            if (f)
              return new Promise(function (e, r) {
                f(
                  ve,
                  function (r) {
                    e(new Uint8Array(r));
                  },
                  r,
                );
              });
          }
          return Promise.resolve().then(function () {
            return Te(ve);
          });
        })()
          .then(function (r) {
            return WebAssembly.instantiate(r, e);
          })
          .then(function (e) {
            return e;
          })
          .then(r, function (e) {
            _('failed to asynchronously prepare wasm: ' + e),
              be(ve) &&
                _(
                  'warning: Loading from a file URI (' +
                    ve +
                    ') is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing',
                ),
              ge(e);
          });
      }
      if (r.instantiateWasm)
        try {
          return r.instantiateWasm(e, t);
        } catch (e) {
          return _('Module.instantiateWasm callback failed with error: ' + e), !1;
        }
      E ||
      'function' != typeof WebAssembly.instantiateStreaming ||
      we(ve) ||
      be(ve) ||
      'function' != typeof fetch
        ? a(o)
        : fetch(ve, { credentials: 'same-origin' }).then(function (r) {
            return WebAssembly.instantiateStreaming(r, e).then(o, function (e) {
              return (
                _('wasm streaming compile failed: ' + e),
                _('falling back to ArrayBuffer instantiation'),
                a(o)
              );
            });
          });
    })(),
      (r.___wasm_call_ctors = _e('__wasm_call_ctors'));
    var ht = (r._free = _e('free')),
      gt = (r._malloc = _e('malloc')),
      vt = (r._strlen = _e('strlen')),
      yt = (r.___errno_location = _e('__errno_location')),
      Et = (r.___getTypeName = _e('__getTypeName'));
    r.___embind_register_native_and_builtin_types = _e(
      '__embind_register_native_and_builtin_types',
    );
    var wt = (r.___stdio_exit = _e('__stdio_exit')),
      bt = (r._emscripten_builtin_memalign = _e('emscripten_builtin_memalign')),
      _t = (r._emscripten_stack_init = function () {
        return (_t = r._emscripten_stack_init = r.asm.emscripten_stack_init).apply(null, arguments);
      });
    (r._emscripten_stack_get_free = function () {
      return (r._emscripten_stack_get_free = r.asm.emscripten_stack_get_free).apply(
        null,
        arguments,
      );
    }),
      (r._emscripten_stack_get_base = function () {
        return (r._emscripten_stack_get_base = r.asm.emscripten_stack_get_base).apply(
          null,
          arguments,
        );
      });
    var Tt,
      kt = (r._emscripten_stack_get_end = function () {
        return (kt = r._emscripten_stack_get_end = r.asm.emscripten_stack_get_end).apply(
          null,
          arguments,
        );
      });
    function St(e) {
      (this.name = 'ExitStatus'),
        (this.message = 'Program terminated with exit(' + e + ')'),
        (this.status = e);
    }
    function Ct(e) {
      function t() {
        Tt ||
          ((Tt = !0),
          (r.calledRun = !0),
          A ||
            (oe(),
            D(!le),
            (le = !0),
            r.noFSInit || Ie.init.initialized || Ie.init(),
            (Ie.ignorePermissions = !1),
            ke(ie),
            r.onRuntimeInitialized && r.onRuntimeInitialized(),
            D(
              !r._main,
              'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]',
            ),
            (function () {
              if ((oe(), r.postRun))
                for (
                  'function' == typeof r.postRun && (r.postRun = [r.postRun]);
                  r.postRun.length;

                )
                  (e = r.postRun.shift()), se.unshift(e);
              var e;
              ke(se);
            })()));
      }
      ue > 0 ||
        (_t(),
        ne(),
        (function () {
          if (r.preRun)
            for ('function' == typeof r.preRun && (r.preRun = [r.preRun]); r.preRun.length; )
              (e = r.preRun.shift()), ae.unshift(e);
          var e;
          ke(ae);
        })(),
        ue > 0 ||
          (r.setStatus
            ? (r.setStatus('Running...'),
              setTimeout(function () {
                setTimeout(function () {
                  r.setStatus('');
                }, 1),
                  t();
              }, 1))
            : t(),
          oe()));
    }
    if (
      ((r.stackSave = _e('stackSave')),
      (r.stackRestore = _e('stackRestore')),
      (r.stackAlloc = _e('stackAlloc')),
      (r.dynCall_ijiii = _e('dynCall_ijiii')),
      (r.dynCall_viiijj = _e('dynCall_viiijj')),
      (r.dynCall_jij = _e('dynCall_jij')),
      (r.dynCall_jii = _e('dynCall_jii')),
      (r.dynCall_jiji = _e('dynCall_jiji')),
      (r._ff_h264_cabac_tables = 112940),
      P('intArrayFromString', !1),
      P('intArrayToString', !1),
      P('ccall', !1),
      P('cwrap', !1),
      P('setValue', !1),
      P('getValue', !1),
      P('allocate', !1),
      P('UTF8ArrayToString', !1),
      P('UTF8ToString', !1),
      P('stringToUTF8Array', !1),
      P('stringToUTF8', !1),
      P('lengthBytesUTF8', !1),
      P('stackTrace', !1),
      P('addOnPreRun', !1),
      P('addOnInit', !1),
      P('addOnPreMain', !1),
      P('addOnExit', !1),
      P('addOnPostRun', !1),
      P('writeStringToMemory', !1),
      P('writeArrayToMemory', !1),
      P('writeAsciiToMemory', !1),
      P('addRunDependency', !0),
      P('removeRunDependency', !0),
      P('FS_createFolder', !1),
      P('FS_createPath', !0),
      P('FS_createDataFile', !0),
      P('FS_createPreloadedFile', !0),
      P('FS_createLazyFile', !0),
      P('FS_createLink', !1),
      P('FS_createDevice', !0),
      P('FS_unlink', !0),
      P('getLEB', !1),
      P('getFunctionTables', !1),
      P('alignFunctionTables', !1),
      P('registerFunctions', !1),
      P('addFunction', !1),
      P('removeFunction', !1),
      P('prettyPrint', !1),
      P('dynCall', !1),
      P('getCompilerSetting', !1),
      P('print', !1),
      P('printErr', !1),
      P('getTempRet0', !1),
      P('setTempRet0', !1),
      P('callMain', !1),
      P('abort', !1),
      P('keepRuntimeAlive', !1),
      P('ptrToString', !1),
      P('zeroMemory', !1),
      P('stringToNewUTF8', !1),
      P('emscripten_realloc_buffer', !1),
      P('ENV', !1),
      P('ERRNO_CODES', !1),
      P('ERRNO_MESSAGES', !1),
      P('setErrNo', !1),
      P('inetPton4', !1),
      P('inetNtop4', !1),
      P('inetPton6', !1),
      P('inetNtop6', !1),
      P('readSockaddr', !1),
      P('writeSockaddr', !1),
      P('DNS', !1),
      P('getHostByName', !1),
      P('Protocols', !1),
      P('Sockets', !1),
      P('getRandomDevice', !1),
      P('traverseStack', !1),
      P('UNWIND_CACHE', !1),
      P('convertPCtoSourceLocation', !1),
      P('readAsmConstArgsArray', !1),
      P('readAsmConstArgs', !1),
      P('mainThreadEM_ASM', !1),
      P('jstoi_q', !1),
      P('jstoi_s', !1),
      P('getExecutableName', !1),
      P('listenOnce', !1),
      P('autoResumeAudioContext', !1),
      P('dynCallLegacy', !1),
      P('getDynCaller', !1),
      P('dynCall', !1),
      P('setWasmTableEntry', !1),
      P('getWasmTableEntry', !1),
      P('handleException', !1),
      P('runtimeKeepalivePush', !1),
      P('runtimeKeepalivePop', !1),
      P('callUserCallback', !1),
      P('maybeExit', !1),
      P('safeSetTimeout', !1),
      P('asmjsMangle', !1),
      P('asyncLoad', !1),
      P('alignMemory', !1),
      P('mmapAlloc', !1),
      P('reallyNegative', !1),
      P('unSign', !1),
      P('reSign', !1),
      P('formatString', !1),
      P('PATH', !1),
      P('PATH_FS', !1),
      P('SYSCALLS', !1),
      P('getSocketFromFD', !1),
      P('getSocketAddress', !1),
      P('JSEvents', !1),
      P('registerKeyEventCallback', !1),
      P('specialHTMLTargets', !1),
      P('maybeCStringToJsString', !1),
      P('findEventTarget', !1),
      P('findCanvasEventTarget', !1),
      P('getBoundingClientRect', !1),
      P('fillMouseEventData', !1),
      P('registerMouseEventCallback', !1),
      P('registerWheelEventCallback', !1),
      P('registerUiEventCallback', !1),
      P('registerFocusEventCallback', !1),
      P('fillDeviceOrientationEventData', !1),
      P('registerDeviceOrientationEventCallback', !1),
      P('fillDeviceMotionEventData', !1),
      P('registerDeviceMotionEventCallback', !1),
      P('screenOrientation', !1),
      P('fillOrientationChangeEventData', !1),
      P('registerOrientationChangeEventCallback', !1),
      P('fillFullscreenChangeEventData', !1),
      P('registerFullscreenChangeEventCallback', !1),
      P('registerRestoreOldStyle', !1),
      P('hideEverythingExceptGivenElement', !1),
      P('restoreHiddenElements', !1),
      P('setLetterbox', !1),
      P('currentFullscreenStrategy', !1),
      P('restoreOldWindowedStyle', !1),
      P('softFullscreenResizeWebGLRenderTarget', !1),
      P('doRequestFullscreen', !1),
      P('fillPointerlockChangeEventData', !1),
      P('registerPointerlockChangeEventCallback', !1),
      P('registerPointerlockErrorEventCallback', !1),
      P('requestPointerLock', !1),
      P('fillVisibilityChangeEventData', !1),
      P('registerVisibilityChangeEventCallback', !1),
      P('registerTouchEventCallback', !1),
      P('fillGamepadEventData', !1),
      P('registerGamepadEventCallback', !1),
      P('registerBeforeUnloadEventCallback', !1),
      P('fillBatteryEventData', !1),
      P('battery', !1),
      P('registerBatteryEventCallback', !1),
      P('setCanvasElementSize', !1),
      P('getCanvasElementSize', !1),
      P('demangle', !1),
      P('demangleAll', !1),
      P('jsStackTrace', !1),
      P('stackTrace', !1),
      P('getEnvStrings', !1),
      P('checkWasiClock', !1),
      P('writeI53ToI64', !1),
      P('writeI53ToI64Clamped', !1),
      P('writeI53ToI64Signaling', !1),
      P('writeI53ToU64Clamped', !1),
      P('writeI53ToU64Signaling', !1),
      P('readI53FromI64', !1),
      P('readI53FromU64', !1),
      P('convertI32PairToI53', !1),
      P('convertU32PairToI53', !1),
      P('dlopenMissingError', !1),
      P('setImmediateWrapped', !1),
      P('clearImmediateWrapped', !1),
      P('polyfillSetImmediate', !1),
      P('uncaughtExceptionCount', !1),
      P('exceptionLast', !1),
      P('exceptionCaught', !1),
      P('ExceptionInfo', !1),
      P('exception_addRef', !1),
      P('exception_decRef', !1),
      P('Browser', !1),
      P('setMainLoop', !1),
      P('wget', !1),
      P('FS', !1),
      P('MEMFS', !1),
      P('TTY', !1),
      P('PIPEFS', !1),
      P('SOCKFS', !1),
      P('_setNetworkCallback', !1),
      P('tempFixedLengthArray', !1),
      P('miniTempWebGLFloatBuffers', !1),
      P('heapObjectForWebGLType', !1),
      P('heapAccessShiftForWebGLHeap', !1),
      P('GL', !1),
      P('emscriptenWebGLGet', !1),
      P('computeUnpackAlignedImageSize', !1),
      P('emscriptenWebGLGetTexPixelData', !1),
      P('emscriptenWebGLGetUniform', !1),
      P('webglGetUniformLocation', !1),
      P('webglPrepareUniformLocationsBeforeFirstUse', !1),
      P('webglGetLeftBracePos', !1),
      P('emscriptenWebGLGetVertexAttrib', !1),
      P('writeGLArray', !1),
      P('AL', !1),
      P('SDL_unicode', !1),
      P('SDL_ttfContext', !1),
      P('SDL_audio', !1),
      P('SDL', !1),
      P('SDL_gfx', !1),
      P('GLUT', !1),
      P('EGL', !1),
      P('GLFW_Window', !1),
      P('GLFW', !1),
      P('GLEW', !1),
      P('IDBStore', !1),
      P('runAndAbortIfError', !1),
      P('InternalError', !1),
      P('BindingError', !1),
      P('UnboundTypeError', !1),
      P('PureVirtualError', !1),
      P('init_embind', !1),
      P('throwInternalError', !1),
      P('throwBindingError', !1),
      P('throwUnboundTypeError', !1),
      P('ensureOverloadTable', !1),
      P('exposePublicSymbol', !1),
      P('replacePublicSymbol', !1),
      P('extendError', !1),
      P('createNamedFunction', !1),
      P('registeredInstances', !1),
      P('getBasestPointer', !1),
      P('registerInheritedInstance', !1),
      P('unregisterInheritedInstance', !1),
      P('getInheritedInstance', !1),
      P('getInheritedInstanceCount', !1),
      P('getLiveInheritedInstances', !1),
      P('registeredTypes', !1),
      P('awaitingDependencies', !1),
      P('typeDependencies', !1),
      P('registeredPointers', !1),
      P('registerType', !1),
      P('whenDependentTypesAreResolved', !1),
      P('embind_charCodes', !1),
      P('embind_init_charCodes', !1),
      P('readLatin1String', !1),
      P('getTypeName', !1),
      P('heap32VectorToArray', !1),
      P('requireRegisteredType', !1),
      P('getShiftFromSize', !1),
      P('integerReadValueFromPointer', !1),
      P('enumReadValueFromPointer', !1),
      P('floatReadValueFromPointer', !1),
      P('simpleReadValueFromPointer', !1),
      P('runDestructors', !1),
      P('new_', !1),
      P('craftInvokerFunction', !1),
      P('embind__requireFunction', !1),
      P('tupleRegistrations', !1),
      P('structRegistrations', !1),
      P('genericPointerToWireType', !1),
      P('constNoSmartPtrRawPointerToWireType', !1),
      P('nonConstNoSmartPtrRawPointerToWireType', !1),
      P('init_RegisteredPointer', !1),
      P('RegisteredPointer', !1),
      P('RegisteredPointer_getPointee', !1),
      P('RegisteredPointer_destructor', !1),
      P('RegisteredPointer_deleteObject', !1),
      P('RegisteredPointer_fromWireType', !1),
      P('runDestructor', !1),
      P('releaseClassHandle', !1),
      P('finalizationRegistry', !1),
      P('detachFinalizer_deps', !1),
      P('detachFinalizer', !1),
      P('attachFinalizer', !1),
      P('makeClassHandle', !1),
      P('init_ClassHandle', !1),
      P('ClassHandle', !1),
      P('ClassHandle_isAliasOf', !1),
      P('throwInstanceAlreadyDeleted', !1),
      P('ClassHandle_clone', !1),
      P('ClassHandle_delete', !1),
      P('deletionQueue', !1),
      P('ClassHandle_isDeleted', !1),
      P('ClassHandle_deleteLater', !1),
      P('flushPendingDeletes', !1),
      P('delayFunction', !1),
      P('setDelayFunction', !1),
      P('RegisteredClass', !1),
      P('shallowCopyInternalPointer', !1),
      P('downcastPointer', !1),
      P('upcastPointer', !1),
      P('validateThis', !1),
      P('char_0', !1),
      P('char_9', !1),
      P('makeLegalFunctionName', !1),
      P('emval_handle_array', !1),
      P('emval_free_list', !1),
      P('emval_symbols', !1),
      P('init_emval', !1),
      P('count_emval_handles', !1),
      P('get_first_emval', !1),
      P('getStringOrSymbol', !1),
      P('Emval', !1),
      P('emval_newers', !1),
      P('craftEmvalAllocator', !1),
      P('emval_get_global', !1),
      P('emval_methodCallers', !1),
      P('emval_registeredMethods', !1),
      P('warnOnce', !1),
      P('stackSave', !1),
      P('stackRestore', !1),
      P('stackAlloc', !1),
      P('AsciiToString', !1),
      P('stringToAscii', !1),
      P('UTF16ToString', !1),
      P('stringToUTF16', !1),
      P('lengthBytesUTF16', !1),
      P('UTF32ToString', !1),
      P('stringToUTF32', !1),
      P('lengthBytesUTF32', !1),
      P('allocateUTF8', !1),
      P('allocateUTF8OnStack', !1),
      (r.writeStackCookie = ne),
      (r.checkStackCookie = oe),
      C('ALLOC_NORMAL', !1),
      C('ALLOC_STACK', !1),
      (de = function e() {
        Tt || Ct(), Tt || (de = e);
      }),
      (r.run = Ct),
      r.preInit)
    )
      for ('function' == typeof r.preInit && (r.preInit = [r.preInit]); r.preInit.length > 0; )
        r.preInit.pop()();
    Ct(), (e.exports = r);
  });
  const l = 1e3,
    u = 1e3,
    c = !1,
    d = !0,
    f = !1,
    p = !1,
    m = 'initVideo',
    h = 'render',
    g = 'playAudio',
    v = 'initAudio',
    y = 'audioCode',
    E = 'videoCode',
    w = 1,
    b = 2,
    _ = 'init',
    T = 'decode',
    k = 'audioDecode',
    S = 'videoDecode',
    C = 'close',
    P = 'updateConfig',
    A = 'key',
    D = 'delta';
  (() => {
    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) {}
  })(),
    Date.now ||
      (Date.now = function () {
        return new Date().getTime();
      }),
    (s.postRun = function () {
      var e = [],
        r = [],
        t = {};
      'VideoEncoder' in self &&
        (t = {
          hasInit: !1,
          isEmitInfo: !1,
          offscreenCanvas: null,
          offscreenCanvasCtx: null,
          decoder: new VideoDecoder({
            output: function (e) {
              t.isEmitInfo ||
                (n.opt.debug && console.log('Jessibuca: [worker] Webcodecs Video Decoder initSize'),
                postMessage({ cmd: m, w: e.codedWidth, h: e.codedHeight }),
                (t.isEmitInfo = !0),
                (t.offscreenCanvas = new OffscreenCanvas(e.codedWidth, e.codedHeight)),
                (t.offscreenCanvasCtx = t.offscreenCanvas.getContext('2d'))),
                t.offscreenCanvasCtx.drawImage(e, 0, 0, e.codedWidth, e.codedHeight);
              let r = t.offscreenCanvas.transferToImageBitmap();
              postMessage({ cmd: h, buffer: r, delay: n.delay, ts: 0 }, [r]),
                setTimeout(function () {
                  e.close ? e.close() : e.destroy();
                }, 100);
            },
            error: function (e) {
              console.error(e);
            },
          }),
          decode: function (e, r) {
            const o = e[0] >> 4 == 1;
            if (t.hasInit) {
              const n = new EncodedVideoChunk({ data: e.slice(5), timestamp: r, type: o ? A : D });
              t.decoder.decode(n);
            } else if (o && 0 === e[1]) {
              const r = 15 & e[0];
              n.setVideoCodec(r);
              const o = (function (e) {
                let r = e.subarray(1, 4),
                  t = 'avc1.';
                for (let e = 0; e < 3; e++) {
                  let n = r[e].toString(16);
                  n.length < 2 && (n = '0' + n), (t += n);
                }
                return { codec: t, description: e };
              })(e.slice(5));
              t.decoder.configure(o), (t.hasInit = !0);
            }
          },
          reset() {
            (t.hasInit = !1),
              (t.isEmitInfo = !1),
              (t.offscreenCanvas = null),
              (t.offscreenCanvasCtx = null);
          },
        });
      var n = {
          opt: {
            debug: c,
            forceNoOffscreen: d,
            useWCS: f,
            videoBuffer: l,
            openWebglAlignment: p,
            videoBufferDelay: u,
          },
          useOffscreen: function () {
            return !n.opt.forceNoOffscreen && 'undefined' != typeof OffscreenCanvas;
          },
          initAudioPlanar: function (e, t) {
            postMessage({ cmd: v, sampleRate: t, channels: e });
            var n = [],
              o = 0;
            this.playAudioPlanar = function (t, a, i) {
              for (var l = a, u = [], c = 0, d = 0; d < 2; d++) {
                var f = s.HEAPU32[(t >> 2) + d] >> 2;
                u[d] = s.HEAPF32.subarray(f, f + l);
              }
              if (o) {
                if (!(l >= (a = 1024 - o)))
                  return (
                    (o += l),
                    (r[0] = Float32Array.of(...r[0], ...u[0])),
                    void (2 == e && (r[1] = Float32Array.of(...r[1], ...u[1])))
                  );
                (n[0] = Float32Array.of(...r[0], ...u[0].subarray(0, a))),
                  2 == e && (n[1] = Float32Array.of(...r[1], ...u[1].subarray(0, a))),
                  postMessage(
                    { cmd: g, buffer: n, ts: i },
                    n.map((e) => e.buffer),
                  ),
                  (c = a),
                  (l -= a);
              }
              for (o = l; o >= 1024; o -= 1024)
                (n[0] = u[0].slice(c, (c += 1024))),
                  2 == e && (n[1] = u[1].slice(c - 1024, c)),
                  postMessage(
                    { cmd: g, buffer: n, ts: i },
                    n.map((e) => e.buffer),
                  );
              o && ((r[0] = u[0].slice(c)), 2 == e && (r[1] = u[1].slice(c)));
            };
          },
          setVideoCodec: function (e) {
            postMessage({ cmd: E, code: e });
          },
          setAudioCodec: function (e) {
            postMessage({ cmd: y, code: e });
          },
          setVideoSize: function (e, r) {
            postMessage({ cmd: m, w: e, h: r });
            var t = e * r,
              o = t >> 2;
            n.useOffscreen()
              ? ((this.offscreenCanvas = new OffscreenCanvas(e, r)),
                (this.offscreenCanvasGL = this.offscreenCanvas.getContext('webgl')),
                (this.webglObj = ((e, r) => {
                  var t = [
                      'attribute vec4 vertexPos;',
                      'attribute vec4 texturePos;',
                      'varying vec2 textureCoord;',
                      'void main()',
                      '{',
                      'gl_Position = vertexPos;',
                      'textureCoord = texturePos.xy;',
                      '}',
                    ].join('\n'),
                    n = [
                      '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');
                  r && e.pixelStorei(e.UNPACK_ALIGNMENT, 1);
                  var o = e.createShader(e.VERTEX_SHADER);
                  e.shaderSource(o, t),
                    e.compileShader(o),
                    e.getShaderParameter(o, e.COMPILE_STATUS) ||
                      console.log('Vertex shader failed to compile: ' + e.getShaderInfoLog(o));
                  var a = e.createShader(e.FRAGMENT_SHADER);
                  e.shaderSource(a, n),
                    e.compileShader(a),
                    e.getShaderParameter(a, e.COMPILE_STATUS) ||
                      console.log('Fragment shader failed to compile: ' + e.getShaderInfoLog(a));
                  var i = e.createProgram();
                  e.attachShader(i, o),
                    e.attachShader(i, a),
                    e.linkProgram(i),
                    e.getProgramParameter(i, e.LINK_STATUS) ||
                      console.log('Program failed to compile: ' + e.getProgramInfoLog(i)),
                    e.useProgram(i);
                  var s = e.createBuffer();
                  e.bindBuffer(e.ARRAY_BUFFER, s),
                    e.bufferData(
                      e.ARRAY_BUFFER,
                      new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]),
                      e.STATIC_DRAW,
                    );
                  var l = e.getAttribLocation(i, 'vertexPos');
                  e.enableVertexAttribArray(l), e.vertexAttribPointer(l, 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(i, 'texturePos');
                  function d(r, t) {
                    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(i, r), t),
                      n
                    );
                  }
                  e.enableVertexAttribArray(c), e.vertexAttribPointer(c, 2, e.FLOAT, !1, 0, 0);
                  var f = d('ySampler', 0),
                    p = d('uSampler', 1),
                    m = d('vSampler', 2);
                  return {
                    render: function (r, t, n, o, a) {
                      e.viewport(0, 0, r, t),
                        e.activeTexture(e.TEXTURE0),
                        e.bindTexture(e.TEXTURE_2D, f),
                        e.texImage2D(
                          e.TEXTURE_2D,
                          0,
                          e.LUMINANCE,
                          r,
                          t,
                          0,
                          e.LUMINANCE,
                          e.UNSIGNED_BYTE,
                          n,
                        ),
                        e.activeTexture(e.TEXTURE1),
                        e.bindTexture(e.TEXTURE_2D, p),
                        e.texImage2D(
                          e.TEXTURE_2D,
                          0,
                          e.LUMINANCE,
                          r / 2,
                          t / 2,
                          0,
                          e.LUMINANCE,
                          e.UNSIGNED_BYTE,
                          o,
                        ),
                        e.activeTexture(e.TEXTURE2),
                        e.bindTexture(e.TEXTURE_2D, m),
                        e.texImage2D(
                          e.TEXTURE_2D,
                          0,
                          e.LUMINANCE,
                          r / 2,
                          t / 2,
                          0,
                          e.LUMINANCE,
                          e.UNSIGNED_BYTE,
                          a,
                        ),
                        e.drawArrays(e.TRIANGLE_STRIP, 0, 4);
                    },
                    destroy: function () {
                      try {
                        e.deleteProgram(i),
                          e.deleteBuffer(s),
                          e.deleteBuffer(u),
                          e.deleteTexture(f),
                          e.deleteTexture(p),
                          e.deleteBuffer(m);
                      } catch (e) {}
                    },
                  };
                })(this.offscreenCanvasGL, n.opt.openWebglAlignment)),
                (this.draw = function (n, a, i, l) {
                  this.webglObj.render(
                    e,
                    r,
                    s.HEAPU8.subarray(a, a + t),
                    s.HEAPU8.subarray(i, i + o),
                    s.HEAPU8.subarray(l, l + o),
                  );
                  let u = this.offscreenCanvas.transferToImageBitmap();
                  postMessage({ cmd: h, buffer: u, delay: this.delay, ts: n }, [u]);
                }))
              : (this.draw = function (e, r, n, a) {
                  var i = [
                    s.HEAPU8.subarray(r, r + t),
                    s.HEAPU8.subarray(n, n + o),
                    s.HEAPU8.subarray(a, a + o),
                  ].map((e) => Uint8Array.from(e));
                  postMessage(
                    { cmd: h, output: i, delay: this.delay, ts: e },
                    i.map((e) => e.buffer),
                  );
                });
          },
          getDelay: function (e) {
            if (!e) return -1;
            if (this.firstTimestamp) {
              if (e) {
                const r = Date.now() - this.startTimestamp,
                  t = e - this.firstTimestamp;
                this.delay = r >= t ? r - t : t - r;
              }
            } else (this.firstTimestamp = e), (this.startTimestamp = Date.now()), (this.delay = -1);
            return this.delay;
          },
          resetDelay: function () {
            (this.firstTimestamp = null), (this.startTimestamp = null), (this.delay = -1);
          },
          init: function () {
            n.opt.debug && console.log('Jessibuca: [worker] init');
            const r = (e) => {
              n.opt.useWCS && n.useOffscreen() && e.type === b && t.decode
                ? t.decode(e.payload, e.ts)
                : e.decoder.decode(e.payload, e.ts);
            };
            this.stopId = setInterval(() => {
              if (e.length)
                if (this.dropping) {
                  for (
                    (t = e.shift()).type === w && 0 === t.payload[1] && r(t);
                    !t.isIFrame && e.length;

                  )
                    (t = e.shift()).type === w && 0 === t.payload[1] && r(t);
                  t.isIFrame && ((this.dropping = !1), r(t));
                } else {
                  var t = e[0];
                  if (-1 === this.getDelay(t.ts)) e.shift(), r(t);
                  else if (this.delay > n.opt.videoBuffer + n.opt.videoBufferDelay)
                    this.resetDelay(), (this.dropping = !0);
                  else
                    for (; e.length && ((t = e[0]), this.getDelay(t.ts) > n.opt.videoBuffer); )
                      e.shift(), r(t);
                }
            }, 10);
          },
          close: function () {
            n.opt.debug && console.log('Jessibuca: [worker]: close'),
              clearInterval(this.stopId),
              (this.stopId = null),
              o.clear && o.clear(),
              a.clear && a.clear(),
              t.reset && t.reset(),
              (this.firstTimestamp = null),
              (this.startTimestamp = null),
              (this.delay = -1),
              (this.dropping = !1),
              this.webglObj &&
                (this.webglObj.destroy(),
                (this.offscreenCanvas = null),
                (this.offscreenCanvasGL = null),
                (this.offscreenCanvasCtx = null)),
              (e = []),
              (r = []),
              delete this.playAudioPlanar,
              delete this.draw;
          },
          pushBuffer: function (r, t) {
            t.type === w
              ? e.push({ ts: t.ts, payload: r, decoder: o, type: w })
              : t.type === b &&
                e.push({ ts: t.ts, payload: r, decoder: a, type: b, isIFrame: t.isIFrame });
          },
        },
        o = new s.AudioDecoder(n),
        a = new s.VideoDecoder(n);
      postMessage({ cmd: _ }),
        (self.onmessage = function (e) {
          var r = e.data;
          switch (r.cmd) {
            case _:
              try {
                n.opt = Object.assign(n.opt, JSON.parse(r.opt));
              } catch (e) {}
              (o.sample_rate = r.sampleRate), n.init();
              break;
            case T:
              n.pushBuffer(r.buffer, r.options);
              break;
            case k:
              o.decode(r.buffer, r.ts);
              break;
            case S:
              a.decode(r.buffer, r.ts);
              break;
            case C:
              n.close();
              break;
            case P:
              n.opt[r.key] = r.value;
          }
        });
    });
});
