1627 lines
57 KiB
JavaScript

'use strict'
const WASM_BINARY_PLACEHOLDER = 'WASM_BINARY_PLACEHOLDER';
// See https://github.com/Distributive-Network/PythonMonkey/issues/266
if (typeof globalThis.setInterval != 'function'){
globalThis.setInterval = function pm$$setInterval(fn, timeout) {
const timerHnd = { cancel: false };
function fnWrapper()
{
if (timerHnd.cancel)
return;
setTimeout(fnWrapper, timeout);
fn();
}
timerHnd.id = setTimeout(fnWrapper, timeout);
return timerHnd;
}
globalThis.clearInterval = function pm$$clearInterval(timerHnd) {
timerHnd.clear = true;
clearTimeout(timerHnd.id);
}
}
globalThis.b64decode = function b64decode(data) {
return Uint8Array.from(atob(data), c => c.charCodeAt(0));
}
globalThis.b64encode = function b64encode(data) {
return btoa(String.fromCharCode(...data));
}
// https://fn.music.163.com/g/chrome-extension-home-page-beta/
let AudioFingerprintRuntime = (() => {
var n, o = void 0 !== o ? o : {},i = {};
for (n in o)
o.hasOwnProperty(n) && (i[n] = o[n]);
var read_, readSync, readBinary, c, f, l = [],
p = "./this.program",
readSync = function(t, e, r) {
switch (t) {
case WASM_BINARY_PLACEHOLDER:
if (typeof WASM_BINARY == 'undefined') {
const { WASM_BINARY } = require('./afp.wasm.js');
e(globalThis.b64decode(WASM_BINARY));
} else {
e(globalThis.b64decode(WASM_BINARY));
}
default:
throw "Reading " + t + " is not supported";
break;
}
}
var v = o.print || console.log.bind(console),
g = o.printErr || console.warn.bind(console);
for (n in i)
i.hasOwnProperty(n) && (o[n] = i[n]);
i = null,
o.arguments && (l = o.arguments),
o.thisProgram && (p = o.thisProgram),
o.quit && o.quit;
var w;
o.wasmBinary && (w = o.wasmBinary);
var b, _ = o.noExitRuntime || !0;
"object" != typeof WebAssembly && abort("no native wasm support detected");
var C = !1;
function T(t, e) {
t || abort("Assertion failed: " + e)
}
var UTF8Decoder = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0;
function UTF8ArrayToString(heap, idx, maxBytesToRead) {
var endIdx = idx + maxBytesToRead;
var endPtr = idx;
while (heap[endPtr] && !(endPtr >= endIdx)) ++endPtr;
if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) {
return UTF8Decoder.decode(heap.subarray(idx, endPtr))
} else {
var str = "";
while (idx < endPtr) {
var u0 = heap[idx++];
if (!(u0 & 128)) {
str += String.fromCharCode(u0);
continue
}
var u1 = heap[idx++] & 63;
if ((u0 & 224) == 192) {
str += String.fromCharCode((u0 & 31) << 6 | u1);
continue
}
var u2 = heap[idx++] & 63;
if ((u0 & 240) == 224) {
u0 = (u0 & 15) << 12 | u1 << 6 | u2
} else {
u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63
}
if (u0 < 65536) {
str += String.fromCharCode(u0)
} else {
var ch = u0 - 65536;
str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)
}
}
}
return str
}
function UTF8ToString(ptr, maxBytesToRead) {
return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""
}
function UTF8ToString(t, e) {
return t ? UTF8ArrayToString(O, t, e) : ""
}
function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {
if (!(maxBytesToWrite > 0)) return 0;
var startIdx = outIdx;
var endIdx = outIdx + maxBytesToWrite - 1;
for (var i = 0; i < str.length; ++i) {
var u = str.charCodeAt(i);
if (u >= 55296 && u <= 57343) {
var u1 = str.charCodeAt(++i);
u = 65536 + ((u & 1023) << 10) | u1 & 1023
}
if (u <= 127) {
if (outIdx >= endIdx) break;
heap[outIdx++] = u
} else if (u <= 2047) {
if (outIdx + 1 >= endIdx) break;
heap[outIdx++] = 192 | u >> 6;
heap[outIdx++] = 128 | u & 63
} else if (u <= 65535) {
if (outIdx + 2 >= endIdx) break;
heap[outIdx++] = 224 | u >> 12;
heap[outIdx++] = 128 | u >> 6 & 63;
heap[outIdx++] = 128 | u & 63
} else {
if (outIdx + 3 >= endIdx) break;
heap[outIdx++] = 240 | u >> 18;
heap[outIdx++] = 128 | u >> 12 & 63;
heap[outIdx++] = 128 | u >> 6 & 63;
heap[outIdx++] = 128 | u & 63
}
}
heap[outIdx] = 0;
return outIdx - startIdx
}
function UTF8CharCount(t) {
for (var e = 0, r = 0; r < t.length; ++r) {
var n = t.charCodeAt(r);
n >= 55296 && n <= 57343 && (n = 65536 + ((1023 & n) << 10) | 1023 & t.charCodeAt(++r)),
n <= 127 ? ++e : e += n <= 2047 ? 2 : n <= 65535 ? 3 : 4
}
return e
}
var E, S, O, k, W, j, R, M, I, UTF16Decoder = "undefined" != typeof TextDecoder ? new TextDecoder("utf-16le") : void 0;
function UTF16ArrayToString(t, e) {
for (var r = t, n = r >> 1, o = n + e / 2; !(n >= o) && W[n];)
++n;
if ((r = n << 1) - t > 32 && UTF16Decoder)
return UTF16Decoder.decode(O.subarray(t, r));
for (var i = "", a = 0; !(a >= e / 2); ++a) {
var u = k[t + 2 * a >> 1];
if (0 == u)
break;
i += String.fromCharCode(u)
}
return i
}
function H(t, e, r) {
if (void 0 === r && (r = 2147483647),
r < 2)
return 0;
for (var n = e, o = (r -= 2) < 2 * t.length ? r / 2 : t.length, i = 0; i < o; ++i) {
var a = t.charCodeAt(i);
k[e >> 1] = a,
e += 2
}
return k[e >> 1] = 0,
e - n
}
function Y(t) {
return 2 * t.length
}
function V(t, e) {
for (var r = 0, n = ""; !(r >= e / 4);) {
var o = j[t + 4 * r >> 2];
if (0 == o)
break;
if (++r,
o >= 65536) {
var i = o - 65536;
n += String.fromCharCode(55296 | i >> 10, 56320 | 1023 & i)
} else
n += String.fromCharCode(o)
}
return n
}
function z(t, e, r) {
if (void 0 === r && (r = 2147483647),
r < 4)
return 0;
for (var n = e, o = n + r - 4, i = 0; i < t.length; ++i) {
var a = t.charCodeAt(i);
if (a >= 55296 && a <= 57343)
a = 65536 + ((1023 & a) << 10) | 1023 & t.charCodeAt(++i);
if (j[e >> 2] = a,
(e += 4) + 4 > o)
break
}
return j[e >> 2] = 0,
e - n
}
function B(t) {
for (var e = 0, r = 0; r < t.length; ++r) {
var n = t.charCodeAt(r);
n >= 55296 && n <= 57343 && ++r,
e += 4
}
return e
}
o.INITIAL_MEMORY;
var L, G = [],
N = [],
q = [];
var J = 0,
X = null,
Z = null;
function abort(what) {
throw o.onAbort && o.onAbort(what),
g(what = "Aborted(" + what + ")"),
C = !0,
1,
what += ". Build with -s ASSERTIONS=1 for more info.",
new WebAssembly.RuntimeError(what)
}
o.preloadedImages = {},
o.preloadedAudios = {};
var Q;
function isDataURI(t) {
return t.startsWith("data:application/octet-stream;base64,")
}
function isFileURI(t) {
return t.startsWith("file://")
}
function getBinary(file) {
try {
if (file == Q && w)
return new Uint8Array(w);
if (readBinary)
return readBinary(file);
throw "both async and sync fetching of the wasm failed"
} catch (t) {
abort(t)
}
}
function callRuntimeCallbacks(cb) {
for (; cb.length > 0;) {
var func = cb.shift();
if ("function" != typeof func) {
var r = func.func;
"number" == typeof r ? void 0 === func.arg ? it(r)() : it(r)(func.arg) : r(void 0 === func.arg ? null : func.arg)
} else
func(o)
}
}
var wasmBinaryFile = WASM_BINARY_PLACEHOLDER;
isDataURI(wasmBinaryFile) || (Q = function(t) {
return wasmBinaryFile
}(Q));
var ot = [];
function it(t) {
var e = ot[t];
return e || (t >= ot.length && (ot.length = t + 1),
ot[t] = e = L.get(t)),
e
}
function ExceptionInfo(excPtr) {
this.excPtr = excPtr,
this.ptr = excPtr - 16,
this.set_type = function(t) {
j[this.ptr + 4 >> 2] = t
},
this.get_type = function() {
return j[this.ptr + 4 >> 2]
},
this.set_destructor = function(t) {
j[this.ptr + 8 >> 2] = t
},
this.get_destructor = function() {
return j[this.ptr + 8 >> 2]
},
this.set_refcount = function(t) {
j[this.ptr >> 2] = t
},
this.set_caught = function(t) {
t = t ? 1 : 0,
S[this.ptr + 12 >> 0] = t
},
this.get_caught = function() {
return 0 != S[this.ptr + 12 >> 0]
},
this.set_rethrown = function(t) {
t = t ? 1 : 0,
S[this.ptr + 13 >> 0] = t
},
this.get_rethrown = function() {
return 0 != S[this.ptr + 13 >> 0]
},
this.init = function(t, e) {
this.set_type(t),
this.set_destructor(e),
this.set_refcount(0),
this.set_caught(!1),
this.set_rethrown(!1)
},
this.add_ref = function() {
var t = j[this.ptr >> 2];
j[this.ptr >> 2] = t + 1
},
this.release_ref = function() {
var t = j[this.ptr >> 2];
return j[this.ptr >> 2] = t - 1,
1 === t
}
}
function ut(t) {
switch (t) {
case 1:
return 0;
case 2:
return 1;
case 4:
return 2;
case 8:
return 3;
default:
throw new TypeError("Unknown type size: " + t)
}
}
var st = void 0;
function ct(t) {
for (var e = "", r = t; O[r];)
e += st[O[r++]];
return e
}
var ft = {},
lt = {},
pt = {};
function dt(t) {
if (void 0 === t)
return "_unknown";
var e = (t = t.replace(/[^a-zA-Z0-9_]/g, "$")).charCodeAt(0);
return e >= 48 && e <= 57 ? "_" + t : t
}
function ht(t, e) {
return t = dt(t),
new Function("body", "return function " + t + '() {\n "use strict"; return body.apply(this, arguments);\n};\n')(e)
}
function yt(t, e) {
var r = ht(e, (function(t) {
this.name = e,
this.message = t;
var r = new Error(t).stack;
void 0 !== r && (this.stack = this.toString() + "\n" + r.replace(/^Error(:[^\n]*)?\n/, ""))
}));
return r.prototype = Object.create(t.prototype),
r.prototype.constructor = r,
r.prototype.toString = function() {
return void 0 === this.message ? this.name : this.name + ": " + this.message
},
r
}
var mt = void 0;
function vt(t) {
throw new mt(t)
}
var gt = void 0;
function wt(t) {
throw new gt(t)
}
function bt(t, e, r) {
function n(e) {
var n = r(e);
n.length !== t.length && wt("Mismatched type converter count");
for (var o = 0; o < t.length; ++o)
_t(t[o], n[o])
}
t.forEach((function(t) {
pt[t] = e
}));
var o = new Array(e.length),
i = [],
a = 0;
e.forEach((function(t, e) {
lt.hasOwnProperty(t) ? o[e] = lt[t] : (i.push(t),
ft.hasOwnProperty(t) || (ft[t] = []),
ft[t].push((function() {
o[e] = lt[t],
++a === i.length && n(o)
})))
})),
0 === i.length && n(o)
}
function _t(t, e, r) {
if (r = r || {},
!("argPackAdvance" in e))
throw new TypeError("registerType registeredInstance requires argPackAdvance");
var n = e.name;
if (t || vt('type "' + n + '" must have a positive integer typeid pointer'),
lt.hasOwnProperty(t)) {
if (r.ignoreDuplicateRegistrations)
return;
vt("Cannot register type '" + n + "' twice")
}
if (lt[t] = e,
delete pt[t],
ft.hasOwnProperty(t)) {
var o = ft[t];
delete ft[t],
o.forEach((function(t) {
t()
}))
}
}
function Ct(t) {
if (!(this instanceof Rt))
return !1;
if (!(t instanceof Rt))
return !1;
for (var e = this.$$.ptrType.registeredClass, r = this.$$.ptr, n = t.$$.ptrType.registeredClass, o = t.$$.ptr; e.baseClass;)
r = e.upcast(r),
e = e.baseClass;
for (; n.baseClass;)
o = n.upcast(o),
n = n.baseClass;
return e === n && r === o
}
function Tt(t) {
vt(t.$$.ptrType.registeredClass.name + " instance already deleted")
}
var $t = !1;
function Pt(t) {}
function At(t) {
t.count.value -= 1,
0 === t.count.value && function(t) {
t.smartPtr ? t.smartPtrType.rawDestructor(t.smartPtr) : t.ptrType.registeredClass.rawDestructor(t.ptr)
}(t)
}
function Dt(t) {
return "undefined" == typeof FinalizationRegistry ? (Dt = function(t) {
return t
},
t) : ($t = new FinalizationRegistry((function(t) {
At(t.$$)
})),
Dt = function(t) {
var e = {
$$: t.$$
};
return $t.register(t, e, t),
t
},
Pt = function(t) {
$t.unregister(t)
},
Dt(t))
}
function Ft() {
if (this.$$.ptr || Tt(this),
this.$$.preservePointerOnDelete)
return this.$$.count.value += 1,
this;
var t, e = Dt(Object.create(Object.getPrototypeOf(this), {
$$: {
value: (t = this.$$, {
count: t.count,
deleteScheduled: t.deleteScheduled,
preservePointerOnDelete: t.preservePointerOnDelete,
ptr: t.ptr,
ptrType: t.ptrType,
smartPtr: t.smartPtr,
smartPtrType: t.smartPtrType
})
}
}));
return e.$$.count.value += 1,
e.$$.deleteScheduled = !1,
e
}
function Et() {
this.$$.ptr || Tt(this),
this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && vt("Object already scheduled for deletion"),
Pt(this),
At(this.$$),
this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0,
this.$$.ptr = void 0)
}
function St() {
return !this.$$.ptr
}
var Ot = void 0,
kt = [];
function Wt() {
for (; kt.length;) {
var t = kt.pop();
t.$$.deleteScheduled = !1,
t.delete()
}
}
function jt() {
return this.$$.ptr || Tt(this),
this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && vt("Object already scheduled for deletion"),
kt.push(this),
1 === kt.length && Ot && Ot(Wt),
this.$$.deleteScheduled = !0,
this
}
function Rt() {}
var Mt = {};
function It(t, e, r) {
if (void 0 === t[e].overloadTable) {
var n = t[e];
t[e] = function() {
return t[e].overloadTable.hasOwnProperty(arguments.length) || vt("Function '" + r + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + t[e].overloadTable + ")!"),
t[e].overloadTable[arguments.length].apply(this, arguments)
},
t[e].overloadTable = [],
t[e].overloadTable[n.argCount] = n
}
}
function xt(t, e, r) {
o.hasOwnProperty(t) ? ((void 0 === r || void 0 !== o[t].overloadTable && void 0 !== o[t].overloadTable[r]) && vt("Cannot register public name '" + t + "' twice"),
It(o, t, t),
o.hasOwnProperty(r) && vt("Cannot register multiple overloads of a function with the same number of arguments (" + r + ")!"),
o[t].overloadTable[r] = e) : (o[t] = e,
void 0 !== r && (o[t].numArguments = r))
}
function Ut(t, e, r, n, o, i, a, u) {
this.name = t,
this.constructor = e,
this.instancePrototype = r,
this.rawDestructor = n,
this.baseClass = o,
this.getActualType = i,
this.upcast = a,
this.downcast = u,
this.pureVirtualFunctions = []
}
function Ht(t, e, r) {
for (; e !== r;)
e.upcast || vt("Expected null or instance of " + r.name + ", got an instance of " + e.name),
t = e.upcast(t),
e = e.baseClass;
return t
}
function Yt(t, e) {
if (null === e)
return this.isReference && vt("null is not a valid " + this.name),
0;
e.$$ || vt('Cannot pass "' + ge(e) + '" as a ' + this.name),
e.$$.ptr || vt("Cannot pass deleted object as a pointer of type " + this.name);
var r = e.$$.ptrType.registeredClass;
return Ht(e.$$.ptr, r, this.registeredClass)
}
function Vt(t, e) {
var r;
if (null === e)
return this.isReference && vt("null is not a valid " + this.name),
this.isSmartPointer ? (r = this.rawConstructor(),
null !== t && t.push(this.rawDestructor, r),
r) : 0;
e.$$ || vt('Cannot pass "' + ge(e) + '" as a ' + this.name),
e.$$.ptr || vt("Cannot pass deleted object as a pointer of type " + this.name),
!this.isConst && e.$$.ptrType.isConst && vt("Cannot convert argument of type " + (e.$$.smartPtrType ? e.$$.smartPtrType.name : e.$$.ptrType.name) + " to parameter type " + this.name);
var n = e.$$.ptrType.registeredClass;
if (r = Ht(e.$$.ptr, n, this.registeredClass),
this.isSmartPointer)
switch (void 0 === e.$$.smartPtr && vt("Passing raw pointer to smart pointer is illegal"),
this.sharingPolicy) {
case 0:
e.$$.smartPtrType === this ? r = e.$$.smartPtr : vt("Cannot convert argument of type " + (e.$$.smartPtrType ? e.$$.smartPtrType.name : e.$$.ptrType.name) + " to parameter type " + this.name);
break;
case 1:
r = e.$$.smartPtr;
break;
case 2:
if (e.$$.smartPtrType === this)
r = e.$$.smartPtr;
else {
var o = e.clone();
r = this.rawShare(r, ve.toHandle((function() {
o.delete()
}))),
null !== t && t.push(this.rawDestructor, r)
}
break;
default:
vt("Unsupporting sharing policy")
}
return r
}
function zt(t, e) {
if (null === e)
return this.isReference && vt("null is not a valid " + this.name),
0;
e.$$ || vt('Cannot pass "' + ge(e) + '" as a ' + this.name),
e.$$.ptr || vt("Cannot pass deleted object as a pointer of type " + this.name),
e.$$.ptrType.isConst && vt("Cannot convert argument of type " + e.$$.ptrType.name + " to parameter type " + this.name);
var r = e.$$.ptrType.registeredClass;
return Ht(e.$$.ptr, r, this.registeredClass)
}
function Bt(t) {
return this.fromWireType(R[t >> 2])
}
function Lt(t) {
return this.rawGetPointee && (t = this.rawGetPointee(t)),
t
}
function Gt(t) {
this.rawDestructor && this.rawDestructor(t)
}
function Nt(t) {
null !== t && t.delete()
}
function qt(t, e, r) {
if (e === r)
return t;
if (void 0 === r.baseClass)
return null;
var n = qt(t, e, r.baseClass);
return null === n ? null : r.downcast(n)
}
function Jt() {
return Object.keys(Kt).length
}
function Xt() {
var t = [];
for (var e in Kt)
Kt.hasOwnProperty(e) && t.push(Kt[e]);
return t
}
function Zt(t) {
Ot = t,
kt.length && Ot && Ot(Wt)
}
var Kt = {};
function Qt(t, e) {
return e = function(t, e) {
for (void 0 === e && vt("ptr should not be undefined"); t.baseClass;)
e = t.upcast(e),
t = t.baseClass;
return e
}(t, e),
Kt[e]
}
function te(t, e) {
return e.ptrType && e.ptr || wt("makeClassHandle requires ptr and ptrType"),
!!e.smartPtrType !== !!e.smartPtr && wt("Both smartPtrType and smartPtr must be specified"),
e.count = {
value: 1
},
Dt(Object.create(t, {
$$: {
value: e
}
}))
}
function ee(t) {
var e = this.getPointee(t);
if (!e)
return this.destructor(t),
null;
var r = Qt(this.registeredClass, e);
if (void 0 !== r) {
if (0 === r.$$.count.value)
return r.$$.ptr = e,
r.$$.smartPtr = t,
r.clone();
var n = r.clone();
return this.destructor(t),
n
}
function o() {
return this.isSmartPointer ? te(this.registeredClass.instancePrototype, {
ptrType: this.pointeeType,
ptr: e,
smartPtrType: this,
smartPtr: t
}) : te(this.registeredClass.instancePrototype, {
ptrType: this,
ptr: t
})
}
var i, a = this.registeredClass.getActualType(e),
u = Mt[a];
if (!u)
return o.call(this);
i = this.isConst ? u.constPointerType : u.pointerType;
var s = qt(e, this.registeredClass, i.registeredClass);
return null === s ? o.call(this) : this.isSmartPointer ? te(i.registeredClass.instancePrototype, {
ptrType: i,
ptr: s,
smartPtrType: this,
smartPtr: t
}) : te(i.registeredClass.instancePrototype, {
ptrType: i,
ptr: s
})
}
function re(t, e, r, n, o, i, a, u, s, c, f) {
this.name = t,
this.registeredClass = e,
this.isReference = r,
this.isConst = n,
this.isSmartPointer = o,
this.pointeeType = i,
this.sharingPolicy = a,
this.rawGetPointee = u,
this.rawConstructor = s,
this.rawShare = c,
this.rawDestructor = f,
o || void 0 !== e.baseClass ? this.toWireType = Vt : n ? (this.toWireType = Yt,
this.destructorFunction = null) : (this.toWireType = zt,
this.destructorFunction = null)
}
function ne(t, e, r) {
o.hasOwnProperty(t) || wt("Replacing nonexistant public symbol"),
void 0 !== o[t].overloadTable && void 0 !== r ? o[t].overloadTable[r] = e : (o[t] = e,
o[t].argCount = r)
}
function oe(t, e, r) {
return t.includes("j") ? function(t, e, r) {
var n = o["dynCall_" + t];
return r && r.length ? n.apply(null, [e].concat(r)) : n.call(null, e)
}(t, e, r) : it(e).apply(null, r)
}
function ie(t, e) {
var r, n, o, i = (t = ct(t)).includes("j") ? (r = t,
n = e,
o = [],
function() {
o.length = arguments.length;
for (var t = 0; t < arguments.length; t++)
o[t] = arguments[t];
return oe(r, n, o)
}
) : it(e);
return "function" != typeof i && vt("unknown function pointer with signature " + t + ": " + e),
i
}
var ae = void 0;
function ue(t) {
var e = je(t),
r = ct(e);
return We(e),
r
}
function se(t, e) {
var r = [],
n = {};
throw e.forEach((function t(e) {
n[e] || lt[e] || (pt[e] ? pt[e].forEach(t) : (r.push(e),
n[e] = !0))
})),
new ae(t + ": " + r.map(ue).join([", "]))
}
function ce(t, e) {
for (var r = [], n = 0; n < t; n++)
r.push(j[(e >> 2) + n]);
return r
}
function fe(t) {
for (; t.length;) {
var e = t.pop();
t.pop()(e)
}
}
function le(t, e, r, n, o) {
var i = e.length;
i < 2 && vt("argTypes array size mismatch! Must at least get return value and 'this' types!");
for (var a = null !== e[1] && null !== r, u = !1, s = 1; s < e.length; ++s)
if (null !== e[s] && void 0 === e[s].destructorFunction) {
u = !0;
break
}
var c = "void" !== e[0].name,
f = "",
l = "";
for (s = 0; s < i - 2; ++s)
f += (0 !== s ? ", " : "") + "arg" + s,
l += (0 !== s ? ", " : "") + "arg" + s + "Wired";
var p = "return function " + dt(t) + "(" + f + ") {\nif (arguments.length !== " + (i - 2) + ") {\nthrowBindingError('function " + t + " called with ' + arguments.length + ' arguments, expected " + (i - 2) + " args!');\n}\n";
u && (p += "var destructors = [];\n");
var d = u ? "destructors" : "null",
h = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"],
y = [vt, n, o, fe, e[0], e[1]];
a && (p += "var thisWired = classParam.toWireType(" + d + ", this);\n");
for (s = 0; s < i - 2; ++s)
p += "var arg" + s + "Wired = argType" + s + ".toWireType(" + d + ", arg" + s + "); // " + e[s + 2].name + "\n",
h.push("argType" + s),
y.push(e[s + 2]);
if (a && (l = "thisWired" + (l.length > 0 ? ", " : "") + l),
p += (c ? "var rv = " : "") + "invoker(fn" + (l.length > 0 ? ", " : "") + l + ");\n",
u)
p += "runDestructors(destructors);\n";
else
for (s = a ? 1 : 2; s < e.length; ++s) {
var m = 1 === s ? "thisWired" : "arg" + (s - 2) + "Wired";
null !== e[s].destructorFunction && (p += m + "_dtor(" + m + "); // " + e[s].name + "\n",
h.push(m + "_dtor"),
y.push(e[s].destructorFunction))
}
return c && (p += "var ret = retType.fromWireType(rv);\nreturn ret;\n"),
p += "}\n",
h.push(p),
function(t, e) {
if (!(t instanceof Function))
throw new TypeError("new_ called with constructor type " + typeof t + " which is not a function");
var r = ht(t.name || "unknownFunctionName", (function() {}));
r.prototype = t.prototype;
var n = new r,
o = t.apply(n, e);
return o instanceof Object ? o : n
}(Function, h).apply(null, y)
}
var pe = [],
de = [{}, {
value: void 0
}, {
value: null
}, {
value: !0
}, {
value: !1
}];
function he(t) {
t > 4 && 0 == --de[t].refcount && (de[t] = void 0,
pe.push(t))
}
function ye() {
for (var t = 0, e = 5; e < de.length; ++e)
void 0 !== de[e] && ++t;
return t
}
function me() {
for (var t = 5; t < de.length; ++t)
if (void 0 !== de[t])
return de[t];
return null
}
var ve = {
toValue: function(t) {
return t || vt("Cannot use deleted val. handle = " + t),
de[t].value
},
toHandle: function(t) {
switch (t) {
case void 0:
return 1;
case null:
return 2;
case !0:
return 3;
case !1:
return 4;
default:
var e = pe.length ? pe.pop() : de.length;
return de[e] = {
refcount: 1,
value: t
},
e
}
}
};
function ge(t) {
if (null === t)
return "null";
var e = typeof t;
return "object" === e || "array" === e || "function" === e ? t.toString() : "" + t
}
function we(t, e) {
switch (e) {
case 2:
return function(t) {
return this.fromWireType(M[t >> 2])
};
case 3:
return function(t) {
return this.fromWireType(I[t >> 3])
};
default:
throw new TypeError("Unknown float type: " + t)
}
}
function be(t, e, r) {
switch (e) {
case 0:
return r ? function(t) {
return S[t]
} :
function(t) {
return O[t]
};
case 1:
return r ? function(t) {
return k[t >> 1]
} :
function(t) {
return W[t >> 1]
};
case 2:
return r ? function(t) {
return j[t >> 2]
} :
function(t) {
return R[t >> 2]
};
default:
throw new TypeError("Unknown integer type: " + t)
}
}
var Te = {
mappings: {},
buffers: [null, [],
[]
],
printChar: function(t, e) {
var r = Te.buffers[t];
0 === e || 10 === e ? ((1 === t ? v : g)(UTF8ArrayToString(r, 0)),
r.length = 0) : r.push(e)
},
varargs: void 0,
get: function() {
return Te.varargs += 4,
j[Te.varargs - 4 >> 2]
},
getStr: function(t) {
return UTF8ToString(t)
},
get64: function(t, e) {
return t
}
};
function $e(t) {
return t % 4 == 0 && (t % 100 != 0 || t % 400 == 0)
}
function Pe(t, e) {
for (var r = 0, n = 0; n <= e; r += t[n++])
;
return r
}
var Ae = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
De = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
function Fe(t, e) {
for (var r = new Date(t.getTime()); e > 0;) {
var n = $e(r.getFullYear()),
o = r.getMonth(),
i = (n ? Ae : De)[o];
if (!(e > i - r.getDate()))
return r.setDate(r.getDate() + e),
r;
e -= i - r.getDate() + 1,
r.setDate(1),
o < 11 ? r.setMonth(o + 1) : (r.setMonth(0),
r.setFullYear(r.getFullYear() + 1))
}
return r
}
for (var t = new Array(256), e = 0; e < 256; ++e)
t[e] = String.fromCharCode(e);
st = t
mt = o.BindingError = yt(Error, "BindingError"),
gt = o.InternalError = yt(Error, "InternalError"),
Rt.prototype.isAliasOf = Ct,
Rt.prototype.clone = Ft,
Rt.prototype.delete = Et,
Rt.prototype.isDeleted = St,
Rt.prototype.deleteLater = jt,
re.prototype.getPointee = Lt,
re.prototype.destructor = Gt,
re.prototype.argPackAdvance = 8,
re.prototype.readValueFromPointer = Bt,
re.prototype.deleteObject = Nt,
re.prototype.fromWireType = ee,
o.getInheritedInstanceCount = Jt,
o.getLiveInheritedInstances = Xt,
o.flushPendingDeletes = Wt,
o.setDelayFunction = Zt,
ae = o.UnboundTypeError = yt(Error, "UnboundTypeError"),
o.count_emval_handles = ye,
o.get_first_emval = me;
var Se, import_table_impl = {
d: function(t, e, r, n) {
abort("Assertion failed: " + UTF8ToString(t) + ", at: " + [e ? UTF8ToString(e) : "unknown filename", r, n ? UTF8ToString(n) : "unknown function"])
},
g: function(t) {
return ke(t + 16) + 16
},
f: function(t, e, r) {
throw new ExceptionInfo(t).init(e, r),t,t
},
p: function(t, e, r, n, o) {},
y: function(t, e, r, n, o) {
var i = ut(r);
_t(t, {
name: e = ct(e),
fromWireType: function(t) {
return !!t
},
toWireType: function(t, e) {
return e ? n : o
},
argPackAdvance: 8,
readValueFromPointer: function(t) {
var n;
if (1 === r)
n = S;
else if (2 === r)
n = k;
else {
if (4 !== r)
throw new TypeError("Unknown boolean type size: " + e);
n = j
}
return this.fromWireType(n[t >> i])
},
destructorFunction: null
})
},
A: function(t, e, r, n, o, i, a, u, s, c, f, l, p) {
f = ct(f),
i = ie(o, i),
u && (u = ie(a, u)),
c && (c = ie(s, c)),
p = ie(l, p);
var d = dt(f);
xt(d, (function() {
se("Cannot construct " + f + " due to unbound types", [n])
})),
bt([t, e, r], n ? [n] : [], (function(e) {
var r, o;
e = e[0],
o = n ? (r = e.registeredClass).instancePrototype : Rt.prototype;
var a = ht(d, (function() {
if (Object.getPrototypeOf(this) !== s)
throw new mt("Use 'new' to construct " + f);
if (void 0 === l.constructor_body)
throw new mt(f + " has no accessible constructor");
var t = l.constructor_body[arguments.length];
if (void 0 === t)
throw new mt("Tried to invoke ctor of " + f + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys(l.constructor_body).toString() + ") parameters instead!");
return t.apply(this, arguments)
})),
s = Object.create(o, {
constructor: {
value: a
}
});
a.prototype = s;
var l = new Ut(f, a, s, p, r, i, u, c),
h = new re(f, l, !0, !1, !1),
y = new re(f + "*", l, !1, !1, !1),
m = new re(f + " const*", l, !1, !0, !1);
return Mt[t] = {
pointerType: y,
constPointerType: m
},
ne(d, a),
[h, y, m]
}))
},
w: function(t, e, r, n, o, i) {
T(e > 0);
var a = ce(e, r);
o = ie(n, o),
bt([], [t], (function(t) {
var r = "constructor " + (t = t[0]).name;
if (void 0 === t.registeredClass.constructor_body && (t.registeredClass.constructor_body = []),
void 0 !== t.registeredClass.constructor_body[e - 1])
throw new mt("Cannot register multiple constructors with identical number of parameters (" + (e - 1) + ") for class '" + t.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!");
return t.registeredClass.constructor_body[e - 1] = function() {
se("Cannot construct " + t.name + " due to unbound types", a)
},
bt([], a, (function(n) {
return n.splice(1, 0, null),
t.registeredClass.constructor_body[e - 1] = le(r, n, null, o, i),
[]
})),
[]
}))
},
c: function(t, e, r, n, o, i, a, u) {
var s = ce(r, n);
e = ct(e),
i = ie(o, i),
bt([], [t], (function(t) {
var n = (t = t[0]).name + "." + e;
function o() {
se("Cannot call " + n + " due to unbound types", s)
}
e.startsWith("@@") && (e = Symbol[e.substring(2)]),
u && t.registeredClass.pureVirtualFunctions.push(e);
var c = t.registeredClass.instancePrototype,
f = c[e];
return void 0 === f || void 0 === f.overloadTable && f.className !== t.name && f.argCount === r - 2 ? (o.argCount = r - 2,
o.className = t.name,
c[e] = o) : (It(c, e, n),
c[e].overloadTable[r - 2] = o),
bt([], s, (function(o) {
var u = le(n, o, t, i, a);
return void 0 === c[e].overloadTable ? (u.argCount = r - 2,
c[e] = u) : c[e].overloadTable[r - 2] = u,
[]
})),
[]
}))
},
x: function(t, e) {
_t(t, {
name: e = ct(e),
fromWireType: function(t) {
var e = ve.toValue(t);
return he(t),
e
},
toWireType: function(t, e) {
return ve.toHandle(e)
},
argPackAdvance: 8,
readValueFromPointer: Bt,
destructorFunction: null
})
},
j: function(t, e, r) {
var n = ut(r);
_t(t, {
name: e = ct(e),
fromWireType: function(t) {
return t
},
toWireType: function(t, e) {
if ("number" != typeof e && "boolean" != typeof e)
throw new TypeError('Cannot convert "' + ge(e) + '" to ' + this.name);
return e
},
argPackAdvance: 8,
readValueFromPointer: we(e, n),
destructorFunction: null
})
},
l: function(t, e, r, n, o, i) {
// Registering functions from constructor (;204;)
var a = ce(e, r);
t = ct(t),
o = ie(n, o),
xt(t, (function() {
se("Cannot call " + t + " due to unbound types", a)
}), e - 1),
bt([], a, (function(r) {
var n = [r[0], null].concat(r.slice(1));
return ne(t, le(t, n, null, o, i), e - 1),
[]
}))
},
b: function(t, e, r, n, o) {
e = ct(e),
-1 === o && (o = 4294967295);
var i = ut(r),
a = function(t) {
return t
};
if (0 === n) {
var u = 32 - 8 * r;
a = function(t) {
return t << u >>> u
}
}
var s = e.includes("unsigned");
_t(t, {
name: e,
fromWireType: a,
toWireType: function(t, r) {
if ("number" != typeof r && "boolean" != typeof r)
throw new TypeError('Cannot convert "' + ge(r) + '" to ' + this.name);
if (r < n || r > o)
throw new TypeError('Passing a number "' + ge(r) + '" from JS side to C/C++ side to an argument of type "' + e + '", which is outside the valid range [' + n + ", " + o + "]!");
return s ? r >>> 0 : 0 | r
},
argPackAdvance: 8,
readValueFromPointer: be(e, i, 0 !== n),
destructorFunction: null
})
},
a: function(t, e, r) {
var n = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array][e];
function o(t) {
var e = R,
r = e[t >>= 2],
o = e[t + 1];
return new n(E, o, r)
}
_t(t, {
name: r = ct(r),
fromWireType: o,
argPackAdvance: 8,
readValueFromPointer: o
}, {
ignoreDuplicateRegistrations: !0
})
},
k: function(t, e) {
var r = "std::string" === (e = ct(e));
_t(t, {
name: e,
fromWireType: function(t) {
var e, n = R[t >> 2];
if (r)
for (var o = t + 4, i = 0; i <= n; ++i) {
var a = t + 4 + i;
if (i == n || 0 == O[a]) {
var u = UTF8ToString(o, a - o);
void 0 === e ? e = u : (e += String.fromCharCode(0),
e += u),
o = a + 1
}
}
else {
var s = new Array(n);
for (i = 0; i < n; ++i)
s[i] = String.fromCharCode(O[t + 4 + i]);
e = s.join("")
}
return We(t),
e
},
toWireType: function(t, e) {
e instanceof ArrayBuffer && (e = new Uint8Array(e));
var n = "string" == typeof e;
n || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array || vt("Cannot pass non-string to std::string");
var o = (r && n ? function() {
return UTF8CharCount(e)
} :
function() {
return e.length
}
)(),
i = ke(4 + o + 1);
if (R[i >> 2] = o,
r && n)
stringToUTF8Array(e, O, i + 4, o + 1);
else if (n)
for (var a = 0; a < o; ++a) {
var u = e.charCodeAt(a);
u > 255 && (We(i),
vt("String has UTF-16 code units that do not fit in 8 bits")),
O[i + 4 + a] = u
}
else
for (a = 0; a < o; ++a)
O[i + 4 + a] = e[a];
return null !== t && t.push(We, i),
i
},
argPackAdvance: 8,
readValueFromPointer: Bt,
destructorFunction: function(t) {
We(t)
}
})
},
e: function(t, e, r) {
var n, o, i, a, u;
r = ct(r),
2 === e ? (n = UTF16ArrayToString,
o = H,
a = Y,
i = function() {
return W
},
u = 1) : 4 === e && (n = V,
o = z,
a = B,
i = function() {
return R
},
u = 2),
_t(t, {
name: r,
fromWireType: function(t) {
for (var r, o = R[t >> 2], a = i(), s = t + 4, c = 0; c <= o; ++c) {
var f = t + 4 + c * e;
if (c == o || 0 == a[f >> u]) {
var l = n(s, f - s);
void 0 === r ? r = l : (r += String.fromCharCode(0),
r += l),
s = f + e
}
}
return We(t),
r
},
toWireType: function(t, n) {
"string" != typeof n && vt("Cannot pass non-string to C++ string type " + r);
var i = a(n),
s = ke(4 + i + e);
return R[s >> 2] = i >> u,
o(n, s + 4, i + e),
null !== t && t.push(We, s),
s
},
argPackAdvance: 8,
readValueFromPointer: Bt,
destructorFunction: function(t) {
We(t)
}
})
},
z: function(t, e) {
_t(t, {
isVoid: !0,
name: e = ct(e),
argPackAdvance: 0,
fromWireType: function() {},
toWireType: function(t, e) {}
})
},
m: he,
n: function(t) {
t > 4 && (de[t].refcount += 1)
},
o: function(t, e) {
var r, n, o;
n = "_emval_take_value",
void 0 === (o = lt[r = t]) && vt(n + " has unknown type " + ue(r));
var i = (t = o).readValueFromPointer(e);
return ve.toHandle(i)
},
h: function() {
abort("")
},
r: function(t, e, r) {
O.copyWithin(t, e, e + r)
},
s: function(t) {
O.length,
abort("OOM")
},
u: function(t, e) {},
v: function(t, e) {},
i: function(t, e, r, n) {
for (var o = 0, i = 0; i < r; i++) {
var a = j[e >> 2],
u = j[e + 4 >> 2];
e += 8;
for (var s = 0; s < u; s++)
Te.printChar(t, O[a + s]);
o += u
}
return j[n >> 2] = o,
0
},
q: function(t) {
t
},
t: function(t, e, r, n) {
return Ee(t, e, r, n)
}
},
ke = (function() {
var import_table = {
a: import_table_impl
};
function updateGlobalBufferAndViews(t, e) {
var r, n, exports = t.exports;
o.asm = exports;
b = o.asm.B; // Mem
r = b.buffer
E = r
o.HEAP8 = S = new Int8Array(r),
o.HEAP16 = k = new Int16Array(r),
o.HEAP32 = j = new Int32Array(r),
o.HEAPU8 = O = new Uint8Array(r),
o.HEAPU16 = W = new Uint16Array(r),
o.HEAPU32 = R = new Uint32Array(r),
o.HEAPF32 = M = new Float32Array(r),
o.HEAPF64 = I = new Float64Array(r),
L = o.asm.D // Table
n = o.asm.C // ctor
N.unshift(n),
function(t) {
if (J--,
o.monitorRunDependencies && o.monitorRunDependencies(J),
0 == J && (null !== X && (clearInterval(X),
X = null),
Z)) {
var e = Z;
Z = null,
e()
}
}()
}
function load_wasm(t) {
updateGlobalBufferAndViews(t.instance)
}
function getBinaryPromise(e) {
return function() {
if (!w) {
if (readSync)
return new Promise((function(t, e) {
readSync(Q, (function(e) {
t(new Uint8Array(e))
}), e)
}))
}
return Promise.resolve().then((function() {
return getBinary(Q)
}))
}().then((function(e) {
return WebAssembly.instantiate(e, import_table)
})).then((function(t) {
return t
})).then(e, (function(t) {
g("failed to asynchronously prepare wasm: " + t,Q),
abort(t)
}))
}
if (J++,
o.monitorRunDependencies && o.monitorRunDependencies(J),
o.instantiateWasm)
try {
return o.instantiateWasm(import_table, updateGlobalBufferAndViews)
} catch (t) {
return g("Module.instantiateWasm callback failed with error: " + t),
!1
}
w || "function" != typeof WebAssembly.instantiate || isDataURI(Q) || isFileURI(Q) || getBinaryPromise(load_wasm)
}(),
o.___wasm_call_ctors = function() {
return (o.___wasm_call_ctors = o.asm.C).apply(null, arguments)
},
o._malloc = function() {
return (ke = o._malloc = o.asm.E).apply(null, arguments)
}
),
We = o._free = function() {
return (We = o._free = o.asm.F).apply(null, arguments)
},
je = o.___getTypeName = function() {
return (je = o.___getTypeName = o.asm.G).apply(null, arguments)
};
o.___embind_register_native_and_builtin_types = function() {
return (o.___embind_register_native_and_builtin_types = o.asm.H).apply(null, arguments)
},
o.dynCall_jiji = function() {
return (o.dynCall_jiji = o.asm.I).apply(null, arguments)
},
o.dynCall_iiiiij = function() {
return (o.dynCall_iiiiij = o.asm.J).apply(null, arguments)
},
o.dynCall_iiiiijj = function() {
return (o.dynCall_iiiiijj = o.asm.K).apply(null, arguments)
},
o.dynCall_iiiiiijj = function() {
return (o.dynCall_iiiiiijj = o.asm.L).apply(null, arguments)
},
o.dynCall_viijii = function() {
return (o.dynCall_viijii = o.asm.M).apply(null, arguments)
};
function ExitStatus(t) {
this.name = "ExitStatus",
this.message = "Program terminated with exit(" + t + ")",
this.status = t
}
function doRun(t) {
function postRun() {
Se || (Se = !0,o.calledRun = !0,C || (!0,
callRuntimeCallbacks(N),
o.onRuntimeInitialized && o.onRuntimeInitialized(),
function() {
if (o.postRun)
for ("function" == typeof o.postRun && (o.postRun = [o.postRun]); o.postRun.length;)
t = o.postRun.shift(),
q.unshift(t);
var t;
callRuntimeCallbacks(q)
}()))
}
t = t || l
J > 0 || (! function preRun() {
if (o.preRun)
for ("function" == typeof o.preRun && (o.preRun = [o.preRun]); o.preRun.length;)
t = o.preRun.shift(),
G.unshift(t);
var t;
callRuntimeCallbacks(G)
}(),
J > 0 || (o.setStatus ? (o.setStatus("Running..."),
setTimeout((function() {
setTimeout((function() {
o.setStatus("")
}), 1),
postRun()
}), 1)) : postRun()))
}
if (Z = function t() {
Se || doRun(),
Se || (Z = t)
},
o.run = doRun,
o.preInit)
for ("function" == typeof o.preInit && (o.preInit = [o.preInit]); o.preInit.length > 0;)
o.preInit.pop()();
doRun();
return o;
})
// XXX: With PythonMonkey, the required module
// is destructed(?) once the function is called
// This is probably not what actaully happened, but
// for now, everytime an FP is generated, the entire
// WASM module is reloaded as a workaround
function instantiateRuntime(){
return new Promise((resolve, reject) => {
var fpRuntime = AudioFingerprintRuntime()
var monitor = setInterval(() => {
if (typeof fpRuntime.ExtractQueryFP == "function")
clearInterval(monitor) || resolve(fpRuntime)
})
})
}
function GenerateFP(floatArray) {
let PCMBuffer = Float32Array.from(floatArray)
console.log('[afp] input samples n=', PCMBuffer.length)
return instantiateRuntime().then((fpRuntime) => {
console.log('[afp] begin fingerprinting')
let fp_vector = fpRuntime.ExtractQueryFP(PCMBuffer.buffer)
let result_buf = new Uint8Array(fp_vector.size());
for (let t = 0; t < fp_vector.size(); t++)
result_buf[t] = fp_vector.get(t);
return globalThis.b64encode(result_buf)
});
}
if (typeof exports != 'undefined') /* Node, PythonMonkey */
exports.GenerateFP = GenerateFP;