@vonage/ml-transformers 7.0.0-alpha.3 → 7.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/processor-worker-B9-xvwqE.js.map +1 -0
- package/dist/ml-transformers.es.js +479 -445
- package/dist/ml-transformers.es.js.map +1 -1
- package/dist/ml-transformers.min.js +1 -1
- package/dist/ml-transformers.static.js +479 -445
- package/dist/ml-transformers.umd.js +21 -21
- package/dist/ml-transformers.umd.js.map +1 -1
- package/package.json +2 -2
- package/dist/assets/processor-worker-CR7IjkAn.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
async function is() {
|
|
2
2
|
return new Promise(async (r, e) => {
|
|
3
|
-
await si() || oi() ? r() : e(
|
|
3
|
+
!ss() && (await si() || oi()) ? r() : e(
|
|
4
4
|
"Your browser does not support the MediaStreamTrack API for Insertable Streams of Media."
|
|
5
5
|
);
|
|
6
6
|
});
|
|
@@ -19,6 +19,10 @@ function os() {
|
|
|
19
19
|
self.AudioWorkletNode
|
|
20
20
|
].filter((r) => r === void 0).length === 0;
|
|
21
21
|
}
|
|
22
|
+
function ss() {
|
|
23
|
+
const r = navigator.userAgent.toLowerCase();
|
|
24
|
+
return navigator.vendor && navigator.vendor.toLowerCase().indexOf("apple") > -1 && !(r.indexOf("applewebkit") > -1 && r.indexOf("version") === -1) ? parseInt((r.split(" ").find((e) => e.includes("version/")) ?? "/0").split("/")[1]) < 26 : !1;
|
|
25
|
+
}
|
|
22
26
|
function si() {
|
|
23
27
|
return new Promise((r) => {
|
|
24
28
|
function e() {
|
|
@@ -51,7 +55,7 @@ function je(r, e) {
|
|
|
51
55
|
if (n.has(t))
|
|
52
56
|
return n.get(t);
|
|
53
57
|
}
|
|
54
|
-
function
|
|
58
|
+
function as(r, e, t) {
|
|
55
59
|
const n = q.get(r);
|
|
56
60
|
if (n.has(e))
|
|
57
61
|
for (const i of n.get(e))
|
|
@@ -213,7 +217,7 @@ class J {
|
|
|
213
217
|
async emit(e, t) {
|
|
214
218
|
if (Ae(e), Me(e) && !Ft)
|
|
215
219
|
throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");
|
|
216
|
-
this.logIfDebugEnabled("emit", e, t),
|
|
220
|
+
this.logIfDebugEnabled("emit", e, t), as(this, e, t);
|
|
217
221
|
const n = Te(this, e) ?? /* @__PURE__ */ new Set(), i = ee.get(this), o = [...n], s = Me(e) ? [] : [...i];
|
|
218
222
|
await Tn, await Promise.all([
|
|
219
223
|
...o.map(async (a) => {
|
|
@@ -316,30 +320,30 @@ Object.defineProperty(J, "listenerRemoved", {
|
|
|
316
320
|
enumerable: !0,
|
|
317
321
|
configurable: !1
|
|
318
322
|
});
|
|
319
|
-
var
|
|
320
|
-
const
|
|
323
|
+
var cs = Object.defineProperty, us = (r, e, t) => e in r ? cs(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, ls = (r, e, t) => (us(r, e + "", t), t);
|
|
324
|
+
const fs = "hlg.tokbox.com/prod/logging/vcp_webrtc", ds = "https://", hs = 1e4;
|
|
321
325
|
let ht;
|
|
322
|
-
const
|
|
323
|
-
function
|
|
326
|
+
const ms = new Uint8Array(16);
|
|
327
|
+
function ps() {
|
|
324
328
|
if (!ht && (ht = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !ht))
|
|
325
329
|
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
326
|
-
return ht(
|
|
330
|
+
return ht(ms);
|
|
327
331
|
}
|
|
328
332
|
const F = [];
|
|
329
333
|
for (let r = 0; r < 256; ++r)
|
|
330
334
|
F.push((r + 256).toString(16).slice(1));
|
|
331
|
-
function
|
|
335
|
+
function gs(r, e = 0) {
|
|
332
336
|
return (F[r[e + 0]] + F[r[e + 1]] + F[r[e + 2]] + F[r[e + 3]] + "-" + F[r[e + 4]] + F[r[e + 5]] + "-" + F[r[e + 6]] + F[r[e + 7]] + "-" + F[r[e + 8]] + F[r[e + 9]] + "-" + F[r[e + 10]] + F[r[e + 11]] + F[r[e + 12]] + F[r[e + 13]] + F[r[e + 14]] + F[r[e + 15]]).toLowerCase();
|
|
333
337
|
}
|
|
334
|
-
const
|
|
335
|
-
randomUUID:
|
|
338
|
+
const ys = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), kn = {
|
|
339
|
+
randomUUID: ys
|
|
336
340
|
};
|
|
337
|
-
function
|
|
341
|
+
function bs(r, e, t) {
|
|
338
342
|
if (kn.randomUUID && !r)
|
|
339
343
|
return kn.randomUUID();
|
|
340
344
|
r = r || {};
|
|
341
|
-
const n = r.random || (r.rng ||
|
|
342
|
-
return n[6] = n[6] & 15 | 64, n[8] = n[8] & 63 | 128,
|
|
345
|
+
const n = r.random || (r.rng || ps)();
|
|
346
|
+
return n[6] = n[6] & 15 | 64, n[8] = n[8] & 63 | 128, gs(n);
|
|
343
347
|
}
|
|
344
348
|
function Ur(r, e) {
|
|
345
349
|
globalThis.vonage || (globalThis.vonage = {}), globalThis.vonage.workerizer || (globalThis.vonage.workerizer = {});
|
|
@@ -354,9 +358,9 @@ var ye = /* @__PURE__ */ ((r) => (r.INIT = "INIT", r.FORWARD = "FORWARD", r.TERM
|
|
|
354
358
|
function ai(r) {
|
|
355
359
|
return [ImageBitmap, ReadableStream, WritableStream].some((e) => r instanceof e);
|
|
356
360
|
}
|
|
357
|
-
let
|
|
358
|
-
function
|
|
359
|
-
const o =
|
|
361
|
+
let ws = 0;
|
|
362
|
+
function xs(r, e, t, n, i) {
|
|
363
|
+
const o = ws++;
|
|
360
364
|
return r.postMessage(
|
|
361
365
|
{
|
|
362
366
|
id: o,
|
|
@@ -384,7 +388,7 @@ const Pn = Ur("workerized", {});
|
|
|
384
388
|
function ci() {
|
|
385
389
|
return typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope;
|
|
386
390
|
}
|
|
387
|
-
async function
|
|
391
|
+
async function vs() {
|
|
388
392
|
if (ci())
|
|
389
393
|
Ze({ type: ye.GLOBALS_SYNC }, ie);
|
|
390
394
|
else {
|
|
@@ -392,7 +396,7 @@ async function xs() {
|
|
|
392
396
|
for (const e in Pn) {
|
|
393
397
|
const { worker: t, resolvers: n } = Pn[e].workerContext;
|
|
394
398
|
t && r.push(
|
|
395
|
-
|
|
399
|
+
xs(
|
|
396
400
|
t,
|
|
397
401
|
ye.GLOBALS_SYNC,
|
|
398
402
|
"",
|
|
@@ -413,7 +417,7 @@ function Ot(r, e) {
|
|
|
413
417
|
for (const t in r)
|
|
414
418
|
Array.isArray(r[t]) ? (e[t] = [], Ot(r[t], e[t])) : typeof r[t] == "object" ? (e[t] = {}, Ot(r[t], e[t])) : e[t] = r[t];
|
|
415
419
|
}
|
|
416
|
-
async function
|
|
420
|
+
async function _s(r, e) {
|
|
417
421
|
const { functionName: t, args: n } = r;
|
|
418
422
|
if (!e.instance)
|
|
419
423
|
throw "instance not initialized";
|
|
@@ -423,78 +427,78 @@ async function vs(r, e) {
|
|
|
423
427
|
throw `undefined function [${t}] in class ${e.instance.constructor.workerId}`;
|
|
424
428
|
Ze(r, await e.instance[t](...n ?? []));
|
|
425
429
|
}
|
|
426
|
-
const
|
|
427
|
-
function
|
|
430
|
+
const Es = Ur("registeredWorkers", {});
|
|
431
|
+
function As(r, e) {
|
|
428
432
|
if (!r.args)
|
|
429
433
|
throw "Missing className while initializing worker";
|
|
430
|
-
const [t, n] = r.args, i =
|
|
434
|
+
const [t, n] = r.args, i = Es[t];
|
|
431
435
|
if (i)
|
|
432
436
|
e.instance = new i(r.args.slice(1));
|
|
433
437
|
else
|
|
434
438
|
throw `unknown worker class ${t}`;
|
|
435
439
|
Ot(n, ie), Ze(r, typeof e.instance !== void 0);
|
|
436
440
|
}
|
|
437
|
-
async function
|
|
441
|
+
async function Ts(r, e) {
|
|
438
442
|
const { args: t } = r;
|
|
439
443
|
if (!e.instance)
|
|
440
444
|
throw "instance not initialized";
|
|
441
445
|
let n;
|
|
442
446
|
e.instance.terminate && (n = await e.instance.terminate(...t ?? [])), Ze(r, n);
|
|
443
447
|
}
|
|
444
|
-
function
|
|
448
|
+
function Ss(r) {
|
|
445
449
|
if (!r.args)
|
|
446
450
|
throw "Missing globals while syncing";
|
|
447
451
|
Ot(r.args[0], ie), Ze(r, {});
|
|
448
452
|
}
|
|
449
|
-
function
|
|
453
|
+
function Is() {
|
|
450
454
|
const r = {};
|
|
451
455
|
onmessage = async (e) => {
|
|
452
456
|
const t = e.data;
|
|
453
457
|
switch (t.type) {
|
|
454
458
|
case ye.INIT:
|
|
455
|
-
|
|
459
|
+
As(t, r);
|
|
456
460
|
break;
|
|
457
461
|
case ye.FORWARD:
|
|
458
|
-
|
|
462
|
+
_s(t, r);
|
|
459
463
|
break;
|
|
460
464
|
case ye.TERMINATE:
|
|
461
|
-
|
|
465
|
+
Ts(t, r);
|
|
462
466
|
break;
|
|
463
467
|
case ye.GLOBALS_SYNC:
|
|
464
|
-
|
|
468
|
+
Ss(t);
|
|
465
469
|
break;
|
|
466
470
|
}
|
|
467
471
|
};
|
|
468
472
|
}
|
|
469
|
-
ci() &&
|
|
470
|
-
function
|
|
473
|
+
ci() && Is();
|
|
474
|
+
function Rs(r, e) {
|
|
471
475
|
return ie[r] || (ie[r] = e), [
|
|
472
476
|
() => ie[r],
|
|
473
477
|
async (t) => {
|
|
474
|
-
ie[r] = t, await
|
|
478
|
+
ie[r] = t, await vs();
|
|
475
479
|
}
|
|
476
480
|
];
|
|
477
481
|
}
|
|
478
|
-
function
|
|
479
|
-
return
|
|
482
|
+
function ks(r, e) {
|
|
483
|
+
return Rs(r, e);
|
|
480
484
|
}
|
|
481
|
-
const [
|
|
482
|
-
function
|
|
483
|
-
|
|
485
|
+
const [Ps, Fs] = ks("metadata");
|
|
486
|
+
function Cs(r) {
|
|
487
|
+
Fs(r);
|
|
484
488
|
}
|
|
485
489
|
function Tt() {
|
|
486
|
-
return
|
|
490
|
+
return Ps();
|
|
487
491
|
}
|
|
488
492
|
let Lr = class {
|
|
489
493
|
constructor(e, t) {
|
|
490
|
-
|
|
494
|
+
ls(this, "uuid"), this.config = e, this.uuid = t ?? bs();
|
|
491
495
|
}
|
|
492
496
|
async send(e) {
|
|
493
497
|
var t, n, i;
|
|
494
498
|
const { appId: o, sourceType: s } = (t = Tt()) != null ? t : {};
|
|
495
499
|
if (!o || !s)
|
|
496
500
|
return "metadata missing";
|
|
497
|
-
const a = new AbortController(), c = setTimeout(() => a.abort(),
|
|
501
|
+
const a = new AbortController(), c = setTimeout(() => a.abort(), hs);
|
|
498
502
|
return await ((i = (n = this.config) == null ? void 0 : n.fetch) != null ? i : fetch)(this.getUrl(), {
|
|
499
503
|
method: "POST",
|
|
500
504
|
headers: this.getHeaders(),
|
|
@@ -504,8 +508,8 @@ let Lr = class {
|
|
|
504
508
|
}
|
|
505
509
|
getUrl() {
|
|
506
510
|
var e;
|
|
507
|
-
let t = (e = Tt().proxyUrl) != null ? e :
|
|
508
|
-
return t += (t.at(-1) === "/" ? "" : "/") +
|
|
511
|
+
let t = (e = Tt().proxyUrl) != null ? e : ds;
|
|
512
|
+
return t += (t.at(-1) === "/" ? "" : "/") + fs, t;
|
|
509
513
|
}
|
|
510
514
|
getHeaders() {
|
|
511
515
|
return {
|
|
@@ -524,7 +528,7 @@ let Lr = class {
|
|
|
524
528
|
};
|
|
525
529
|
}
|
|
526
530
|
};
|
|
527
|
-
const St = "3.0.
|
|
531
|
+
const St = "3.0.2", _r = class {
|
|
528
532
|
};
|
|
529
533
|
_r.updates = {
|
|
530
534
|
transformer_new: "New transformer",
|
|
@@ -538,11 +542,11 @@ _r.updates = {
|
|
|
538
542
|
writable_null: "Writable is null"
|
|
539
543
|
};
|
|
540
544
|
let be = _r;
|
|
541
|
-
function
|
|
545
|
+
function Os(r) {
|
|
542
546
|
return typeof r == "object" && r !== null && "message" in r && typeof r.message == "string";
|
|
543
547
|
}
|
|
544
|
-
function
|
|
545
|
-
if (
|
|
548
|
+
function Ms(r) {
|
|
549
|
+
if (Os(r)) return r;
|
|
546
550
|
try {
|
|
547
551
|
return new Error(JSON.stringify(r));
|
|
548
552
|
} catch {
|
|
@@ -550,9 +554,9 @@ function Os(r) {
|
|
|
550
554
|
}
|
|
551
555
|
}
|
|
552
556
|
function pr(r) {
|
|
553
|
-
return
|
|
557
|
+
return Ms(r).message;
|
|
554
558
|
}
|
|
555
|
-
class
|
|
559
|
+
class Bs {
|
|
556
560
|
constructor(e, t) {
|
|
557
561
|
this.config = e, this.frameTransformedCount = 0, this.frameFromSourceCount = 0, this.startAt = 0, this.reporter = new Lr(e, t);
|
|
558
562
|
}
|
|
@@ -576,12 +580,12 @@ class Ms {
|
|
|
576
580
|
})) : "success";
|
|
577
581
|
}
|
|
578
582
|
}
|
|
579
|
-
var
|
|
580
|
-
const
|
|
581
|
-
class
|
|
583
|
+
var Ds = /* @__PURE__ */ ((r) => (r.FPS_DROP = "fps_drop", r))(Ds || {}), Us = /* @__PURE__ */ ((r) => (r.start = "start", r.transform = "transform", r.flush = "flush", r))(Us || {}), Er = /* @__PURE__ */ ((r) => (r.pipeline_ended = "pipeline_ended", r.pipeline_ended_with_error = "pipeline_ended_with_error", r.pipeline_started = "pipeline_started", r.pipeline_started_with_error = "pipeline_started_with_error", r.pipeline_restarted = "pipeline_restarted", r.pipeline_restarted_with_error = "pipeline_restarted_with_error", r))(Er || {});
|
|
584
|
+
const Ls = 500, zs = 0.8;
|
|
585
|
+
class Ns extends J {
|
|
582
586
|
constructor(e, t) {
|
|
583
|
-
super(), this.reporter_ = new Lr(), this.reporterQos_ = new
|
|
584
|
-
loggingIntervalFrameCount:
|
|
587
|
+
super(), this.reporter_ = new Lr(), this.reporterQos_ = new Bs({
|
|
588
|
+
loggingIntervalFrameCount: Ls,
|
|
585
589
|
report: {
|
|
586
590
|
version: St
|
|
587
591
|
}
|
|
@@ -632,7 +636,7 @@ class zs extends J {
|
|
|
632
636
|
};
|
|
633
637
|
this.emit("error", i);
|
|
634
638
|
}
|
|
635
|
-
if (this.trackExpectedRate_ != -1 && this.trackExpectedRate_ *
|
|
639
|
+
if (this.trackExpectedRate_ != -1 && this.trackExpectedRate_ * zs > this.reporterQos_.fps) {
|
|
636
640
|
const n = {
|
|
637
641
|
eventMetaData: {
|
|
638
642
|
transformerIndex: this.index_
|
|
@@ -697,11 +701,11 @@ class zs extends J {
|
|
|
697
701
|
);
|
|
698
702
|
}
|
|
699
703
|
}
|
|
700
|
-
class
|
|
704
|
+
class $s extends J {
|
|
701
705
|
constructor(e) {
|
|
702
706
|
super(), this.transformers_ = [], this.trackExpectedRate_ = -1;
|
|
703
707
|
for (let t = 0; t < e.length; t++) {
|
|
704
|
-
let n = new
|
|
708
|
+
let n = new Ns(e[t], t);
|
|
705
709
|
n.on("error", (i) => {
|
|
706
710
|
this.emit("error", i);
|
|
707
711
|
}), n.on("warn", (i) => {
|
|
@@ -825,7 +829,7 @@ class ui extends J {
|
|
|
825
829
|
return;
|
|
826
830
|
}
|
|
827
831
|
let n = !1;
|
|
828
|
-
this.pipeline_ && (n = !0, this.pipeline_.clearListeners(), this.pipeline_.destroy()), this.pipeline_ = new
|
|
832
|
+
this.pipeline_ && (n = !0, this.pipeline_.clearListeners(), this.pipeline_.destroy()), this.pipeline_ = new $s(this.transformers_), this.pipeline_.on("warn", (i) => {
|
|
829
833
|
this.emit("warn", i);
|
|
830
834
|
}), this.pipeline_.on("error", (i) => {
|
|
831
835
|
this.emit("error", i);
|
|
@@ -872,7 +876,7 @@ class ui extends J {
|
|
|
872
876
|
return "kind" in e;
|
|
873
877
|
}
|
|
874
878
|
}
|
|
875
|
-
class
|
|
879
|
+
class Ws {
|
|
876
880
|
constructor({ kind: e }) {
|
|
877
881
|
if (e == "video") {
|
|
878
882
|
const t = document.createElement("canvas"), n = t.getContext("2d", {
|
|
@@ -917,17 +921,22 @@ class $s {
|
|
|
917
921
|
}
|
|
918
922
|
}
|
|
919
923
|
}
|
|
920
|
-
function
|
|
921
|
-
return self.MediaStreamTrackGenerator ? self.MediaStreamTrackGenerator :
|
|
924
|
+
function Gs() {
|
|
925
|
+
return self.MediaStreamTrackGenerator ? self.MediaStreamTrackGenerator : Ws;
|
|
922
926
|
}
|
|
923
|
-
class
|
|
927
|
+
class Vs {
|
|
924
928
|
constructor(e) {
|
|
925
929
|
const t = e.track ?? e;
|
|
926
930
|
t.kind == "video" ? this.readable = new ReadableStream({
|
|
927
931
|
async start(n) {
|
|
928
932
|
t.addEventListener(
|
|
929
933
|
"ended",
|
|
930
|
-
() =>
|
|
934
|
+
() => {
|
|
935
|
+
try {
|
|
936
|
+
n.close();
|
|
937
|
+
} catch {
|
|
938
|
+
}
|
|
939
|
+
},
|
|
931
940
|
{ once: !0 }
|
|
932
941
|
), this.video = document.createElement("video"), this.video.srcObject = new MediaStream([t]), await Promise.all([
|
|
933
942
|
this.video.play(),
|
|
@@ -942,12 +951,22 @@ class Gs {
|
|
|
942
951
|
}), this.t1 = performance.now();
|
|
943
952
|
},
|
|
944
953
|
async pull(n) {
|
|
945
|
-
if (t.readyState == "ended")
|
|
946
|
-
|
|
954
|
+
if (t.readyState == "ended") {
|
|
955
|
+
try {
|
|
956
|
+
n.close();
|
|
957
|
+
} catch {
|
|
958
|
+
}
|
|
959
|
+
return;
|
|
960
|
+
}
|
|
947
961
|
const i = t.getSettings().frameRate || 30;
|
|
948
962
|
for (; performance.now() - this.t1 < 1e3 / i; )
|
|
949
|
-
if (await new Promise((o) => requestAnimationFrame(o)), t.readyState == "ended")
|
|
950
|
-
|
|
963
|
+
if (await new Promise((o) => requestAnimationFrame(o)), t.readyState == "ended") {
|
|
964
|
+
try {
|
|
965
|
+
n.close();
|
|
966
|
+
} catch {
|
|
967
|
+
}
|
|
968
|
+
return;
|
|
969
|
+
}
|
|
951
970
|
this.canvas.width = this.video.videoWidth, this.canvas.height = this.video.videoHeight, this.t1 = performance.now(), this.ctx.drawImage(this.video, 0, 0), n.enqueue(
|
|
952
971
|
new VideoFrame(this.canvas, {
|
|
953
972
|
timestamp: this.t1
|
|
@@ -958,7 +977,12 @@ class Gs {
|
|
|
958
977
|
async start(n) {
|
|
959
978
|
t.addEventListener(
|
|
960
979
|
"ended",
|
|
961
|
-
() =>
|
|
980
|
+
() => {
|
|
981
|
+
try {
|
|
982
|
+
n.close();
|
|
983
|
+
} catch {
|
|
984
|
+
}
|
|
985
|
+
},
|
|
962
986
|
{ once: !0 }
|
|
963
987
|
), this.ac = new AudioContext(), this.arrays = [];
|
|
964
988
|
function i() {
|
|
@@ -979,13 +1003,23 @@ class Gs {
|
|
|
979
1003
|
);
|
|
980
1004
|
},
|
|
981
1005
|
async pull(n) {
|
|
982
|
-
if (t.readyState == "ended")
|
|
983
|
-
|
|
1006
|
+
if (t.readyState == "ended") {
|
|
1007
|
+
try {
|
|
1008
|
+
n.close();
|
|
1009
|
+
} catch {
|
|
1010
|
+
}
|
|
1011
|
+
return;
|
|
1012
|
+
}
|
|
984
1013
|
for (; !this.arrays.length; )
|
|
985
1014
|
if (await new Promise(
|
|
986
1015
|
(s) => this.node.port.onmessage = s
|
|
987
|
-
), t.readyState == "ended")
|
|
988
|
-
|
|
1016
|
+
), t.readyState == "ended") {
|
|
1017
|
+
try {
|
|
1018
|
+
n.close();
|
|
1019
|
+
} catch {
|
|
1020
|
+
}
|
|
1021
|
+
return;
|
|
1022
|
+
}
|
|
989
1023
|
const [i] = this.arrays.shift(), o = new Float32Array(
|
|
990
1024
|
i.reduce((s, a) => s + a.length, 0)
|
|
991
1025
|
);
|
|
@@ -1007,17 +1041,17 @@ class Gs {
|
|
|
1007
1041
|
}));
|
|
1008
1042
|
}
|
|
1009
1043
|
}
|
|
1010
|
-
function
|
|
1011
|
-
return self.MediaStreamTrackProcessor ? self.MediaStreamTrackProcessor :
|
|
1044
|
+
function Hs() {
|
|
1045
|
+
return self.MediaStreamTrackProcessor ? self.MediaStreamTrackProcessor : Vs;
|
|
1012
1046
|
}
|
|
1013
|
-
class
|
|
1047
|
+
class js {
|
|
1014
1048
|
constructor() {
|
|
1015
1049
|
this.processor_ = null, this.generator_ = null;
|
|
1016
1050
|
}
|
|
1017
1051
|
init(e) {
|
|
1018
1052
|
return new Promise((t, n) => {
|
|
1019
1053
|
try {
|
|
1020
|
-
const i =
|
|
1054
|
+
const i = Hs();
|
|
1021
1055
|
this.processor_ = new i(e);
|
|
1022
1056
|
} catch (i) {
|
|
1023
1057
|
console.log(
|
|
@@ -1025,7 +1059,7 @@ class Hs {
|
|
|
1025
1059
|
), n(i);
|
|
1026
1060
|
}
|
|
1027
1061
|
try {
|
|
1028
|
-
const i =
|
|
1062
|
+
const i = Gs();
|
|
1029
1063
|
e.kind === "audio" ? this.generator_ = new i({
|
|
1030
1064
|
kind: "audio"
|
|
1031
1065
|
}) : e.kind === "video" ? this.generator_ = new i({
|
|
@@ -1049,7 +1083,7 @@ class Hs {
|
|
|
1049
1083
|
return this.generator_;
|
|
1050
1084
|
}
|
|
1051
1085
|
}
|
|
1052
|
-
class
|
|
1086
|
+
class Ys {
|
|
1053
1087
|
/**
|
|
1054
1088
|
* - When running insertable streams on the main `MediaProcessorInterface` should be instance of `MediaProcessor` class.
|
|
1055
1089
|
* - When running insertable streams on WebWorker `MediaProcessorInterface` should be instance of bridge calss created by the user. Example can be found [here](/docs/intro.md#using-the-transformer-on-webworker)
|
|
@@ -1072,7 +1106,7 @@ class js {
|
|
|
1072
1106
|
return await this.mediaProcessor_.transform(e);
|
|
1073
1107
|
}
|
|
1074
1108
|
if (oi()) {
|
|
1075
|
-
const t = new
|
|
1109
|
+
const t = new js();
|
|
1076
1110
|
return await t.init(e), await this.mediaProcessor_.transform(
|
|
1077
1111
|
t.getReadable(),
|
|
1078
1112
|
t.getWriteable()
|
|
@@ -1093,10 +1127,10 @@ class js {
|
|
|
1093
1127
|
});
|
|
1094
1128
|
}
|
|
1095
1129
|
}
|
|
1096
|
-
var It = /* @__PURE__ */ ((r) => (r.Low = "Low", r.High = "High", r))(It || {}),
|
|
1097
|
-
const
|
|
1098
|
-
async function
|
|
1099
|
-
const { wasm: r, insertableStreams: e, simd: t, webgl: n } = await
|
|
1130
|
+
var It = /* @__PURE__ */ ((r) => (r.Low = "Low", r.High = "High", r))(It || {}), Qs = /* @__PURE__ */ ((r) => (r.BackgroundBlur = "BackgroundBlur", r.VirtualBackground = "VirtualBackground", r.VideoBackground = "VideoBackground", r.SilhouetteBlur = "SilhouetteBlur", r))(Qs || {}), Ar = /* @__PURE__ */ ((r) => (r.FAST = "FAST", r.PRECISE = "PRECISE", r))(Ar || {}), Mt = /* @__PURE__ */ ((r) => (r.CANVAS = "CANVAS", r.WEBGL = "WEBGL", r))(Mt || {});
|
|
1131
|
+
const qs = async () => WebAssembly.validate(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 10, 1, 8, 0, 65, 0, 253, 15, 253, 98, 11]));
|
|
1132
|
+
async function Bd() {
|
|
1133
|
+
const { wasm: r, insertableStreams: e, simd: t, webgl: n } = await Xs();
|
|
1100
1134
|
if (!r.supported)
|
|
1101
1135
|
throw r.message;
|
|
1102
1136
|
if (!e.supported)
|
|
@@ -1106,14 +1140,14 @@ async function Md() {
|
|
|
1106
1140
|
if (!n.supported)
|
|
1107
1141
|
throw n.message;
|
|
1108
1142
|
}
|
|
1109
|
-
async function
|
|
1143
|
+
async function Xs() {
|
|
1110
1144
|
const r = {
|
|
1111
1145
|
wasm: {
|
|
1112
1146
|
supported: typeof WebAssembly == "object" && typeof WebAssembly.instantiate == "function",
|
|
1113
1147
|
message: "Your browser does not support WebAssembly features."
|
|
1114
1148
|
},
|
|
1115
1149
|
simd: {
|
|
1116
|
-
supported: await
|
|
1150
|
+
supported: await qs(),
|
|
1117
1151
|
message: "Your browser does not support simd features."
|
|
1118
1152
|
},
|
|
1119
1153
|
insertableStreams: { supported: !0 },
|
|
@@ -1122,7 +1156,7 @@ async function qs() {
|
|
|
1122
1156
|
supported: !0
|
|
1123
1157
|
// This is a legacy check from the previous segmentation engine. now we just return true always
|
|
1124
1158
|
},
|
|
1125
|
-
webgl:
|
|
1159
|
+
webgl: Ks(),
|
|
1126
1160
|
performance: li()
|
|
1127
1161
|
};
|
|
1128
1162
|
try {
|
|
@@ -1132,7 +1166,7 @@ async function qs() {
|
|
|
1132
1166
|
}
|
|
1133
1167
|
return r;
|
|
1134
1168
|
}
|
|
1135
|
-
function
|
|
1169
|
+
function Ks() {
|
|
1136
1170
|
if (!OffscreenCanvas)
|
|
1137
1171
|
return {
|
|
1138
1172
|
supported: !1,
|
|
@@ -1184,7 +1218,7 @@ function Ye(r, e) {
|
|
|
1184
1218
|
if (n.has(t))
|
|
1185
1219
|
return n.get(t);
|
|
1186
1220
|
}
|
|
1187
|
-
function
|
|
1221
|
+
function Js(r, e, t) {
|
|
1188
1222
|
const n = X.get(r);
|
|
1189
1223
|
if (n.has(e))
|
|
1190
1224
|
for (const i of n.get(e))
|
|
@@ -1346,7 +1380,7 @@ let et = class Tr {
|
|
|
1346
1380
|
async emit(e, t) {
|
|
1347
1381
|
if (Se(e), Be(e) && !Lt)
|
|
1348
1382
|
throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");
|
|
1349
|
-
this.logIfDebugEnabled("emit", e, t),
|
|
1383
|
+
this.logIfDebugEnabled("emit", e, t), Js(this, e, t);
|
|
1350
1384
|
const n = Ie(this, e) ?? /* @__PURE__ */ new Set(), i = te.get(this), o = [...n], s = Be(e) ? [] : [...i];
|
|
1351
1385
|
await Fn, await Promise.all([
|
|
1352
1386
|
...o.map(async (a) => {
|
|
@@ -1462,9 +1496,9 @@ var z = /* @__PURE__ */ ((r) => (r.INIT = "INIT", r.FORWARD = "FORWARD", r.TERMI
|
|
|
1462
1496
|
function fi(r) {
|
|
1463
1497
|
return [ImageBitmap, ReadableStream, WritableStream].some((t) => r instanceof t);
|
|
1464
1498
|
}
|
|
1465
|
-
let
|
|
1499
|
+
let Zs = 0;
|
|
1466
1500
|
function Nt(r, e, t, n, i) {
|
|
1467
|
-
const o =
|
|
1501
|
+
const o = Zs++;
|
|
1468
1502
|
return r.postMessage(
|
|
1469
1503
|
{
|
|
1470
1504
|
id: o,
|
|
@@ -1492,7 +1526,7 @@ const $t = zr("workerized", {});
|
|
|
1492
1526
|
function Nr() {
|
|
1493
1527
|
return typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope;
|
|
1494
1528
|
}
|
|
1495
|
-
async function
|
|
1529
|
+
async function ea() {
|
|
1496
1530
|
if (Nr())
|
|
1497
1531
|
ze({ type: z.GLOBALS_SYNC }, Le);
|
|
1498
1532
|
else {
|
|
@@ -1521,7 +1555,7 @@ function qe(r, e) {
|
|
|
1521
1555
|
for (const t in r)
|
|
1522
1556
|
Array.isArray(r[t]) ? (e[t] = [], qe(r[t], e[t])) : typeof r[t] == "object" ? (e[t] = {}, qe(r[t], e[t])) : e[t] = r[t];
|
|
1523
1557
|
}
|
|
1524
|
-
async function
|
|
1558
|
+
async function ta(r, e, t, n) {
|
|
1525
1559
|
const i = new e();
|
|
1526
1560
|
if (i.addEventListener(
|
|
1527
1561
|
"message",
|
|
@@ -1529,7 +1563,7 @@ async function ea(r, e, t, n) {
|
|
|
1529
1563
|
var a, c, u, f, m, p, b;
|
|
1530
1564
|
switch (s.type) {
|
|
1531
1565
|
case z.GLOBALS_SYNC:
|
|
1532
|
-
s.id ? ((c = t.get((a = s.id) != null ? a : -1)) == null || c(s.result), t.delete((u = s.id) != null ? u : -1)) : (qe((f = s.result) != null ? f : {}, Le), await
|
|
1566
|
+
s.id ? ((c = t.get((a = s.id) != null ? a : -1)) == null || c(s.result), t.delete((u = s.id) != null ? u : -1)) : (qe((f = s.result) != null ? f : {}, Le), await ea());
|
|
1533
1567
|
break;
|
|
1534
1568
|
case z.EVENT:
|
|
1535
1569
|
const { result: d } = s, g = d;
|
|
@@ -1571,7 +1605,7 @@ function Qe(r, e) {
|
|
|
1571
1605
|
if (n.has(t))
|
|
1572
1606
|
return n.get(t);
|
|
1573
1607
|
}
|
|
1574
|
-
function
|
|
1608
|
+
function ra(r, e, t) {
|
|
1575
1609
|
const n = K.get(r);
|
|
1576
1610
|
if (n.has(e))
|
|
1577
1611
|
for (const i of n.get(e))
|
|
@@ -1731,7 +1765,7 @@ class ve {
|
|
|
1731
1765
|
var n;
|
|
1732
1766
|
if (Re(e), De(e) && !Ht)
|
|
1733
1767
|
throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");
|
|
1734
|
-
this.logIfDebugEnabled("emit", e, t),
|
|
1768
|
+
this.logIfDebugEnabled("emit", e, t), ra(this, e, t);
|
|
1735
1769
|
const i = (n = ke(this, e)) != null ? n : /* @__PURE__ */ new Set(), o = re.get(this), s = [...i], a = De(e) ? [] : [...o];
|
|
1736
1770
|
await Bn, await Promise.all([
|
|
1737
1771
|
...s.map(async (c) => {
|
|
@@ -1832,15 +1866,15 @@ Object.defineProperty(ve, "listenerRemoved", {
|
|
|
1832
1866
|
enumerable: !0,
|
|
1833
1867
|
configurable: !1
|
|
1834
1868
|
});
|
|
1835
|
-
function
|
|
1869
|
+
function na(r) {
|
|
1836
1870
|
return r.onAny && r.emit;
|
|
1837
1871
|
}
|
|
1838
|
-
function
|
|
1872
|
+
function ia(r) {
|
|
1839
1873
|
return r.prototype.onAny && r.prototype.emit;
|
|
1840
1874
|
}
|
|
1841
|
-
let
|
|
1842
|
-
async function
|
|
1843
|
-
const i =
|
|
1875
|
+
let oa = 0;
|
|
1876
|
+
async function sa(r, e, t) {
|
|
1877
|
+
const i = ia(r) ? new ve() : {}, o = oa++;
|
|
1844
1878
|
return Object.getOwnPropertyNames(r.prototype).forEach(
|
|
1845
1879
|
(s) => {
|
|
1846
1880
|
i[s] = (...a) => Nt(e, z.FORWARD, s, a, t);
|
|
@@ -1860,10 +1894,10 @@ async function oa(r, e, t) {
|
|
|
1860
1894
|
resolvers: t
|
|
1861
1895
|
}, $t[o] = i, i;
|
|
1862
1896
|
}
|
|
1863
|
-
async function
|
|
1897
|
+
async function aa(r, e) {
|
|
1864
1898
|
const t = /* @__PURE__ */ new Map();
|
|
1865
1899
|
let n;
|
|
1866
|
-
const i = await
|
|
1900
|
+
const i = await ta(
|
|
1867
1901
|
r,
|
|
1868
1902
|
e,
|
|
1869
1903
|
t,
|
|
@@ -1871,13 +1905,13 @@ async function sa(r, e) {
|
|
|
1871
1905
|
n?.emit && n?.emit(o, s);
|
|
1872
1906
|
}
|
|
1873
1907
|
);
|
|
1874
|
-
return n = await
|
|
1908
|
+
return n = await sa(
|
|
1875
1909
|
r,
|
|
1876
1910
|
i,
|
|
1877
1911
|
t
|
|
1878
1912
|
), n;
|
|
1879
1913
|
}
|
|
1880
|
-
async function
|
|
1914
|
+
async function ca(r, e) {
|
|
1881
1915
|
const { functionName: t, args: n } = r;
|
|
1882
1916
|
if (!e.instance)
|
|
1883
1917
|
throw "instance not initialized";
|
|
@@ -1888,10 +1922,10 @@ async function aa(r, e) {
|
|
|
1888
1922
|
ze(r, await e.instance[t](...n ?? []));
|
|
1889
1923
|
}
|
|
1890
1924
|
const di = zr("registeredWorkers", {});
|
|
1891
|
-
function
|
|
1925
|
+
function ua(r, e) {
|
|
1892
1926
|
e.workerId = r, Nr() && (di[e.workerId] = e);
|
|
1893
1927
|
}
|
|
1894
|
-
function
|
|
1928
|
+
function la(r, e) {
|
|
1895
1929
|
if (!r.args)
|
|
1896
1930
|
throw "Missing className while initializing worker";
|
|
1897
1931
|
const [t, n] = r.args, i = di[t];
|
|
@@ -1899,7 +1933,7 @@ function ua(r, e) {
|
|
|
1899
1933
|
e.instance = new i(r.args.slice(1));
|
|
1900
1934
|
else
|
|
1901
1935
|
throw `unknown worker class ${t}`;
|
|
1902
|
-
qe(n, Le),
|
|
1936
|
+
qe(n, Le), na(e.instance) && e.instance.onAny((o, s) => {
|
|
1903
1937
|
ze(
|
|
1904
1938
|
{
|
|
1905
1939
|
type: z.EVENT
|
|
@@ -1908,39 +1942,39 @@ function ua(r, e) {
|
|
|
1908
1942
|
);
|
|
1909
1943
|
}), ze(r, typeof e.instance !== void 0);
|
|
1910
1944
|
}
|
|
1911
|
-
async function
|
|
1945
|
+
async function fa(r, e) {
|
|
1912
1946
|
const { args: t } = r;
|
|
1913
1947
|
if (!e.instance)
|
|
1914
1948
|
throw "instance not initialized";
|
|
1915
1949
|
let n;
|
|
1916
1950
|
e.instance.terminate && (n = await e.instance.terminate(...t ?? [])), ze(r, n);
|
|
1917
1951
|
}
|
|
1918
|
-
function
|
|
1952
|
+
function da(r) {
|
|
1919
1953
|
if (!r.args)
|
|
1920
1954
|
throw "Missing globals while syncing";
|
|
1921
1955
|
qe(r.args[0], Le), ze(r, {});
|
|
1922
1956
|
}
|
|
1923
|
-
function
|
|
1957
|
+
function ha() {
|
|
1924
1958
|
const r = {};
|
|
1925
1959
|
onmessage = async (e) => {
|
|
1926
1960
|
const t = e.data;
|
|
1927
1961
|
switch (t.type) {
|
|
1928
1962
|
case z.INIT:
|
|
1929
|
-
|
|
1963
|
+
la(t, r);
|
|
1930
1964
|
break;
|
|
1931
1965
|
case z.FORWARD:
|
|
1932
|
-
|
|
1966
|
+
ca(t, r);
|
|
1933
1967
|
break;
|
|
1934
1968
|
case z.TERMINATE:
|
|
1935
|
-
|
|
1969
|
+
fa(t, r);
|
|
1936
1970
|
break;
|
|
1937
1971
|
case z.GLOBALS_SYNC:
|
|
1938
|
-
|
|
1972
|
+
da(t);
|
|
1939
1973
|
break;
|
|
1940
1974
|
}
|
|
1941
1975
|
};
|
|
1942
1976
|
}
|
|
1943
|
-
Nr() &&
|
|
1977
|
+
Nr() && ha();
|
|
1944
1978
|
class zn {
|
|
1945
1979
|
static async createVideoReadable(e) {
|
|
1946
1980
|
return new Promise((t, n) => {
|
|
@@ -1975,30 +2009,30 @@ class zn {
|
|
|
1975
2009
|
return await createImageBitmap(n);
|
|
1976
2010
|
}
|
|
1977
2011
|
}
|
|
1978
|
-
var
|
|
1979
|
-
const
|
|
2012
|
+
var ma = Object.defineProperty, pa = (r, e, t) => e in r ? ma(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, ga = (r, e, t) => (pa(r, e + "", t), t);
|
|
2013
|
+
const ya = "hlg.tokbox.com/prod/logging/vcp_webrtc", ba = "https://", wa = 1e4;
|
|
1980
2014
|
let bt;
|
|
1981
|
-
const
|
|
1982
|
-
function
|
|
2015
|
+
const xa = new Uint8Array(16);
|
|
2016
|
+
function va() {
|
|
1983
2017
|
if (!bt && (bt = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !bt))
|
|
1984
2018
|
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
1985
|
-
return bt(
|
|
2019
|
+
return bt(xa);
|
|
1986
2020
|
}
|
|
1987
2021
|
const C = [];
|
|
1988
2022
|
for (let r = 0; r < 256; ++r)
|
|
1989
2023
|
C.push((r + 256).toString(16).slice(1));
|
|
1990
|
-
function
|
|
2024
|
+
function _a(r, e = 0) {
|
|
1991
2025
|
return (C[r[e + 0]] + C[r[e + 1]] + C[r[e + 2]] + C[r[e + 3]] + "-" + C[r[e + 4]] + C[r[e + 5]] + "-" + C[r[e + 6]] + C[r[e + 7]] + "-" + C[r[e + 8]] + C[r[e + 9]] + "-" + C[r[e + 10]] + C[r[e + 11]] + C[r[e + 12]] + C[r[e + 13]] + C[r[e + 14]] + C[r[e + 15]]).toLowerCase();
|
|
1992
2026
|
}
|
|
1993
|
-
const
|
|
1994
|
-
randomUUID:
|
|
2027
|
+
const Ea = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), Nn = {
|
|
2028
|
+
randomUUID: Ea
|
|
1995
2029
|
};
|
|
1996
|
-
function
|
|
2030
|
+
function Aa(r, e, t) {
|
|
1997
2031
|
if (Nn.randomUUID && !e && !r)
|
|
1998
2032
|
return Nn.randomUUID();
|
|
1999
2033
|
r = r || {};
|
|
2000
|
-
const n = r.random || (r.rng ||
|
|
2001
|
-
return n[6] = n[6] & 15 | 64, n[8] = n[8] & 63 | 128,
|
|
2034
|
+
const n = r.random || (r.rng || va)();
|
|
2035
|
+
return n[6] = n[6] & 15 | 64, n[8] = n[8] & 63 | 128, _a(n);
|
|
2002
2036
|
}
|
|
2003
2037
|
function $r(r, e) {
|
|
2004
2038
|
globalThis.vonage || (globalThis.vonage = {}), globalThis.vonage.workerizer || (globalThis.vonage.workerizer = {});
|
|
@@ -2013,9 +2047,9 @@ var we = /* @__PURE__ */ ((r) => (r.INIT = "INIT", r.FORWARD = "FORWARD", r.TERM
|
|
|
2013
2047
|
function hi(r) {
|
|
2014
2048
|
return [ImageBitmap, ReadableStream, WritableStream].some((e) => r instanceof e);
|
|
2015
2049
|
}
|
|
2016
|
-
let
|
|
2017
|
-
function
|
|
2018
|
-
const o =
|
|
2050
|
+
let Ta = 0;
|
|
2051
|
+
function Sa(r, e, t, n, i) {
|
|
2052
|
+
const o = Ta++;
|
|
2019
2053
|
return r.postMessage(
|
|
2020
2054
|
{
|
|
2021
2055
|
id: o,
|
|
@@ -2043,7 +2077,7 @@ const $n = $r("workerized", {});
|
|
|
2043
2077
|
function mi() {
|
|
2044
2078
|
return typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope;
|
|
2045
2079
|
}
|
|
2046
|
-
async function
|
|
2080
|
+
async function Ia() {
|
|
2047
2081
|
if (mi())
|
|
2048
2082
|
tt({ type: we.GLOBALS_SYNC }, oe);
|
|
2049
2083
|
else {
|
|
@@ -2051,7 +2085,7 @@ async function Sa() {
|
|
|
2051
2085
|
for (const e in $n) {
|
|
2052
2086
|
const { worker: t, resolvers: n } = $n[e].workerContext;
|
|
2053
2087
|
t && r.push(
|
|
2054
|
-
|
|
2088
|
+
Sa(
|
|
2055
2089
|
t,
|
|
2056
2090
|
we.GLOBALS_SYNC,
|
|
2057
2091
|
"",
|
|
@@ -2072,7 +2106,7 @@ function jt(r, e) {
|
|
|
2072
2106
|
for (const t in r)
|
|
2073
2107
|
Array.isArray(r[t]) ? (e[t] = [], jt(r[t], e[t])) : typeof r[t] == "object" ? (e[t] = {}, jt(r[t], e[t])) : e[t] = r[t];
|
|
2074
2108
|
}
|
|
2075
|
-
async function
|
|
2109
|
+
async function Ra(r, e) {
|
|
2076
2110
|
const { functionName: t, args: n } = r;
|
|
2077
2111
|
if (!e.instance)
|
|
2078
2112
|
throw "instance not initialized";
|
|
@@ -2082,75 +2116,75 @@ async function Ia(r, e) {
|
|
|
2082
2116
|
throw `undefined function [${t}] in class ${e.instance.constructor.workerId}`;
|
|
2083
2117
|
tt(r, await e.instance[t](...n ?? []));
|
|
2084
2118
|
}
|
|
2085
|
-
const
|
|
2086
|
-
function
|
|
2119
|
+
const ka = $r("registeredWorkers", {});
|
|
2120
|
+
function Pa(r, e) {
|
|
2087
2121
|
if (!r.args)
|
|
2088
2122
|
throw "Missing className while initializing worker";
|
|
2089
|
-
const [t, n] = r.args, i =
|
|
2123
|
+
const [t, n] = r.args, i = ka[t];
|
|
2090
2124
|
if (i)
|
|
2091
2125
|
e.instance = new i(r.args.slice(1));
|
|
2092
2126
|
else
|
|
2093
2127
|
throw `unknown worker class ${t}`;
|
|
2094
2128
|
jt(n, oe), tt(r, typeof e.instance !== void 0);
|
|
2095
2129
|
}
|
|
2096
|
-
async function
|
|
2130
|
+
async function Fa(r, e) {
|
|
2097
2131
|
const { args: t } = r;
|
|
2098
2132
|
if (!e.instance)
|
|
2099
2133
|
throw "instance not initialized";
|
|
2100
2134
|
let n;
|
|
2101
2135
|
e.instance.terminate && (n = await e.instance.terminate(...t ?? [])), tt(r, n);
|
|
2102
2136
|
}
|
|
2103
|
-
function
|
|
2137
|
+
function Ca(r) {
|
|
2104
2138
|
if (!r.args)
|
|
2105
2139
|
throw "Missing globals while syncing";
|
|
2106
2140
|
jt(r.args[0], oe), tt(r, {});
|
|
2107
2141
|
}
|
|
2108
|
-
function
|
|
2142
|
+
function Oa() {
|
|
2109
2143
|
const r = {};
|
|
2110
2144
|
onmessage = async (e) => {
|
|
2111
2145
|
const t = e.data;
|
|
2112
2146
|
switch (t.type) {
|
|
2113
2147
|
case we.INIT:
|
|
2114
|
-
|
|
2148
|
+
Pa(t, r);
|
|
2115
2149
|
break;
|
|
2116
2150
|
case we.FORWARD:
|
|
2117
|
-
|
|
2151
|
+
Ra(t, r);
|
|
2118
2152
|
break;
|
|
2119
2153
|
case we.TERMINATE:
|
|
2120
|
-
|
|
2154
|
+
Fa(t, r);
|
|
2121
2155
|
break;
|
|
2122
2156
|
case we.GLOBALS_SYNC:
|
|
2123
|
-
|
|
2157
|
+
Ca(t);
|
|
2124
2158
|
break;
|
|
2125
2159
|
}
|
|
2126
2160
|
};
|
|
2127
2161
|
}
|
|
2128
|
-
mi() &&
|
|
2129
|
-
function
|
|
2162
|
+
mi() && Oa();
|
|
2163
|
+
function Ma(r, e) {
|
|
2130
2164
|
return oe[r] || (oe[r] = e), [
|
|
2131
2165
|
() => oe[r],
|
|
2132
2166
|
async (t) => {
|
|
2133
|
-
oe[r] = t, await
|
|
2167
|
+
oe[r] = t, await Ia();
|
|
2134
2168
|
}
|
|
2135
2169
|
];
|
|
2136
2170
|
}
|
|
2137
|
-
function
|
|
2138
|
-
return
|
|
2171
|
+
function Ba(r, e) {
|
|
2172
|
+
return Ma(r, e);
|
|
2139
2173
|
}
|
|
2140
|
-
const [
|
|
2174
|
+
const [Da] = Ba("metadata");
|
|
2141
2175
|
function br() {
|
|
2142
|
-
return
|
|
2176
|
+
return Da();
|
|
2143
2177
|
}
|
|
2144
|
-
class
|
|
2178
|
+
class Ua {
|
|
2145
2179
|
constructor(e) {
|
|
2146
|
-
|
|
2180
|
+
ga(this, "uuid", Aa()), this.config = e;
|
|
2147
2181
|
}
|
|
2148
2182
|
async send(e) {
|
|
2149
2183
|
var t, n, i;
|
|
2150
2184
|
const { appId: o, sourceType: s } = (t = br()) != null ? t : {};
|
|
2151
2185
|
if (!o || !s)
|
|
2152
2186
|
return "metadata missing";
|
|
2153
|
-
const a = new AbortController(), c = setTimeout(() => a.abort(),
|
|
2187
|
+
const a = new AbortController(), c = setTimeout(() => a.abort(), wa);
|
|
2154
2188
|
return await ((i = (n = this.config) == null ? void 0 : n.fetch) != null ? i : fetch)(this.getUrl(), {
|
|
2155
2189
|
method: "POST",
|
|
2156
2190
|
headers: this.getHeaders(),
|
|
@@ -2160,8 +2194,8 @@ class Da {
|
|
|
2160
2194
|
}
|
|
2161
2195
|
getUrl() {
|
|
2162
2196
|
var e;
|
|
2163
|
-
let t = (e = br().proxyUrl) != null ? e :
|
|
2164
|
-
return t += (t.at(-1) === "/" ? "" : "/") +
|
|
2197
|
+
let t = (e = br().proxyUrl) != null ? e : ba;
|
|
2198
|
+
return t += (t.at(-1) === "/" ? "" : "/") + ya, t;
|
|
2165
2199
|
}
|
|
2166
2200
|
getHeaders() {
|
|
2167
2201
|
return {
|
|
@@ -2180,7 +2214,7 @@ class Da {
|
|
|
2180
2214
|
};
|
|
2181
2215
|
}
|
|
2182
2216
|
}
|
|
2183
|
-
const
|
|
2217
|
+
const La = "7.0.1";
|
|
2184
2218
|
class Wr {
|
|
2185
2219
|
constructor() {
|
|
2186
2220
|
const e = new OffscreenCanvas(0, 0), t = e.getContext("2d", { willReadFrequently: !0 });
|
|
@@ -2239,7 +2273,7 @@ class Wr {
|
|
|
2239
2273
|
destroy() {
|
|
2240
2274
|
}
|
|
2241
2275
|
}
|
|
2242
|
-
class
|
|
2276
|
+
class za extends Wr {
|
|
2243
2277
|
constructor(e) {
|
|
2244
2278
|
super(), this.radius = e;
|
|
2245
2279
|
}
|
|
@@ -2249,7 +2283,7 @@ class La extends Wr {
|
|
|
2249
2283
|
return this.renderSilhouette(e, n), this.context.save(), this.context.filter = `blur(${this.radius}px)`, this.context.globalCompositeOperation = "destination-over", this.context.drawImage(e, 0, 0, e.width, e.height), this.context.restore(), super.render(e, t);
|
|
2250
2284
|
}
|
|
2251
2285
|
}
|
|
2252
|
-
class
|
|
2286
|
+
class Na extends Wr {
|
|
2253
2287
|
constructor(e) {
|
|
2254
2288
|
super(), this.radius = e;
|
|
2255
2289
|
}
|
|
@@ -2259,7 +2293,7 @@ class za extends Wr {
|
|
|
2259
2293
|
return this.renderSilhouette(e, n, `blur(${this.radius}px)`), this.context.save(), this.context.filter = "none", this.context.globalCompositeOperation = "destination-over", this.context.drawImage(e, 0, 0, e.width, e.height), this.context.restore(), super.render(e, t);
|
|
2260
2294
|
}
|
|
2261
2295
|
}
|
|
2262
|
-
class
|
|
2296
|
+
class $a extends Wr {
|
|
2263
2297
|
setBackgroundImage(e) {
|
|
2264
2298
|
this.backgroundImage = e;
|
|
2265
2299
|
}
|
|
@@ -2279,10 +2313,10 @@ class Na extends Wr {
|
|
|
2279
2313
|
), this.context.restore()), super.render(e, t);
|
|
2280
2314
|
}
|
|
2281
2315
|
}
|
|
2282
|
-
const Gr = 5120, Xe = 5121, Vr = 5122, Hr = 5123, jr = 5124, Yr = 5125, Qr = 5126,
|
|
2316
|
+
const Gr = 5120, Xe = 5121, Vr = 5122, Hr = 5123, jr = 5124, Yr = 5125, Qr = 5126, Wa = 32819, Ga = 32820, Va = 33635, Ha = 5131, ja = 33640, Ya = 35899, Qa = 35902, qa = 36269, Xa = 34042, pi = {};
|
|
2283
2317
|
{
|
|
2284
2318
|
const r = pi;
|
|
2285
|
-
r[Gr] = Int8Array, r[Xe] = Uint8Array, r[Vr] = Int16Array, r[Hr] = Uint16Array, r[jr] = Int32Array, r[Yr] = Uint32Array, r[Qr] = Float32Array, r[
|
|
2319
|
+
r[Gr] = Int8Array, r[Xe] = Uint8Array, r[Vr] = Int16Array, r[Hr] = Uint16Array, r[jr] = Int32Array, r[Yr] = Uint32Array, r[Qr] = Float32Array, r[Wa] = Uint16Array, r[Ga] = Uint16Array, r[Va] = Uint16Array, r[Ha] = Uint16Array, r[ja] = Uint32Array, r[Ya] = Uint32Array, r[Qa] = Uint32Array, r[qa] = Uint32Array, r[Xa] = Uint32Array;
|
|
2286
2320
|
}
|
|
2287
2321
|
function qr(r) {
|
|
2288
2322
|
if (r instanceof Int8Array)
|
|
@@ -2345,49 +2379,49 @@ function Zt(r, e) {
|
|
|
2345
2379
|
}
|
|
2346
2380
|
return n;
|
|
2347
2381
|
}
|
|
2348
|
-
function
|
|
2382
|
+
function Ka(r, e) {
|
|
2349
2383
|
return typeof WebGLBuffer < "u" && Zt(e, "WebGLBuffer");
|
|
2350
2384
|
}
|
|
2351
|
-
function
|
|
2385
|
+
function Ja(r, e) {
|
|
2352
2386
|
return typeof WebGLRenderbuffer < "u" && Zt(e, "WebGLRenderbuffer");
|
|
2353
2387
|
}
|
|
2354
2388
|
function Xr(r, e) {
|
|
2355
2389
|
return typeof WebGLTexture < "u" && Zt(e, "WebGLTexture");
|
|
2356
2390
|
}
|
|
2357
|
-
function
|
|
2391
|
+
function Za(r, e) {
|
|
2358
2392
|
return typeof WebGLSampler < "u" && Zt(e, "WebGLSampler");
|
|
2359
2393
|
}
|
|
2360
|
-
const wi = 35044, xe = 34962,
|
|
2394
|
+
const wi = 35044, xe = 34962, ec = 34963, tc = 34660, rc = 5120, nc = 5121, ic = 5122, oc = 5123, sc = 5124, ac = 5125, xi = 5126, vi = {
|
|
2361
2395
|
attribPrefix: ""
|
|
2362
2396
|
};
|
|
2363
|
-
function
|
|
2397
|
+
function cc(r, e, t, n, i) {
|
|
2364
2398
|
r.bindBuffer(e, t), r.bufferData(e, n, i || wi);
|
|
2365
2399
|
}
|
|
2366
2400
|
function _i(r, e, t, n) {
|
|
2367
|
-
if (
|
|
2401
|
+
if (Ka(r, e))
|
|
2368
2402
|
return e;
|
|
2369
2403
|
t = t || xe;
|
|
2370
2404
|
const i = r.createBuffer();
|
|
2371
|
-
return
|
|
2405
|
+
return cc(r, t, i, e, n), i;
|
|
2372
2406
|
}
|
|
2373
2407
|
function Ei(r) {
|
|
2374
2408
|
return r === "indices";
|
|
2375
2409
|
}
|
|
2376
|
-
function
|
|
2410
|
+
function uc(r) {
|
|
2377
2411
|
return r === Int8Array || r === Uint8Array;
|
|
2378
2412
|
}
|
|
2379
|
-
function
|
|
2413
|
+
function lc(r) {
|
|
2380
2414
|
return r.length ? r : r.data;
|
|
2381
2415
|
}
|
|
2382
|
-
const
|
|
2383
|
-
function
|
|
2416
|
+
const fc = /coord|texture/i, dc = /color|colour/i;
|
|
2417
|
+
function hc(r, e) {
|
|
2384
2418
|
let t;
|
|
2385
|
-
if (
|
|
2419
|
+
if (fc.test(r) ? t = 2 : dc.test(r) ? t = 4 : t = 3, e % t > 0)
|
|
2386
2420
|
throw new Error(`Can not guess numComponents for attribute '${r}'. Tried ${t} but ${e} values is not evenly divisible by ${t}. You should specify it.`);
|
|
2387
2421
|
return t;
|
|
2388
2422
|
}
|
|
2389
|
-
function
|
|
2390
|
-
return r.numComponents || r.size ||
|
|
2423
|
+
function mc(r, e, t) {
|
|
2424
|
+
return r.numComponents || r.size || hc(e, t || lc(r).length);
|
|
2391
2425
|
}
|
|
2392
2426
|
function Ai(r, e) {
|
|
2393
2427
|
if (Yt(r))
|
|
@@ -2400,22 +2434,22 @@ function Ai(r, e) {
|
|
|
2400
2434
|
let t = r.type ? Kr(r.type) : void 0;
|
|
2401
2435
|
return t || (Ei(e) ? t = Uint16Array : t = Float32Array), new t(r.data);
|
|
2402
2436
|
}
|
|
2403
|
-
function
|
|
2437
|
+
function pc(r) {
|
|
2404
2438
|
return typeof r == "number" ? r : r ? gi(r) : xi;
|
|
2405
2439
|
}
|
|
2406
2440
|
function Kr(r) {
|
|
2407
2441
|
return typeof r == "number" ? yi(r) : r || Float32Array;
|
|
2408
2442
|
}
|
|
2409
|
-
function
|
|
2443
|
+
function gc(r, e) {
|
|
2410
2444
|
return {
|
|
2411
2445
|
buffer: e.buffer,
|
|
2412
2446
|
numValues: 24,
|
|
2413
2447
|
// safely divided by 2, 3, 4
|
|
2414
|
-
type:
|
|
2448
|
+
type: pc(e.type),
|
|
2415
2449
|
arrayType: Kr(e.type)
|
|
2416
2450
|
};
|
|
2417
2451
|
}
|
|
2418
|
-
function
|
|
2452
|
+
function yc(r, e) {
|
|
2419
2453
|
const t = e.data || e, n = Kr(e.type), i = t * n.BYTES_PER_ELEMENT, o = r.createBuffer();
|
|
2420
2454
|
return r.bindBuffer(xe, o), r.bufferData(xe, i, e.drawType || wi), {
|
|
2421
2455
|
buffer: o,
|
|
@@ -2424,7 +2458,7 @@ function gc(r, e) {
|
|
|
2424
2458
|
arrayType: n
|
|
2425
2459
|
};
|
|
2426
2460
|
}
|
|
2427
|
-
function
|
|
2461
|
+
function bc(r, e, t) {
|
|
2428
2462
|
const n = Ai(e, t);
|
|
2429
2463
|
return {
|
|
2430
2464
|
arrayType: n.constructor,
|
|
@@ -2433,7 +2467,7 @@ function yc(r, e, t) {
|
|
|
2433
2467
|
numValues: 0
|
|
2434
2468
|
};
|
|
2435
2469
|
}
|
|
2436
|
-
function
|
|
2470
|
+
function wc(r, e) {
|
|
2437
2471
|
const t = {};
|
|
2438
2472
|
return Object.keys(e).forEach(function(n) {
|
|
2439
2473
|
if (!Ei(n)) {
|
|
@@ -2446,8 +2480,8 @@ function bc(r, e) {
|
|
|
2446
2480
|
};
|
|
2447
2481
|
} else {
|
|
2448
2482
|
let s;
|
|
2449
|
-
i.buffer && i.buffer instanceof WebGLBuffer ? s =
|
|
2450
|
-
const { buffer: a, type: c, numValues: u, arrayType: f } = s(r, i, n), m = i.normalize !== void 0 ? i.normalize :
|
|
2483
|
+
i.buffer && i.buffer instanceof WebGLBuffer ? s = gc : typeof i == "number" || typeof i.data == "number" ? s = yc : s = bc;
|
|
2484
|
+
const { buffer: a, type: c, numValues: u, arrayType: f } = s(r, i, n), m = i.normalize !== void 0 ? i.normalize : uc(f), p = mc(i, n, u);
|
|
2451
2485
|
t[o] = {
|
|
2452
2486
|
buffer: a,
|
|
2453
2487
|
numComponents: p,
|
|
@@ -2462,11 +2496,11 @@ function bc(r, e) {
|
|
|
2462
2496
|
}
|
|
2463
2497
|
}), r.bindBuffer(xe, null), t;
|
|
2464
2498
|
}
|
|
2465
|
-
function
|
|
2466
|
-
return e ===
|
|
2499
|
+
function xc(r, e) {
|
|
2500
|
+
return e === rc || e === nc ? 1 : e === ic || e === oc ? 2 : e === sc || e === ac || e === xi ? 4 : 0;
|
|
2467
2501
|
}
|
|
2468
2502
|
const wr = ["position", "positions", "a_position"];
|
|
2469
|
-
function
|
|
2503
|
+
function vc(r, e) {
|
|
2470
2504
|
let t, n;
|
|
2471
2505
|
for (n = 0; n < wr.length && (t = wr[n], !(t in e || (t = vi.attribPrefix + t, t in e))); ++n)
|
|
2472
2506
|
;
|
|
@@ -2475,21 +2509,21 @@ function xc(r, e) {
|
|
|
2475
2509
|
if (!i.buffer)
|
|
2476
2510
|
return 1;
|
|
2477
2511
|
r.bindBuffer(xe, i.buffer);
|
|
2478
|
-
const o = r.getBufferParameter(xe,
|
|
2512
|
+
const o = r.getBufferParameter(xe, tc);
|
|
2479
2513
|
r.bindBuffer(xe, null);
|
|
2480
|
-
const s =
|
|
2514
|
+
const s = xc(r, i.type), a = o / s, c = i.numComponents || i.size, u = a / c;
|
|
2481
2515
|
if (u % 1 !== 0)
|
|
2482
2516
|
throw new Error(`numComponents ${c} not correct for length ${length}`);
|
|
2483
2517
|
return u;
|
|
2484
2518
|
}
|
|
2485
|
-
function
|
|
2486
|
-
const n =
|
|
2519
|
+
function _c(r, e, t) {
|
|
2520
|
+
const n = wc(r, e), i = Object.assign({}, t || {});
|
|
2487
2521
|
i.attribs = Object.assign({}, t ? t.attribs : {}, n);
|
|
2488
2522
|
const o = e.indices;
|
|
2489
2523
|
if (o) {
|
|
2490
2524
|
const s = Ai(o, "indices");
|
|
2491
|
-
i.indices = _i(r, s,
|
|
2492
|
-
} else i.numElements || (i.numElements =
|
|
2525
|
+
i.indices = _i(r, s, ec), i.numElements = s.length, i.elementType = qr(s);
|
|
2526
|
+
} else i.numElements || (i.numElements = vc(r, i.attribs));
|
|
2493
2527
|
return i;
|
|
2494
2528
|
}
|
|
2495
2529
|
function rt(r) {
|
|
@@ -2520,12 +2554,12 @@ const Ti = /* @__PURE__ */ (function() {
|
|
|
2520
2554
|
return function() {
|
|
2521
2555
|
return r = r || (typeof document < "u" && document.createElement ? document.createElement("canvas").getContext("2d") : null), r;
|
|
2522
2556
|
};
|
|
2523
|
-
})(), Gn = 6406, j = 6407, T = 6408, Vn = 6409, Hn = 6410, Ve = 6402, jn = 34041, Qt = 33071,
|
|
2557
|
+
})(), Gn = 6406, j = 6407, T = 6408, Vn = 6409, Hn = 6410, Ve = 6402, jn = 34041, Qt = 33071, Ec = 9728, Ac = 9729, ce = 3553, se = 34067, _e = 32879, Ee = 35866, Jr = 34069, Tc = 34070, Sc = 34071, Ic = 34072, Rc = 34073, kc = 34074, Sr = 10241, Ir = 10240, qt = 10242, Xt = 10243, Yn = 32882, Pc = 33082, Fc = 33083, Cc = 33084, Oc = 33085, Mc = 34892, Bc = 34893, Zr = 3317, Ii = 3314, Ri = 32878, ki = 3316, Pi = 3315, Fi = 32877, Dc = 37443, Uc = 37441, Lc = 37440, zc = 33321, Nc = 36756, $c = 33325, Wc = 33326, Gc = 33330, Vc = 33329, Hc = 33338, jc = 33337, Yc = 33340, Qc = 33339, qc = 33323, Xc = 36757, Kc = 33327, Jc = 33328, Zc = 33336, eu = 33335, tu = 33332, ru = 33331, nu = 33334, iu = 33333, ou = 32849, su = 35905, au = 36194, cu = 36758, uu = 35898, lu = 35901, fu = 34843, du = 34837, hu = 36221, mu = 36239, pu = 36215, gu = 36233, yu = 36209, bu = 36227, wu = 32856, xu = 35907, vu = 36759, _u = 32855, Eu = 32854, Au = 32857, Tu = 34842, Su = 34836, Iu = 36220, Ru = 36238, ku = 36975, Pu = 36214, Fu = 36232, Cu = 36226, Ou = 36208, Mu = 33189, Bu = 33190, Du = 36012, Uu = 36013, Lu = 35056, ne = 5120, A = 5121, wt = 5122, Pe = 5123, xt = 5124, de = 5125, M = 5126, Qn = 32819, qn = 32820, Xn = 33635, G = 5131, He = 36193, xr = 33640, zu = 35899, Nu = 35902, $u = 36269, Wu = 34042, vt = 33319, Fe = 33320, _t = 6403, Ce = 36244, Oe = 36248, he = 36249;
|
|
2524
2558
|
let vr;
|
|
2525
2559
|
function er(r) {
|
|
2526
2560
|
if (!vr) {
|
|
2527
2561
|
const e = {};
|
|
2528
|
-
e[Gn] = { textureFormat: Gn, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [1, 2, 2, 4], type: [A, G, He, M] }, e[Vn] = { textureFormat: Vn, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [1, 2, 2, 4], type: [A, G, He, M] }, e[Hn] = { textureFormat: Hn, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [2, 4, 4, 8], type: [A, G, He, M] }, e[j] = { textureFormat: j, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [3, 6, 6, 12, 2], type: [A, G, He, M, Xn] }, e[T] = { textureFormat: T, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [4, 8, 8, 16, 2, 2], type: [A, G, He, M, Qn, qn] }, e[Ve] = { textureFormat: Ve, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [2, 4], type: [de, Pe] }, e[
|
|
2562
|
+
e[Gn] = { textureFormat: Gn, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [1, 2, 2, 4], type: [A, G, He, M] }, e[Vn] = { textureFormat: Vn, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [1, 2, 2, 4], type: [A, G, He, M] }, e[Hn] = { textureFormat: Hn, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [2, 4, 4, 8], type: [A, G, He, M] }, e[j] = { textureFormat: j, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [3, 6, 6, 12, 2], type: [A, G, He, M, Xn] }, e[T] = { textureFormat: T, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [4, 8, 8, 16, 2, 2], type: [A, G, He, M, Qn, qn] }, e[Ve] = { textureFormat: Ve, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [2, 4], type: [de, Pe] }, e[zc] = { textureFormat: _t, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [1], type: [A] }, e[Nc] = { textureFormat: _t, colorRenderable: !1, textureFilterable: !0, bytesPerElement: [1], type: [ne] }, e[$c] = { textureFormat: _t, colorRenderable: !1, textureFilterable: !0, bytesPerElement: [4, 2], type: [M, G] }, e[Wc] = { textureFormat: _t, colorRenderable: !1, textureFilterable: !1, bytesPerElement: [4], type: [M] }, e[Gc] = { textureFormat: Ce, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [1], type: [A] }, e[Vc] = { textureFormat: Ce, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [1], type: [ne] }, e[tu] = { textureFormat: Ce, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [2], type: [Pe] }, e[ru] = { textureFormat: Ce, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [2], type: [wt] }, e[nu] = { textureFormat: Ce, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [4], type: [de] }, e[iu] = { textureFormat: Ce, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [4], type: [xt] }, e[qc] = { textureFormat: vt, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [2], type: [A] }, e[Xc] = { textureFormat: vt, colorRenderable: !1, textureFilterable: !0, bytesPerElement: [2], type: [ne] }, e[Kc] = { textureFormat: vt, colorRenderable: !1, textureFilterable: !0, bytesPerElement: [8, 4], type: [M, G] }, e[Jc] = { textureFormat: vt, colorRenderable: !1, textureFilterable: !1, bytesPerElement: [8], type: [M] }, e[Zc] = { textureFormat: Fe, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [2], type: [A] }, e[eu] = { textureFormat: Fe, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [2], type: [ne] }, e[Hc] = { textureFormat: Fe, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [4], type: [Pe] }, e[jc] = { textureFormat: Fe, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [4], type: [wt] }, e[Yc] = { textureFormat: Fe, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [8], type: [de] }, e[Qc] = { textureFormat: Fe, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [8], type: [xt] }, e[ou] = { textureFormat: j, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [3], type: [A] }, e[su] = { textureFormat: j, colorRenderable: !1, textureFilterable: !0, bytesPerElement: [3], type: [A] }, e[au] = { textureFormat: j, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [3, 2], type: [A, Xn] }, e[cu] = { textureFormat: j, colorRenderable: !1, textureFilterable: !0, bytesPerElement: [3], type: [ne] }, e[uu] = { textureFormat: j, colorRenderable: !1, textureFilterable: !0, bytesPerElement: [12, 6, 4], type: [M, G, zu] }, e[lu] = { textureFormat: j, colorRenderable: !1, textureFilterable: !0, bytesPerElement: [12, 6, 4], type: [M, G, Nu] }, e[fu] = { textureFormat: j, colorRenderable: !1, textureFilterable: !0, bytesPerElement: [12, 6], type: [M, G] }, e[du] = { textureFormat: j, colorRenderable: !1, textureFilterable: !1, bytesPerElement: [12], type: [M] }, e[hu] = { textureFormat: Oe, colorRenderable: !1, textureFilterable: !1, bytesPerElement: [3], type: [A] }, e[mu] = { textureFormat: Oe, colorRenderable: !1, textureFilterable: !1, bytesPerElement: [3], type: [ne] }, e[pu] = { textureFormat: Oe, colorRenderable: !1, textureFilterable: !1, bytesPerElement: [6], type: [Pe] }, e[gu] = { textureFormat: Oe, colorRenderable: !1, textureFilterable: !1, bytesPerElement: [6], type: [wt] }, e[yu] = { textureFormat: Oe, colorRenderable: !1, textureFilterable: !1, bytesPerElement: [12], type: [de] }, e[bu] = { textureFormat: Oe, colorRenderable: !1, textureFilterable: !1, bytesPerElement: [12], type: [xt] }, e[wu] = { textureFormat: T, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [4], type: [A] }, e[xu] = { textureFormat: T, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [4], type: [A] }, e[vu] = { textureFormat: T, colorRenderable: !1, textureFilterable: !0, bytesPerElement: [4], type: [ne] }, e[_u] = { textureFormat: T, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [4, 2, 4], type: [A, qn, xr] }, e[Eu] = { textureFormat: T, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [4, 2], type: [A, Qn] }, e[Au] = { textureFormat: T, colorRenderable: !0, textureFilterable: !0, bytesPerElement: [4], type: [xr] }, e[Tu] = { textureFormat: T, colorRenderable: !1, textureFilterable: !0, bytesPerElement: [16, 8], type: [M, G] }, e[Su] = { textureFormat: T, colorRenderable: !1, textureFilterable: !1, bytesPerElement: [16], type: [M] }, e[Iu] = { textureFormat: he, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [4], type: [A] }, e[Ru] = { textureFormat: he, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [4], type: [ne] }, e[ku] = { textureFormat: he, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [4], type: [xr] }, e[Pu] = { textureFormat: he, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [8], type: [Pe] }, e[Fu] = { textureFormat: he, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [8], type: [wt] }, e[Cu] = { textureFormat: he, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [16], type: [xt] }, e[Ou] = { textureFormat: he, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [16], type: [de] }, e[Mu] = { textureFormat: Ve, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [2, 4], type: [Pe, de] }, e[Bu] = { textureFormat: Ve, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [4], type: [de] }, e[Du] = { textureFormat: Ve, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [4], type: [M] }, e[Lu] = { textureFormat: jn, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [4], type: [Wu] }, e[Uu] = { textureFormat: jn, colorRenderable: !0, textureFilterable: !1, bytesPerElement: [4], type: [$u] }, Object.keys(e).forEach(function(t) {
|
|
2529
2563
|
const n = e[t];
|
|
2530
2564
|
n.bytesPerElementMap = {}, n.bytesPerElement.forEach(function(i, o) {
|
|
2531
2565
|
const s = n.type[o];
|
|
@@ -2535,7 +2569,7 @@ function er(r) {
|
|
|
2535
2569
|
}
|
|
2536
2570
|
return vr[r];
|
|
2537
2571
|
}
|
|
2538
|
-
function
|
|
2572
|
+
function Gu(r, e) {
|
|
2539
2573
|
const t = er(r);
|
|
2540
2574
|
if (!t)
|
|
2541
2575
|
throw "unknown internal format";
|
|
@@ -2556,7 +2590,7 @@ function nt(r) {
|
|
|
2556
2590
|
function Kn(r) {
|
|
2557
2591
|
return (r & r - 1) === 0;
|
|
2558
2592
|
}
|
|
2559
|
-
function
|
|
2593
|
+
function Vu(r, e, t, n) {
|
|
2560
2594
|
if (!rt(r))
|
|
2561
2595
|
return Kn(e) && Kn(t);
|
|
2562
2596
|
const i = er(n);
|
|
@@ -2564,13 +2598,13 @@ function Gu(r, e, t, n) {
|
|
|
2564
2598
|
throw "unknown internal format";
|
|
2565
2599
|
return i.colorRenderable && i.textureFilterable;
|
|
2566
2600
|
}
|
|
2567
|
-
function
|
|
2601
|
+
function Hu(r) {
|
|
2568
2602
|
const e = er(r);
|
|
2569
2603
|
if (!e)
|
|
2570
2604
|
throw "unknown internal format";
|
|
2571
2605
|
return e.textureFilterable;
|
|
2572
2606
|
}
|
|
2573
|
-
function
|
|
2607
|
+
function ju(r, e, t) {
|
|
2574
2608
|
return Ke(e) ? qr(e) : t || A;
|
|
2575
2609
|
}
|
|
2576
2610
|
function Et(r, e, t, n, i) {
|
|
@@ -2590,28 +2624,28 @@ function Et(r, e, t, n, i) {
|
|
|
2590
2624
|
};
|
|
2591
2625
|
}
|
|
2592
2626
|
function Ne(r, e) {
|
|
2593
|
-
e.colorspaceConversion !== void 0 && r.pixelStorei(
|
|
2627
|
+
e.colorspaceConversion !== void 0 && r.pixelStorei(Dc, e.colorspaceConversion), e.premultiplyAlpha !== void 0 && r.pixelStorei(Uc, e.premultiplyAlpha), e.flipY !== void 0 && r.pixelStorei(Lc, e.flipY);
|
|
2594
2628
|
}
|
|
2595
2629
|
function Ci(r) {
|
|
2596
2630
|
r.pixelStorei(Zr, 4), rt(r) && (r.pixelStorei(Ii, 0), r.pixelStorei(Ri, 0), r.pixelStorei(ki, 0), r.pixelStorei(Pi, 0), r.pixelStorei(Fi, 0));
|
|
2597
2631
|
}
|
|
2598
|
-
function
|
|
2599
|
-
n.minMag && (t.call(r, e, Sr, n.minMag), t.call(r, e, Ir, n.minMag)), n.min && t.call(r, e, Sr, n.min), n.mag && t.call(r, e, Ir, n.mag), n.wrap && (t.call(r, e, qt, n.wrap), t.call(r, e, Xt, n.wrap), (e === _e ||
|
|
2632
|
+
function Yu(r, e, t, n) {
|
|
2633
|
+
n.minMag && (t.call(r, e, Sr, n.minMag), t.call(r, e, Ir, n.minMag)), n.min && t.call(r, e, Sr, n.min), n.mag && t.call(r, e, Ir, n.mag), n.wrap && (t.call(r, e, qt, n.wrap), t.call(r, e, Xt, n.wrap), (e === _e || Za(r, e)) && t.call(r, e, Yn, n.wrap)), n.wrapR && t.call(r, e, Yn, n.wrapR), n.wrapS && t.call(r, e, qt, n.wrapS), n.wrapT && t.call(r, e, Xt, n.wrapT), n.minLod !== void 0 && t.call(r, e, Pc, n.minLod), n.maxLod !== void 0 && t.call(r, e, Fc, n.maxLod), n.baseLevel !== void 0 && t.call(r, e, Cc, n.baseLevel), n.maxLevel !== void 0 && t.call(r, e, Oc, n.maxLevel), n.compareFunc !== void 0 && t.call(r, e, Bc, n.compareFunc), n.compareMode !== void 0 && t.call(r, e, Mc, n.compareMode);
|
|
2600
2634
|
}
|
|
2601
2635
|
function Oi(r, e, t) {
|
|
2602
2636
|
const n = t.target || ce;
|
|
2603
|
-
r.bindTexture(n, e),
|
|
2637
|
+
r.bindTexture(n, e), Yu(r, n, r.texParameteri, t);
|
|
2604
2638
|
}
|
|
2605
|
-
function
|
|
2639
|
+
function Qu(r) {
|
|
2606
2640
|
return r = r || ae.textureColor, Ke(r) ? r : new Uint8Array([r[0] * 255, r[1] * 255, r[2] * 255, r[3] * 255]);
|
|
2607
2641
|
}
|
|
2608
2642
|
function Rr(r, e, t, n, i, o) {
|
|
2609
2643
|
t = t || ae.textureOptions, o = o || T;
|
|
2610
2644
|
const s = t.target || ce;
|
|
2611
|
-
if (n = n || t.width, i = i || t.height, r.bindTexture(s, e),
|
|
2645
|
+
if (n = n || t.width, i = i || t.height, r.bindTexture(s, e), Vu(r, n, i, o))
|
|
2612
2646
|
r.generateMipmap(s);
|
|
2613
2647
|
else {
|
|
2614
|
-
const a =
|
|
2648
|
+
const a = Hu(o) ? Ac : Ec;
|
|
2615
2649
|
r.texParameteri(s, Sr, a), r.texParameteri(s, Ir, a), r.texParameteri(s, qt, Qt), r.texParameteri(s, Xt, Qt);
|
|
2616
2650
|
}
|
|
2617
2651
|
}
|
|
@@ -2621,11 +2655,11 @@ function Je(r) {
|
|
|
2621
2655
|
function kr(r, e) {
|
|
2622
2656
|
return e = e || {}, e.cubeFaceOrder || [
|
|
2623
2657
|
Jr,
|
|
2624
|
-
Ac,
|
|
2625
2658
|
Tc,
|
|
2626
2659
|
Sc,
|
|
2627
2660
|
Ic,
|
|
2628
|
-
Rc
|
|
2661
|
+
Rc,
|
|
2662
|
+
kc
|
|
2629
2663
|
];
|
|
2630
2664
|
}
|
|
2631
2665
|
function Pr(r, e) {
|
|
@@ -2684,7 +2718,7 @@ function Mi(r, e, t, n) {
|
|
|
2684
2718
|
}
|
|
2685
2719
|
function it() {
|
|
2686
2720
|
}
|
|
2687
|
-
function
|
|
2721
|
+
function qu(r) {
|
|
2688
2722
|
if (typeof document < "u") {
|
|
2689
2723
|
const e = document.createElement("a");
|
|
2690
2724
|
return e.href = r, e.hostname === location.hostname && e.port === location.port && e.protocol === location.protocol;
|
|
@@ -2693,13 +2727,13 @@ function Qu(r) {
|
|
|
2693
2727
|
return new URL(r, location.href).origin === e;
|
|
2694
2728
|
}
|
|
2695
2729
|
}
|
|
2696
|
-
function
|
|
2697
|
-
return e === void 0 && !
|
|
2730
|
+
function Xu(r, e) {
|
|
2731
|
+
return e === void 0 && !qu(r) ? "anonymous" : e;
|
|
2698
2732
|
}
|
|
2699
|
-
function
|
|
2733
|
+
function Ku(r, e, t) {
|
|
2700
2734
|
t = t || it;
|
|
2701
2735
|
let n;
|
|
2702
|
-
if (e = e !== void 0 ? e : ae.crossOrigin, e =
|
|
2736
|
+
if (e = e !== void 0 ? e : ae.crossOrigin, e = Xu(r, e), typeof Image < "u") {
|
|
2703
2737
|
n = new Image(), e !== void 0 && (n.crossOrigin = e);
|
|
2704
2738
|
const i = function() {
|
|
2705
2739
|
n.removeEventListener("error", o), n.removeEventListener("load", s), n = null;
|
|
@@ -2738,25 +2772,25 @@ function Bi(r) {
|
|
|
2738
2772
|
function en(r, e, t) {
|
|
2739
2773
|
return Bi(r) ? (setTimeout(function() {
|
|
2740
2774
|
t(null, r);
|
|
2741
|
-
}), r) :
|
|
2775
|
+
}), r) : Ku(r, e, t);
|
|
2742
2776
|
}
|
|
2743
2777
|
function tn(r, e, t) {
|
|
2744
2778
|
t = t || ae.textureOptions;
|
|
2745
2779
|
const n = t.target || ce;
|
|
2746
2780
|
if (r.bindTexture(n, e), t.color === !1)
|
|
2747
2781
|
return;
|
|
2748
|
-
const i =
|
|
2782
|
+
const i = Qu(t.color);
|
|
2749
2783
|
if (n === se)
|
|
2750
2784
|
for (let o = 0; o < 6; ++o)
|
|
2751
2785
|
r.texImage2D(Jr + o, 0, T, 1, 1, 0, T, A, i);
|
|
2752
2786
|
else n === _e || n === Ee ? r.texImage3D(n, 0, T, 1, 1, 1, 0, T, A, i) : r.texImage2D(n, 0, T, 1, 1, 0, T, A, i);
|
|
2753
2787
|
}
|
|
2754
|
-
function
|
|
2788
|
+
function Ju(r, e, t, n) {
|
|
2755
2789
|
return n = n || it, t = t || ae.textureOptions, tn(r, e, t), t = Object.assign({}, t), en(t.src, t.crossOrigin, function(o, s) {
|
|
2756
2790
|
o ? n(o, e, s) : (Mi(r, e, s, t), n(null, e, s));
|
|
2757
2791
|
});
|
|
2758
2792
|
}
|
|
2759
|
-
function
|
|
2793
|
+
function Zu(r, e, t, n) {
|
|
2760
2794
|
n = n || it;
|
|
2761
2795
|
const i = t.src;
|
|
2762
2796
|
if (i.length !== 6)
|
|
@@ -2779,7 +2813,7 @@ function Ju(r, e, t, n) {
|
|
|
2779
2813
|
return en(x, t.crossOrigin, g(b[v]));
|
|
2780
2814
|
});
|
|
2781
2815
|
}
|
|
2782
|
-
function
|
|
2816
|
+
function el(r, e, t, n) {
|
|
2783
2817
|
n = n || it;
|
|
2784
2818
|
const i = t.src, o = t.internalFormat || t.format || T, s = nt(o), a = t.format || s.format, c = t.type || A, u = t.target || Ee;
|
|
2785
2819
|
if (u !== _e && u !== Ee)
|
|
@@ -2814,19 +2848,19 @@ function Zu(r, e, t, n) {
|
|
|
2814
2848
|
return en(k, t.crossOrigin, R(L));
|
|
2815
2849
|
});
|
|
2816
2850
|
}
|
|
2817
|
-
function
|
|
2851
|
+
function tl(r, e, t, n) {
|
|
2818
2852
|
n = n || ae.textureOptions;
|
|
2819
2853
|
const i = n.target || ce;
|
|
2820
2854
|
r.bindTexture(i, e);
|
|
2821
2855
|
let o = n.width, s = n.height, a = n.depth;
|
|
2822
|
-
const c = n.level || 0, u = n.internalFormat || n.format || T, f = nt(u), m = n.format || f.format, p = n.type ||
|
|
2856
|
+
const c = n.level || 0, u = n.internalFormat || n.format || T, f = nt(u), m = n.format || f.format, p = n.type || ju(r, t, f.type);
|
|
2823
2857
|
if (Ke(t))
|
|
2824
2858
|
t instanceof Uint8ClampedArray && (t = new Uint8Array(t.buffer));
|
|
2825
2859
|
else {
|
|
2826
2860
|
const x = yi(p);
|
|
2827
2861
|
t = new x(t);
|
|
2828
2862
|
}
|
|
2829
|
-
const b =
|
|
2863
|
+
const b = Gu(u, p), d = t.byteLength / b;
|
|
2830
2864
|
if (d % 1)
|
|
2831
2865
|
throw "length wrong size for format: " + Ti(r, m);
|
|
2832
2866
|
let g;
|
|
@@ -2853,7 +2887,7 @@ function el(r, e, t, n) {
|
|
|
2853
2887
|
type: p
|
|
2854
2888
|
};
|
|
2855
2889
|
}
|
|
2856
|
-
function
|
|
2890
|
+
function rl(r, e, t) {
|
|
2857
2891
|
const n = t.target || ce;
|
|
2858
2892
|
r.bindTexture(n, e);
|
|
2859
2893
|
const i = t.level || 0, o = t.internalFormat || t.format || T, s = nt(o), a = t.format || s.format, c = t.type || s.type;
|
|
@@ -2871,44 +2905,44 @@ function Di(r, e, t) {
|
|
|
2871
2905
|
let c = e.src;
|
|
2872
2906
|
if (c)
|
|
2873
2907
|
if (typeof c == "function" && (c = c(r, e)), typeof c == "string")
|
|
2874
|
-
|
|
2908
|
+
Ju(r, n, e, t);
|
|
2875
2909
|
else if (Ke(c) || Array.isArray(c) && (typeof c[0] == "number" || Array.isArray(c[0]) || Ke(c[0]))) {
|
|
2876
|
-
const u =
|
|
2910
|
+
const u = tl(r, n, c, e);
|
|
2877
2911
|
o = u.width, s = u.height;
|
|
2878
|
-
} else Array.isArray(c) && (typeof c[0] == "string" || Bi(c[0])) ? i === se ?
|
|
2912
|
+
} else Array.isArray(c) && (typeof c[0] == "string" || Bi(c[0])) ? i === se ? Zu(r, n, e, t) : el(r, n, e, t) : (Mi(r, n, c, e), o = c.width, s = c.height);
|
|
2879
2913
|
else
|
|
2880
|
-
|
|
2914
|
+
rl(r, n, e);
|
|
2881
2915
|
return Je(e) && Rr(r, n, e, o, s, a), Oi(r, n, e), n;
|
|
2882
2916
|
}
|
|
2883
2917
|
const rn = bi;
|
|
2884
2918
|
function Ui(r) {
|
|
2885
2919
|
return typeof document < "u" && document.getElementById ? document.getElementById(r) : null;
|
|
2886
2920
|
}
|
|
2887
|
-
const Kt = 33984, tr = 34962,
|
|
2921
|
+
const Kt = 33984, tr = 34962, nl = 34963, il = 35713, ol = 35714, sl = 35632, al = 35633, cl = 35981, Li = 35718, ul = 35721, ll = 35971, fl = 35382, dl = 35396, hl = 35398, ml = 35392, pl = 35395, rr = 5126, zi = 35664, Ni = 35665, $i = 35666, nn = 5124, Wi = 35667, Gi = 35668, Vi = 35669, Hi = 35670, ji = 35671, Yi = 35672, Qi = 35673, qi = 35674, Xi = 35675, Ki = 35676, gl = 35678, yl = 35680, bl = 35679, wl = 35682, xl = 35685, vl = 35686, _l = 35687, El = 35688, Al = 35689, Tl = 35690, Sl = 36289, Il = 36292, Rl = 36293, on = 5125, Ji = 36294, Zi = 36295, eo = 36296, kl = 36298, Pl = 36299, Fl = 36300, Cl = 36303, Ol = 36306, Ml = 36307, Bl = 36308, Dl = 36311, nr = 3553, ir = 34067, sn = 32879, or = 35866, w = {};
|
|
2888
2922
|
function to(r, e) {
|
|
2889
2923
|
return w[e].bindPoint;
|
|
2890
2924
|
}
|
|
2891
|
-
function
|
|
2925
|
+
function Ul(r, e) {
|
|
2892
2926
|
return function(t) {
|
|
2893
2927
|
r.uniform1f(e, t);
|
|
2894
2928
|
};
|
|
2895
2929
|
}
|
|
2896
|
-
function
|
|
2930
|
+
function Ll(r, e) {
|
|
2897
2931
|
return function(t) {
|
|
2898
2932
|
r.uniform1fv(e, t);
|
|
2899
2933
|
};
|
|
2900
2934
|
}
|
|
2901
|
-
function
|
|
2935
|
+
function zl(r, e) {
|
|
2902
2936
|
return function(t) {
|
|
2903
2937
|
r.uniform2fv(e, t);
|
|
2904
2938
|
};
|
|
2905
2939
|
}
|
|
2906
|
-
function
|
|
2940
|
+
function Nl(r, e) {
|
|
2907
2941
|
return function(t) {
|
|
2908
2942
|
r.uniform3fv(e, t);
|
|
2909
2943
|
};
|
|
2910
2944
|
}
|
|
2911
|
-
function
|
|
2945
|
+
function $l(r, e) {
|
|
2912
2946
|
return function(t) {
|
|
2913
2947
|
r.uniform4fv(e, t);
|
|
2914
2948
|
};
|
|
@@ -2938,72 +2972,72 @@ function so(r, e) {
|
|
|
2938
2972
|
r.uniform4iv(e, t);
|
|
2939
2973
|
};
|
|
2940
2974
|
}
|
|
2941
|
-
function
|
|
2975
|
+
function Wl(r, e) {
|
|
2942
2976
|
return function(t) {
|
|
2943
2977
|
r.uniform1ui(e, t);
|
|
2944
2978
|
};
|
|
2945
2979
|
}
|
|
2946
|
-
function
|
|
2980
|
+
function Gl(r, e) {
|
|
2947
2981
|
return function(t) {
|
|
2948
2982
|
r.uniform1uiv(e, t);
|
|
2949
2983
|
};
|
|
2950
2984
|
}
|
|
2951
|
-
function
|
|
2985
|
+
function Vl(r, e) {
|
|
2952
2986
|
return function(t) {
|
|
2953
2987
|
r.uniform2uiv(e, t);
|
|
2954
2988
|
};
|
|
2955
2989
|
}
|
|
2956
|
-
function
|
|
2990
|
+
function Hl(r, e) {
|
|
2957
2991
|
return function(t) {
|
|
2958
2992
|
r.uniform3uiv(e, t);
|
|
2959
2993
|
};
|
|
2960
2994
|
}
|
|
2961
|
-
function
|
|
2995
|
+
function jl(r, e) {
|
|
2962
2996
|
return function(t) {
|
|
2963
2997
|
r.uniform4uiv(e, t);
|
|
2964
2998
|
};
|
|
2965
2999
|
}
|
|
2966
|
-
function
|
|
3000
|
+
function Yl(r, e) {
|
|
2967
3001
|
return function(t) {
|
|
2968
3002
|
r.uniformMatrix2fv(e, !1, t);
|
|
2969
3003
|
};
|
|
2970
3004
|
}
|
|
2971
|
-
function
|
|
3005
|
+
function Ql(r, e) {
|
|
2972
3006
|
return function(t) {
|
|
2973
3007
|
r.uniformMatrix3fv(e, !1, t);
|
|
2974
3008
|
};
|
|
2975
3009
|
}
|
|
2976
|
-
function
|
|
3010
|
+
function ql(r, e) {
|
|
2977
3011
|
return function(t) {
|
|
2978
3012
|
r.uniformMatrix4fv(e, !1, t);
|
|
2979
3013
|
};
|
|
2980
3014
|
}
|
|
2981
|
-
function
|
|
3015
|
+
function Xl(r, e) {
|
|
2982
3016
|
return function(t) {
|
|
2983
3017
|
r.uniformMatrix2x3fv(e, !1, t);
|
|
2984
3018
|
};
|
|
2985
3019
|
}
|
|
2986
|
-
function
|
|
3020
|
+
function Kl(r, e) {
|
|
2987
3021
|
return function(t) {
|
|
2988
3022
|
r.uniformMatrix3x2fv(e, !1, t);
|
|
2989
3023
|
};
|
|
2990
3024
|
}
|
|
2991
|
-
function
|
|
3025
|
+
function Jl(r, e) {
|
|
2992
3026
|
return function(t) {
|
|
2993
3027
|
r.uniformMatrix2x4fv(e, !1, t);
|
|
2994
3028
|
};
|
|
2995
3029
|
}
|
|
2996
|
-
function
|
|
3030
|
+
function Zl(r, e) {
|
|
2997
3031
|
return function(t) {
|
|
2998
3032
|
r.uniformMatrix4x2fv(e, !1, t);
|
|
2999
3033
|
};
|
|
3000
3034
|
}
|
|
3001
|
-
function
|
|
3035
|
+
function ef(r, e) {
|
|
3002
3036
|
return function(t) {
|
|
3003
3037
|
r.uniformMatrix3x4fv(e, !1, t);
|
|
3004
3038
|
};
|
|
3005
3039
|
}
|
|
3006
|
-
function
|
|
3040
|
+
function tf(r, e) {
|
|
3007
3041
|
return function(t) {
|
|
3008
3042
|
r.uniformMatrix4x3fv(e, !1, t);
|
|
3009
3043
|
};
|
|
@@ -3033,46 +3067,46 @@ function U(r, e, t, n, i) {
|
|
|
3033
3067
|
});
|
|
3034
3068
|
};
|
|
3035
3069
|
}
|
|
3036
|
-
w[rr] = { Type: Float32Array, size: 4, setter:
|
|
3037
|
-
w[zi] = { Type: Float32Array, size: 8, setter:
|
|
3038
|
-
w[Ni] = { Type: Float32Array, size: 12, setter:
|
|
3039
|
-
w[$i] = { Type: Float32Array, size: 16, setter:
|
|
3070
|
+
w[rr] = { Type: Float32Array, size: 4, setter: Ul, arraySetter: Ll };
|
|
3071
|
+
w[zi] = { Type: Float32Array, size: 8, setter: zl, cols: 2 };
|
|
3072
|
+
w[Ni] = { Type: Float32Array, size: 12, setter: Nl, cols: 3 };
|
|
3073
|
+
w[$i] = { Type: Float32Array, size: 16, setter: $l, cols: 4 };
|
|
3040
3074
|
w[nn] = { Type: Int32Array, size: 4, setter: ro, arraySetter: no };
|
|
3041
3075
|
w[Wi] = { Type: Int32Array, size: 8, setter: io, cols: 2 };
|
|
3042
3076
|
w[Gi] = { Type: Int32Array, size: 12, setter: oo, cols: 3 };
|
|
3043
3077
|
w[Vi] = { Type: Int32Array, size: 16, setter: so, cols: 4 };
|
|
3044
|
-
w[on] = { Type: Uint32Array, size: 4, setter:
|
|
3045
|
-
w[Ji] = { Type: Uint32Array, size: 8, setter:
|
|
3046
|
-
w[Zi] = { Type: Uint32Array, size: 12, setter:
|
|
3047
|
-
w[eo] = { Type: Uint32Array, size: 16, setter:
|
|
3078
|
+
w[on] = { Type: Uint32Array, size: 4, setter: Wl, arraySetter: Gl };
|
|
3079
|
+
w[Ji] = { Type: Uint32Array, size: 8, setter: Vl, cols: 2 };
|
|
3080
|
+
w[Zi] = { Type: Uint32Array, size: 12, setter: Hl, cols: 3 };
|
|
3081
|
+
w[eo] = { Type: Uint32Array, size: 16, setter: jl, cols: 4 };
|
|
3048
3082
|
w[Hi] = { Type: Uint32Array, size: 4, setter: ro, arraySetter: no };
|
|
3049
3083
|
w[ji] = { Type: Uint32Array, size: 8, setter: io, cols: 2 };
|
|
3050
3084
|
w[Yi] = { Type: Uint32Array, size: 12, setter: oo, cols: 3 };
|
|
3051
3085
|
w[Qi] = { Type: Uint32Array, size: 16, setter: so, cols: 4 };
|
|
3052
|
-
w[qi] = { Type: Float32Array, size: 32, setter:
|
|
3053
|
-
w[Xi] = { Type: Float32Array, size: 48, setter:
|
|
3054
|
-
w[Ki] = { Type: Float32Array, size: 64, setter:
|
|
3055
|
-
w[
|
|
3056
|
-
w[
|
|
3057
|
-
w[
|
|
3058
|
-
w[
|
|
3059
|
-
w[
|
|
3060
|
-
w[
|
|
3061
|
-
w[
|
|
3062
|
-
w[
|
|
3063
|
-
w[
|
|
3064
|
-
w[
|
|
3065
|
-
w[Tl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: or };
|
|
3086
|
+
w[qi] = { Type: Float32Array, size: 32, setter: Yl, rows: 2, cols: 2 };
|
|
3087
|
+
w[Xi] = { Type: Float32Array, size: 48, setter: Ql, rows: 3, cols: 3 };
|
|
3088
|
+
w[Ki] = { Type: Float32Array, size: 64, setter: ql, rows: 4, cols: 4 };
|
|
3089
|
+
w[xl] = { Type: Float32Array, size: 32, setter: Xl, rows: 2, cols: 3 };
|
|
3090
|
+
w[vl] = { Type: Float32Array, size: 32, setter: Jl, rows: 2, cols: 4 };
|
|
3091
|
+
w[_l] = { Type: Float32Array, size: 48, setter: Kl, rows: 3, cols: 2 };
|
|
3092
|
+
w[El] = { Type: Float32Array, size: 48, setter: ef, rows: 3, cols: 4 };
|
|
3093
|
+
w[Al] = { Type: Float32Array, size: 64, setter: Zl, rows: 4, cols: 2 };
|
|
3094
|
+
w[Tl] = { Type: Float32Array, size: 64, setter: tf, rows: 4, cols: 3 };
|
|
3095
|
+
w[gl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: nr };
|
|
3096
|
+
w[yl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: ir };
|
|
3097
|
+
w[bl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: sn };
|
|
3098
|
+
w[wl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: nr };
|
|
3066
3099
|
w[Sl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: or };
|
|
3067
|
-
w[Il] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint:
|
|
3068
|
-
w[Rl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint:
|
|
3069
|
-
w[kl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint:
|
|
3070
|
-
w[Pl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint:
|
|
3071
|
-
w[Fl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint:
|
|
3072
|
-
w[Cl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint:
|
|
3073
|
-
w[Ol] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint:
|
|
3074
|
-
w[Ml] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint:
|
|
3075
|
-
w[Bl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint:
|
|
3100
|
+
w[Il] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: or };
|
|
3101
|
+
w[Rl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: ir };
|
|
3102
|
+
w[kl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: nr };
|
|
3103
|
+
w[Pl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: sn };
|
|
3104
|
+
w[Fl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: ir };
|
|
3105
|
+
w[Cl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: or };
|
|
3106
|
+
w[Ol] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: nr };
|
|
3107
|
+
w[Ml] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: sn };
|
|
3108
|
+
w[Bl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: ir };
|
|
3109
|
+
w[Dl] = { Type: null, size: 0, setter: D, arraySetter: U, bindPoint: or };
|
|
3076
3110
|
function sr(r, e) {
|
|
3077
3111
|
return function(t) {
|
|
3078
3112
|
if (t.value)
|
|
@@ -3173,9 +3207,9 @@ I[Qi] = { size: 16, setter: ue };
|
|
|
3173
3207
|
I[qi] = { size: 4, setter: an, count: 2 };
|
|
3174
3208
|
I[Xi] = { size: 9, setter: an, count: 3 };
|
|
3175
3209
|
I[Ki] = { size: 16, setter: an, count: 4 };
|
|
3176
|
-
const
|
|
3177
|
-
function
|
|
3178
|
-
const n = [...e.matchAll(
|
|
3210
|
+
const rf = /ERROR:\s*\d+:(\d+)/gi;
|
|
3211
|
+
function nf(r, e = "", t = 0) {
|
|
3212
|
+
const n = [...e.matchAll(rf)], i = new Map(n.map((o, s) => {
|
|
3179
3213
|
const a = parseInt(o[1]), c = n[s + 1], u = c ? c.index : e.length, f = e.substring(o.index, u);
|
|
3180
3214
|
return [a - 1, f];
|
|
3181
3215
|
}));
|
|
@@ -3193,16 +3227,16 @@ function ao(r) {
|
|
|
3193
3227
|
let e = 0;
|
|
3194
3228
|
return Jn.test(r) && (e = 1, r = r.replace(Jn, "")), { lineOffset: e, shaderSource: r };
|
|
3195
3229
|
}
|
|
3196
|
-
function
|
|
3230
|
+
function of(r, e) {
|
|
3197
3231
|
return r.errorCallback(e), r.callback && setTimeout(() => {
|
|
3198
3232
|
r.callback(`${e}
|
|
3199
3233
|
${r.errors.join(`
|
|
3200
3234
|
`)}`);
|
|
3201
3235
|
}), null;
|
|
3202
3236
|
}
|
|
3203
|
-
function
|
|
3204
|
-
if (n = n || rn, !r.getShaderParameter(t,
|
|
3205
|
-
const o = r.getShaderInfoLog(t), { lineOffset: s, shaderSource: a } = ao(r.getShaderSource(t)), c = `${
|
|
3237
|
+
function sf(r, e, t, n) {
|
|
3238
|
+
if (n = n || rn, !r.getShaderParameter(t, il)) {
|
|
3239
|
+
const o = r.getShaderInfoLog(t), { lineOffset: s, shaderSource: a } = ao(r.getShaderSource(t)), c = `${nf(a, o, s)}
|
|
3206
3240
|
Error compiling ${Ti(r, e)}: ${o}`;
|
|
3207
3241
|
return n(c), c;
|
|
3208
3242
|
}
|
|
@@ -3233,24 +3267,24 @@ function cn(r, e, t) {
|
|
|
3233
3267
|
}
|
|
3234
3268
|
return c;
|
|
3235
3269
|
}
|
|
3236
|
-
const
|
|
3270
|
+
const af = [
|
|
3237
3271
|
"VERTEX_SHADER",
|
|
3238
3272
|
"FRAGMENT_SHADER"
|
|
3239
3273
|
];
|
|
3240
|
-
function
|
|
3274
|
+
function cf(r, e) {
|
|
3241
3275
|
if (e.indexOf("frag") >= 0)
|
|
3242
|
-
return ol;
|
|
3243
|
-
if (e.indexOf("vert") >= 0)
|
|
3244
3276
|
return sl;
|
|
3277
|
+
if (e.indexOf("vert") >= 0)
|
|
3278
|
+
return al;
|
|
3245
3279
|
}
|
|
3246
|
-
function
|
|
3280
|
+
function uf(r, e, t) {
|
|
3247
3281
|
const n = r.getAttachedShaders(e);
|
|
3248
3282
|
for (const i of n)
|
|
3249
3283
|
t.has(i) && r.deleteShader(i);
|
|
3250
3284
|
r.deleteProgram(e);
|
|
3251
3285
|
}
|
|
3252
|
-
const
|
|
3253
|
-
function
|
|
3286
|
+
const lf = (r = 0) => new Promise((e) => setTimeout(e, r));
|
|
3287
|
+
function ff(r, e, t) {
|
|
3254
3288
|
const n = r.createProgram(), {
|
|
3255
3289
|
attribLocations: i,
|
|
3256
3290
|
transformFeedbackVaryings: o,
|
|
@@ -3260,25 +3294,25 @@ function lf(r, e, t) {
|
|
|
3260
3294
|
let c = e[a];
|
|
3261
3295
|
if (typeof c == "string") {
|
|
3262
3296
|
const u = Ui(c), f = u ? u.text : c;
|
|
3263
|
-
let m = r[
|
|
3264
|
-
u && u.type && (m =
|
|
3297
|
+
let m = r[af[a]];
|
|
3298
|
+
u && u.type && (m = cf(r, u.type) || m), c = r.createShader(m), r.shaderSource(c, ao(f).shaderSource), r.compileShader(c), r.attachShader(n, c);
|
|
3265
3299
|
}
|
|
3266
3300
|
}
|
|
3267
3301
|
Object.entries(i).forEach(([a, c]) => r.bindAttribLocation(n, c, a));
|
|
3268
3302
|
{
|
|
3269
3303
|
let a = o;
|
|
3270
|
-
a && (a.attribs && (a = a.attribs), Array.isArray(a) || (a = Object.keys(a)), r.transformFeedbackVaryings(n, a, s ||
|
|
3304
|
+
a && (a.attribs && (a = a.attribs), Array.isArray(a) || (a = Object.keys(a)), r.transformFeedbackVaryings(n, a, s || cl));
|
|
3271
3305
|
}
|
|
3272
3306
|
return r.linkProgram(n), n;
|
|
3273
3307
|
}
|
|
3274
|
-
function
|
|
3275
|
-
const o = cn(t, n, i), s = new Set(e), a =
|
|
3308
|
+
function df(r, e, t, n, i) {
|
|
3309
|
+
const o = cn(t, n, i), s = new Set(e), a = ff(r, e, o);
|
|
3276
3310
|
function c(u, f) {
|
|
3277
|
-
const m =
|
|
3278
|
-
return m &&
|
|
3311
|
+
const m = mf(u, f, o.errorCallback);
|
|
3312
|
+
return m && uf(u, f, s), m;
|
|
3279
3313
|
}
|
|
3280
3314
|
if (o.callback) {
|
|
3281
|
-
|
|
3315
|
+
hf(r, a).then(() => {
|
|
3282
3316
|
const u = c(r, a);
|
|
3283
3317
|
o.callback(u, u ? void 0 : a);
|
|
3284
3318
|
});
|
|
@@ -3286,38 +3320,38 @@ function ff(r, e, t, n, i) {
|
|
|
3286
3320
|
}
|
|
3287
3321
|
return c(r, a) ? void 0 : a;
|
|
3288
3322
|
}
|
|
3289
|
-
async function
|
|
3323
|
+
async function hf(r, e) {
|
|
3290
3324
|
const t = r.getExtension("KHR_parallel_shader_compile"), n = t ? (o, s) => o.getProgramParameter(s, t.COMPLETION_STATUS_KHR) : () => !0;
|
|
3291
3325
|
let i = 0;
|
|
3292
3326
|
do
|
|
3293
|
-
await
|
|
3327
|
+
await lf(i), i = 1e3 / 60;
|
|
3294
3328
|
while (!n(r, e));
|
|
3295
3329
|
}
|
|
3296
|
-
function
|
|
3297
|
-
if (t = t || rn, !r.getProgramParameter(e,
|
|
3330
|
+
function mf(r, e, t) {
|
|
3331
|
+
if (t = t || rn, !r.getProgramParameter(e, ol)) {
|
|
3298
3332
|
const i = r.getProgramInfoLog(e);
|
|
3299
3333
|
t(`Error in program linking: ${i}`);
|
|
3300
|
-
const s = r.getAttachedShaders(e).map((a) =>
|
|
3334
|
+
const s = r.getAttachedShaders(e).map((a) => sf(r, r.getShaderParameter(a, r.SHADER_TYPE), a, t));
|
|
3301
3335
|
return `${i}
|
|
3302
3336
|
${s.filter((a) => a).join(`
|
|
3303
3337
|
`)}`;
|
|
3304
3338
|
}
|
|
3305
3339
|
}
|
|
3306
|
-
function
|
|
3307
|
-
return
|
|
3340
|
+
function pf(r, e, t, n, i) {
|
|
3341
|
+
return df(r, e, t, n, i);
|
|
3308
3342
|
}
|
|
3309
3343
|
function co(r) {
|
|
3310
3344
|
const e = r.name;
|
|
3311
3345
|
return e.startsWith("gl_") || e.startsWith("webgl_");
|
|
3312
3346
|
}
|
|
3313
|
-
const
|
|
3314
|
-
function
|
|
3315
|
-
const i = r.split(
|
|
3347
|
+
const gf = /(\.|\[|]|\w+)/g, yf = (r) => r >= "0" && r <= "9";
|
|
3348
|
+
function bf(r, e, t, n) {
|
|
3349
|
+
const i = r.split(gf).filter((a) => a !== "");
|
|
3316
3350
|
let o = 0, s = "";
|
|
3317
3351
|
for (; ; ) {
|
|
3318
3352
|
const a = i[o++];
|
|
3319
3353
|
s += a;
|
|
3320
|
-
const c =
|
|
3354
|
+
const c = yf(a[0]), u = c ? parseInt(a) : a;
|
|
3321
3355
|
if (c && (s += i[o++]), o === i.length) {
|
|
3322
3356
|
t[u] = e;
|
|
3323
3357
|
break;
|
|
@@ -3331,7 +3365,7 @@ function yf(r, e, t, n) {
|
|
|
3331
3365
|
}
|
|
3332
3366
|
}
|
|
3333
3367
|
}
|
|
3334
|
-
function
|
|
3368
|
+
function wf(r, e) {
|
|
3335
3369
|
let t = 0;
|
|
3336
3370
|
function n(a, c, u) {
|
|
3337
3371
|
const f = c.name.endsWith("[0]"), m = c.type, p = w[m];
|
|
@@ -3355,13 +3389,13 @@ function bf(r, e) {
|
|
|
3355
3389
|
const f = r.getUniformLocation(e, c.name);
|
|
3356
3390
|
if (f) {
|
|
3357
3391
|
const m = n(e, c, f);
|
|
3358
|
-
i[u] = m,
|
|
3392
|
+
i[u] = m, bf(u, m, o, i);
|
|
3359
3393
|
}
|
|
3360
3394
|
}
|
|
3361
3395
|
return i;
|
|
3362
3396
|
}
|
|
3363
|
-
function
|
|
3364
|
-
const t = {}, n = r.getProgramParameter(e,
|
|
3397
|
+
function xf(r, e) {
|
|
3398
|
+
const t = {}, n = r.getProgramParameter(e, ll);
|
|
3365
3399
|
for (let i = 0; i < n; ++i) {
|
|
3366
3400
|
const o = r.getTransformFeedbackVarying(e, i);
|
|
3367
3401
|
t[o.name] = {
|
|
@@ -3372,7 +3406,7 @@ function wf(r, e) {
|
|
|
3372
3406
|
}
|
|
3373
3407
|
return t;
|
|
3374
3408
|
}
|
|
3375
|
-
function
|
|
3409
|
+
function vf(r, e) {
|
|
3376
3410
|
const t = r.getProgramParameter(e, Li), n = [], i = [];
|
|
3377
3411
|
for (let a = 0; a < t; ++a) {
|
|
3378
3412
|
i.push(a), n.push({});
|
|
@@ -3391,14 +3425,14 @@ function xf(r, e) {
|
|
|
3391
3425
|
n[m][u] = f;
|
|
3392
3426
|
});
|
|
3393
3427
|
});
|
|
3394
|
-
const o = {}, s = r.getProgramParameter(e,
|
|
3428
|
+
const o = {}, s = r.getProgramParameter(e, fl);
|
|
3395
3429
|
for (let a = 0; a < s; ++a) {
|
|
3396
3430
|
const c = r.getActiveUniformBlockName(e, a), u = {
|
|
3397
3431
|
index: r.getUniformBlockIndex(e, c),
|
|
3398
|
-
usedByVertexShader: r.getActiveUniformBlockParameter(e, a,
|
|
3399
|
-
usedByFragmentShader: r.getActiveUniformBlockParameter(e, a,
|
|
3400
|
-
size: r.getActiveUniformBlockParameter(e, a,
|
|
3401
|
-
uniformIndices: r.getActiveUniformBlockParameter(e, a,
|
|
3432
|
+
usedByVertexShader: r.getActiveUniformBlockParameter(e, a, dl),
|
|
3433
|
+
usedByFragmentShader: r.getActiveUniformBlockParameter(e, a, hl),
|
|
3434
|
+
size: r.getActiveUniformBlockParameter(e, a, ml),
|
|
3435
|
+
uniformIndices: r.getActiveUniformBlockParameter(e, a, pl)
|
|
3402
3436
|
};
|
|
3403
3437
|
u.used = u.usedByVertexShader || u.usedByFragmentShader, o[c] = u;
|
|
3404
3438
|
}
|
|
@@ -3428,8 +3462,8 @@ function lo(r, ...e) {
|
|
|
3428
3462
|
}
|
|
3429
3463
|
}
|
|
3430
3464
|
}
|
|
3431
|
-
function
|
|
3432
|
-
const t = {}, n = r.getProgramParameter(e,
|
|
3465
|
+
function _f(r, e) {
|
|
3466
|
+
const t = {}, n = r.getProgramParameter(e, ul);
|
|
3433
3467
|
for (let i = 0; i < n; ++i) {
|
|
3434
3468
|
const o = r.getActiveAttrib(e, i);
|
|
3435
3469
|
if (co(o))
|
|
@@ -3439,28 +3473,28 @@ function vf(r, e) {
|
|
|
3439
3473
|
}
|
|
3440
3474
|
return t;
|
|
3441
3475
|
}
|
|
3442
|
-
function
|
|
3476
|
+
function Ef(r, e) {
|
|
3443
3477
|
for (const t in e) {
|
|
3444
3478
|
const n = r[t];
|
|
3445
3479
|
n && n(e[t]);
|
|
3446
3480
|
}
|
|
3447
3481
|
}
|
|
3448
|
-
function
|
|
3449
|
-
t.vertexArrayObject ? r.bindVertexArray(t.vertexArrayObject) : (
|
|
3482
|
+
function Af(r, e, t) {
|
|
3483
|
+
t.vertexArrayObject ? r.bindVertexArray(t.vertexArrayObject) : (Ef(e.attribSetters || e, t.attribs), t.indices && r.bindBuffer(nl, t.indices));
|
|
3450
3484
|
}
|
|
3451
3485
|
function Zn(r, e) {
|
|
3452
|
-
const t =
|
|
3486
|
+
const t = wf(r, e), n = _f(r, e), i = {
|
|
3453
3487
|
program: e,
|
|
3454
3488
|
uniformSetters: t,
|
|
3455
3489
|
attribSetters: n
|
|
3456
3490
|
};
|
|
3457
|
-
return rt(r) && (i.uniformBlockSpec =
|
|
3491
|
+
return rt(r) && (i.uniformBlockSpec = vf(r, e), i.transformFeedbackInfo = xf(r, e)), i;
|
|
3458
3492
|
}
|
|
3459
|
-
const
|
|
3460
|
-
function
|
|
3493
|
+
const Tf = /\s|{|}|;/;
|
|
3494
|
+
function Sf(r, e, t, n, i) {
|
|
3461
3495
|
const o = cn(t, n, i), s = [];
|
|
3462
3496
|
if (e = e.map(function(u) {
|
|
3463
|
-
if (!
|
|
3497
|
+
if (!Tf.test(u)) {
|
|
3464
3498
|
const f = Ui(u);
|
|
3465
3499
|
if (f)
|
|
3466
3500
|
u = f.text;
|
|
@@ -3471,54 +3505,54 @@ function Tf(r, e, t, n, i) {
|
|
|
3471
3505
|
}
|
|
3472
3506
|
return u;
|
|
3473
3507
|
}), s.length)
|
|
3474
|
-
return
|
|
3508
|
+
return of(o, "");
|
|
3475
3509
|
const a = o.callback;
|
|
3476
3510
|
a && (o.callback = (u, f) => {
|
|
3477
3511
|
a(u, u ? void 0 : Zn(r, f));
|
|
3478
3512
|
});
|
|
3479
|
-
const c =
|
|
3513
|
+
const c = pf(r, e, o);
|
|
3480
3514
|
return c ? Zn(r, c) : null;
|
|
3481
3515
|
}
|
|
3482
|
-
const
|
|
3483
|
-
function
|
|
3484
|
-
t = t === void 0 ?
|
|
3516
|
+
const If = 4, ei = 5123;
|
|
3517
|
+
function Rf(r, e, t, n, i, o) {
|
|
3518
|
+
t = t === void 0 ? If : t;
|
|
3485
3519
|
const s = e.indices, a = e.elementType, c = n === void 0 ? e.numElements : n;
|
|
3486
3520
|
i = i === void 0 ? 0 : i, a || s ? o !== void 0 ? r.drawElementsInstanced(t, c, a === void 0 ? ei : e.elementType, i, o) : r.drawElements(t, c, a === void 0 ? ei : e.elementType, i) : o !== void 0 ? r.drawArraysInstanced(t, i, c, o) : r.drawArrays(t, i, c);
|
|
3487
3521
|
}
|
|
3488
|
-
const fo = 36160, At = 36161,
|
|
3489
|
-
{ format:
|
|
3522
|
+
const fo = 36160, At = 36161, kf = 3553, Pf = 5121, Ff = 6402, Cf = 6408, Of = 33190, Mf = 36012, Bf = 35056, Df = 36013, Uf = 32854, Lf = 32855, zf = 36194, ho = 33189, mo = 6401, po = 36168, un = 34041, Fr = 36064, cr = 36096, go = 36128, ln = 33306, Cr = 33071, Or = 9729, Nf = [
|
|
3523
|
+
{ format: Cf, type: Pf, min: Or, wrap: Cr },
|
|
3490
3524
|
{ format: un }
|
|
3491
3525
|
], V = {};
|
|
3492
3526
|
V[un] = ln;
|
|
3493
3527
|
V[mo] = go;
|
|
3494
3528
|
V[po] = go;
|
|
3495
|
-
V[
|
|
3529
|
+
V[Ff] = cr;
|
|
3496
3530
|
V[ho] = cr;
|
|
3497
|
-
V[Cf] = cr;
|
|
3498
3531
|
V[Of] = cr;
|
|
3499
|
-
V[Mf] =
|
|
3532
|
+
V[Mf] = cr;
|
|
3500
3533
|
V[Bf] = ln;
|
|
3501
|
-
|
|
3534
|
+
V[Df] = ln;
|
|
3535
|
+
function $f(r, e) {
|
|
3502
3536
|
return V[r] || V[e];
|
|
3503
3537
|
}
|
|
3504
3538
|
const le = {};
|
|
3505
|
-
le[Df] = !0;
|
|
3506
3539
|
le[Uf] = !0;
|
|
3507
3540
|
le[Lf] = !0;
|
|
3541
|
+
le[zf] = !0;
|
|
3508
3542
|
le[un] = !0;
|
|
3509
3543
|
le[ho] = !0;
|
|
3510
3544
|
le[mo] = !0;
|
|
3511
3545
|
le[po] = !0;
|
|
3512
|
-
function
|
|
3546
|
+
function Wf(r) {
|
|
3513
3547
|
return le[r];
|
|
3514
3548
|
}
|
|
3515
|
-
const
|
|
3516
|
-
function
|
|
3517
|
-
return r >= Fr && r < Fr +
|
|
3549
|
+
const Gf = 32;
|
|
3550
|
+
function Vf(r) {
|
|
3551
|
+
return r >= Fr && r < Fr + Gf;
|
|
3518
3552
|
}
|
|
3519
3553
|
function ti(r, e, t, n) {
|
|
3520
3554
|
const i = fo, o = r.createFramebuffer();
|
|
3521
|
-
r.bindFramebuffer(i, o), t = t || r.drawingBufferWidth, n = n || r.drawingBufferHeight, e = e ||
|
|
3555
|
+
r.bindFramebuffer(i, o), t = t || r.drawingBufferWidth, n = n || r.drawingBufferHeight, e = e || Nf;
|
|
3522
3556
|
const s = [], a = {
|
|
3523
3557
|
framebuffer: o,
|
|
3524
3558
|
attachments: [],
|
|
@@ -3528,15 +3562,15 @@ function ti(r, e, t, n) {
|
|
|
3528
3562
|
return e.forEach(function(c, u) {
|
|
3529
3563
|
let f = c.attachment;
|
|
3530
3564
|
const m = c.samples, p = c.format;
|
|
3531
|
-
let b = c.attachmentPoint ||
|
|
3532
|
-
if (b || (b = Fr + u),
|
|
3533
|
-
if (m !== void 0 ||
|
|
3565
|
+
let b = c.attachmentPoint || $f(p, c.internalFormat);
|
|
3566
|
+
if (b || (b = Fr + u), Vf(b) && s.push(b), !f)
|
|
3567
|
+
if (m !== void 0 || Wf(p))
|
|
3534
3568
|
f = r.createRenderbuffer(), r.bindRenderbuffer(At, f), m > 1 ? r.renderbufferStorageMultisample(At, m, p, t, n) : r.renderbufferStorage(At, p, t, n);
|
|
3535
3569
|
else {
|
|
3536
3570
|
const d = Object.assign({}, c);
|
|
3537
3571
|
d.width = t, d.height = n, d.auto === void 0 && (d.auto = !1, d.min = d.min || d.minMag || Or, d.mag = d.mag || d.minMag || Or, d.wrapS = d.wrapS || d.wrap || Cr, d.wrapT = d.wrapT || d.wrap || Cr), f = Di(r, d);
|
|
3538
3572
|
}
|
|
3539
|
-
if (
|
|
3573
|
+
if (Ja(r, f))
|
|
3540
3574
|
r.framebufferRenderbuffer(i, b, At, f);
|
|
3541
3575
|
else if (Xr(r, f))
|
|
3542
3576
|
c.layer !== void 0 ? r.framebufferTextureLayer(
|
|
@@ -3548,7 +3582,7 @@ function ti(r, e, t, n) {
|
|
|
3548
3582
|
) : r.framebufferTexture2D(
|
|
3549
3583
|
i,
|
|
3550
3584
|
b,
|
|
3551
|
-
c.target ||
|
|
3585
|
+
c.target || kf,
|
|
3552
3586
|
f,
|
|
3553
3587
|
c.level || 0
|
|
3554
3588
|
);
|
|
@@ -3557,7 +3591,7 @@ function ti(r, e, t, n) {
|
|
|
3557
3591
|
a.attachments.push(f);
|
|
3558
3592
|
}), r.drawBuffers && r.drawBuffers(s), a;
|
|
3559
3593
|
}
|
|
3560
|
-
function
|
|
3594
|
+
function Hf(r, e, t) {
|
|
3561
3595
|
t = t || fo, e ? (r.bindFramebuffer(t, e.framebuffer), r.viewport(0, 0, e.width, e.height)) : (r.bindFramebuffer(t, null), r.viewport(0, 0, r.drawingBufferWidth, r.drawingBufferHeight));
|
|
3562
3596
|
}
|
|
3563
3597
|
function B(r, e) {
|
|
@@ -3573,10 +3607,10 @@ class ot {
|
|
|
3573
3607
|
const { context: t, width: n, height: i } = e;
|
|
3574
3608
|
this.context = t, this.options = e;
|
|
3575
3609
|
const o = this.buildDefines();
|
|
3576
|
-
this.programInfo =
|
|
3610
|
+
this.programInfo = Sf(this.context, [
|
|
3577
3611
|
o + this.getVertexShader(),
|
|
3578
3612
|
o + this.getFragmentShader()
|
|
3579
|
-
]), this.bufferInfo =
|
|
3613
|
+
]), this.bufferInfo = _c(
|
|
3580
3614
|
this.context,
|
|
3581
3615
|
this.getBuffers()
|
|
3582
3616
|
), this.fbi = ti(
|
|
@@ -3662,7 +3696,7 @@ class ot {
|
|
|
3662
3696
|
0,
|
|
3663
3697
|
this.context.canvas.width,
|
|
3664
3698
|
this.context.canvas.height
|
|
3665
|
-
), this.context.useProgram(this.programInfo.program),
|
|
3699
|
+
), this.context.useProgram(this.programInfo.program), Af(
|
|
3666
3700
|
this.context,
|
|
3667
3701
|
this.programInfo,
|
|
3668
3702
|
this.bufferInfo
|
|
@@ -3670,10 +3704,10 @@ class ot {
|
|
|
3670
3704
|
delta: n,
|
|
3671
3705
|
canvas: [this.context.canvas.width, this.context.canvas.height],
|
|
3672
3706
|
...e
|
|
3673
|
-
}),
|
|
3707
|
+
}), Hf(
|
|
3674
3708
|
this.context,
|
|
3675
3709
|
this.options.disableFramebuffer ? null : this.fbi
|
|
3676
|
-
),
|
|
3710
|
+
), Rf(this.context, this.bufferInfo), this.profiler?.popContext(
|
|
3677
3711
|
`[${this.id}] PROG : ${this.constructor.name}`
|
|
3678
3712
|
);
|
|
3679
3713
|
}
|
|
@@ -3681,7 +3715,7 @@ class ot {
|
|
|
3681
3715
|
this.profiler = e;
|
|
3682
3716
|
}
|
|
3683
3717
|
}
|
|
3684
|
-
const
|
|
3718
|
+
const jf = `precision mediump float;
|
|
3685
3719
|
|
|
3686
3720
|
varying vec2 _texture_coord;
|
|
3687
3721
|
|
|
@@ -3696,7 +3730,7 @@ void main() {
|
|
|
3696
3730
|
gl_FragColor = foregroundColor * tresholdColor.a +
|
|
3697
3731
|
backgroundColor * (1. - tresholdColor.a);
|
|
3698
3732
|
}
|
|
3699
|
-
`,
|
|
3733
|
+
`, Yf = `varying vec2 _texture_coord;
|
|
3700
3734
|
|
|
3701
3735
|
attribute vec2 position;
|
|
3702
3736
|
attribute vec2 texture_coord;
|
|
@@ -3709,10 +3743,10 @@ void main() {
|
|
|
3709
3743
|
`;
|
|
3710
3744
|
class fn extends ot {
|
|
3711
3745
|
getFragmentShader() {
|
|
3712
|
-
return
|
|
3746
|
+
return jf;
|
|
3713
3747
|
}
|
|
3714
3748
|
getVertexShader() {
|
|
3715
|
-
return
|
|
3749
|
+
return Yf;
|
|
3716
3750
|
}
|
|
3717
3751
|
}
|
|
3718
3752
|
class dn {
|
|
@@ -3775,13 +3809,13 @@ class yo extends hn {
|
|
|
3775
3809
|
this.inputImage = e, this.inputMask = t;
|
|
3776
3810
|
}
|
|
3777
3811
|
}
|
|
3778
|
-
const
|
|
3812
|
+
const Qf = `precision mediump float;
|
|
3779
3813
|
|
|
3780
3814
|
varying vec2 _texture_coord;
|
|
3781
3815
|
uniform sampler2D texture;
|
|
3782
3816
|
|
|
3783
3817
|
void main() { gl_FragColor = texture2D(texture, _texture_coord); }
|
|
3784
|
-
`,
|
|
3818
|
+
`, qf = `varying vec2 _texture_coord;
|
|
3785
3819
|
|
|
3786
3820
|
attribute vec2 position;
|
|
3787
3821
|
attribute vec2 texture_coord;
|
|
@@ -3795,15 +3829,15 @@ void main() {
|
|
|
3795
3829
|
}
|
|
3796
3830
|
}
|
|
3797
3831
|
`;
|
|
3798
|
-
class
|
|
3832
|
+
class Xf extends ot {
|
|
3799
3833
|
getFragmentShader() {
|
|
3800
|
-
return
|
|
3834
|
+
return Qf;
|
|
3801
3835
|
}
|
|
3802
3836
|
getVertexShader() {
|
|
3803
|
-
return
|
|
3837
|
+
return qf;
|
|
3804
3838
|
}
|
|
3805
3839
|
}
|
|
3806
|
-
class
|
|
3840
|
+
class Kf extends dn {
|
|
3807
3841
|
constructor(e, t, n) {
|
|
3808
3842
|
super(), this.context = e;
|
|
3809
3843
|
const i = {
|
|
@@ -3812,7 +3846,7 @@ class Xf extends dn {
|
|
|
3812
3846
|
width: t
|
|
3813
3847
|
};
|
|
3814
3848
|
this.addStep({
|
|
3815
|
-
program: new
|
|
3849
|
+
program: new Xf({
|
|
3816
3850
|
...i,
|
|
3817
3851
|
disableFramebuffer: !0
|
|
3818
3852
|
}),
|
|
@@ -3833,7 +3867,7 @@ async function bo(r) {
|
|
|
3833
3867
|
}, r);
|
|
3834
3868
|
});
|
|
3835
3869
|
}
|
|
3836
|
-
const
|
|
3870
|
+
const Jf = `precision mediump float;
|
|
3837
3871
|
|
|
3838
3872
|
varying vec2 _texture_coord;
|
|
3839
3873
|
|
|
@@ -3843,7 +3877,7 @@ uniform sampler2D texture;
|
|
|
3843
3877
|
vec4 loop();
|
|
3844
3878
|
|
|
3845
3879
|
void main() { gl_FragColor = loop(); }
|
|
3846
|
-
`,
|
|
3880
|
+
`, Zf = `varying vec2 _texture_coord;
|
|
3847
3881
|
|
|
3848
3882
|
attribute vec2 position;
|
|
3849
3883
|
attribute vec2 texture_coord;
|
|
@@ -3859,10 +3893,10 @@ class wo extends ot {
|
|
|
3859
3893
|
return { RADIUS: this.options.radius ?? 1 };
|
|
3860
3894
|
}
|
|
3861
3895
|
getFragmentShader() {
|
|
3862
|
-
return
|
|
3896
|
+
return Jf + this.createLoopFunction();
|
|
3863
3897
|
}
|
|
3864
3898
|
getVertexShader() {
|
|
3865
|
-
return
|
|
3899
|
+
return Zf;
|
|
3866
3900
|
}
|
|
3867
3901
|
createLoopFunction() {
|
|
3868
3902
|
let e = this.options.radius ?? 1;
|
|
@@ -3890,7 +3924,7 @@ class wo extends ot {
|
|
|
3890
3924
|
}`;
|
|
3891
3925
|
}
|
|
3892
3926
|
}
|
|
3893
|
-
const
|
|
3927
|
+
const ed = `#version 300 es
|
|
3894
3928
|
// https://github.com/Volcomix/virtual-background/blob/main/src/pipelines/webgl2/jointBilateralFilterStage.ts
|
|
3895
3929
|
|
|
3896
3930
|
precision highp float;
|
|
@@ -3936,7 +3970,7 @@ void main() {
|
|
|
3936
3970
|
}
|
|
3937
3971
|
newVal /= totalWeight;
|
|
3938
3972
|
outColor = vec4(vec3(0.), newVal);
|
|
3939
|
-
}`,
|
|
3973
|
+
}`, td = `#version 300 es
|
|
3940
3974
|
in vec2 position;
|
|
3941
3975
|
in vec2 texture_coord;
|
|
3942
3976
|
out vec2 _texture_coord;
|
|
@@ -3944,15 +3978,15 @@ void main() {
|
|
|
3944
3978
|
gl_Position = vec4(position, 0.0, 1.0);
|
|
3945
3979
|
_texture_coord = texture_coord;
|
|
3946
3980
|
}`;
|
|
3947
|
-
class
|
|
3981
|
+
class rd extends ot {
|
|
3948
3982
|
getFragmentShader() {
|
|
3949
|
-
return
|
|
3983
|
+
return ed;
|
|
3950
3984
|
}
|
|
3951
3985
|
getVertexShader() {
|
|
3952
|
-
return
|
|
3986
|
+
return td;
|
|
3953
3987
|
}
|
|
3954
3988
|
}
|
|
3955
|
-
class
|
|
3989
|
+
class nd extends dn {
|
|
3956
3990
|
constructor(e, t, n) {
|
|
3957
3991
|
super(), this.context = e;
|
|
3958
3992
|
const i = {
|
|
@@ -3964,7 +3998,7 @@ class rd extends dn {
|
|
|
3964
3998
|
radius: 1,
|
|
3965
3999
|
type: mn.GAUSSIAN
|
|
3966
4000
|
});
|
|
3967
|
-
this.jointBilateral = new
|
|
4001
|
+
this.jointBilateral = new rd(i), this.addStep({
|
|
3968
4002
|
program: o,
|
|
3969
4003
|
getUniforms: () => ({
|
|
3970
4004
|
inputs: B(e, this.inputMask)
|
|
@@ -4000,7 +4034,7 @@ class rd extends dn {
|
|
|
4000
4034
|
}
|
|
4001
4035
|
}
|
|
4002
4036
|
var xo = /* @__PURE__ */ ((r) => (r.PUSH = "PUSH", r.POP = "POP", r))(xo || {});
|
|
4003
|
-
class
|
|
4037
|
+
class id {
|
|
4004
4038
|
constructor(e) {
|
|
4005
4039
|
this.queries = [], this.context = e, this.extension = e.getExtension(
|
|
4006
4040
|
"EXT_disjoint_timer_query_webgl2"
|
|
@@ -4072,7 +4106,7 @@ class ur {
|
|
|
4072
4106
|
const e = new OffscreenCanvas(0, 0), t = e.getContext("webgl2");
|
|
4073
4107
|
if (!t)
|
|
4074
4108
|
throw "Fail to retrieve webgl2 context";
|
|
4075
|
-
this.canvas = e, this.context = t, this.improveMask = new
|
|
4109
|
+
this.canvas = e, this.context = t, this.improveMask = new nd(
|
|
4076
4110
|
this.context,
|
|
4077
4111
|
Ue,
|
|
4078
4112
|
Ue
|
|
@@ -4085,7 +4119,7 @@ class ur {
|
|
|
4085
4119
|
this.postProcessingEnabled = !1;
|
|
4086
4120
|
}
|
|
4087
4121
|
async profileWebgl(e) {
|
|
4088
|
-
const t = new
|
|
4122
|
+
const t = new id(this.context);
|
|
4089
4123
|
return this.profiler = t, t.start(), await bo(e), this.profiler = void 0, t.stop(), t.getResolvedQueries();
|
|
4090
4124
|
}
|
|
4091
4125
|
async render(e, t) {
|
|
@@ -4112,7 +4146,7 @@ class vo extends ur {
|
|
|
4112
4146
|
const e = new OffscreenCanvas(0, 0), t = e.getContext("webgl2");
|
|
4113
4147
|
if (!t)
|
|
4114
4148
|
throw "Fail to retrieve webgl context";
|
|
4115
|
-
this.backgroundImageResizerCanvas = e, this.backgroundImageResizerContext = t, this.backgroundImageResizer = new
|
|
4149
|
+
this.backgroundImageResizerCanvas = e, this.backgroundImageResizerContext = t, this.backgroundImageResizer = new Kf(
|
|
4116
4150
|
this.backgroundImageResizerContext,
|
|
4117
4151
|
0,
|
|
4118
4152
|
0
|
|
@@ -4133,7 +4167,7 @@ class vo extends ur {
|
|
|
4133
4167
|
e && e.loseContext(), super.destroy();
|
|
4134
4168
|
}
|
|
4135
4169
|
}
|
|
4136
|
-
class
|
|
4170
|
+
class od extends vo {
|
|
4137
4171
|
setBackgroundVideo(e) {
|
|
4138
4172
|
this.frameReader = e;
|
|
4139
4173
|
}
|
|
@@ -4150,19 +4184,19 @@ class id extends vo {
|
|
|
4150
4184
|
}
|
|
4151
4185
|
class ri {
|
|
4152
4186
|
blurBackground(e) {
|
|
4153
|
-
return new
|
|
4187
|
+
return new za(e);
|
|
4154
4188
|
}
|
|
4155
4189
|
blurSilhouette(e) {
|
|
4156
|
-
return new
|
|
4190
|
+
return new Na(e);
|
|
4157
4191
|
}
|
|
4158
4192
|
imageBackground() {
|
|
4159
|
-
return new
|
|
4193
|
+
return new $a();
|
|
4160
4194
|
}
|
|
4161
4195
|
videoBackground() {
|
|
4162
|
-
return new
|
|
4196
|
+
return new od();
|
|
4163
4197
|
}
|
|
4164
4198
|
}
|
|
4165
|
-
const
|
|
4199
|
+
const sd = `precision mediump float;
|
|
4166
4200
|
|
|
4167
4201
|
varying vec2 _texture_coord;
|
|
4168
4202
|
|
|
@@ -4173,7 +4207,7 @@ uniform sampler2D mask;
|
|
|
4173
4207
|
vec4 loop();
|
|
4174
4208
|
|
|
4175
4209
|
void main() { gl_FragColor = loop(); }
|
|
4176
|
-
`,
|
|
4210
|
+
`, ad = `varying vec2 _texture_coord;
|
|
4177
4211
|
|
|
4178
4212
|
attribute vec2 position;
|
|
4179
4213
|
attribute vec2 texture_coord;
|
|
@@ -4183,15 +4217,15 @@ void main() {
|
|
|
4183
4217
|
_texture_coord = texture_coord;
|
|
4184
4218
|
}
|
|
4185
4219
|
`;
|
|
4186
|
-
class
|
|
4220
|
+
class cd extends ot {
|
|
4187
4221
|
getDefines() {
|
|
4188
4222
|
return { RADIUS: this.options.radius ?? 1 };
|
|
4189
4223
|
}
|
|
4190
4224
|
getFragmentShader() {
|
|
4191
|
-
return
|
|
4225
|
+
return sd + this.createLoopFunction();
|
|
4192
4226
|
}
|
|
4193
4227
|
getVertexShader() {
|
|
4194
|
-
return
|
|
4228
|
+
return ad;
|
|
4195
4229
|
}
|
|
4196
4230
|
createLoopFunction() {
|
|
4197
4231
|
let e = this.options.radius ?? 1;
|
|
@@ -4220,8 +4254,8 @@ class ad extends ot {
|
|
|
4220
4254
|
}`;
|
|
4221
4255
|
}
|
|
4222
4256
|
}
|
|
4223
|
-
const
|
|
4224
|
-
class
|
|
4257
|
+
const ud = 10, ld = 2, fd = 8;
|
|
4258
|
+
class dd extends hn {
|
|
4225
4259
|
constructor(e, t) {
|
|
4226
4260
|
super(), this.context = e, this.radius = t;
|
|
4227
4261
|
const n = {
|
|
@@ -4229,7 +4263,7 @@ class fd extends hn {
|
|
|
4229
4263
|
height: e.canvas.height,
|
|
4230
4264
|
width: e.canvas.width
|
|
4231
4265
|
};
|
|
4232
|
-
this.blur = new
|
|
4266
|
+
this.blur = new cd({
|
|
4233
4267
|
...n,
|
|
4234
4268
|
radius: t,
|
|
4235
4269
|
...this.getBlurTextureSize(
|
|
@@ -4255,7 +4289,7 @@ class fd extends hn {
|
|
|
4255
4289
|
});
|
|
4256
4290
|
}
|
|
4257
4291
|
getBlurTextureSize(e, t) {
|
|
4258
|
-
const n = this.radius >
|
|
4292
|
+
const n = this.radius > ud ? fd : ld;
|
|
4259
4293
|
return {
|
|
4260
4294
|
width: Math.max(Ue, e / n),
|
|
4261
4295
|
height: Math.max(Ue, t / n)
|
|
@@ -4270,12 +4304,12 @@ class fd extends hn {
|
|
|
4270
4304
|
this.blur.resizeOutput(n.width, n.height);
|
|
4271
4305
|
}
|
|
4272
4306
|
}
|
|
4273
|
-
class
|
|
4307
|
+
class hd extends ur {
|
|
4274
4308
|
constructor(e) {
|
|
4275
|
-
super(), this.pipeline = new
|
|
4309
|
+
super(), this.pipeline = new dd(this.context, e), this.disablePostProcessing();
|
|
4276
4310
|
}
|
|
4277
4311
|
}
|
|
4278
|
-
class
|
|
4312
|
+
class md extends hn {
|
|
4279
4313
|
constructor(e, t) {
|
|
4280
4314
|
super(), this.context = e;
|
|
4281
4315
|
const n = {
|
|
@@ -4305,12 +4339,12 @@ class hd extends hn {
|
|
|
4305
4339
|
this.inputImage = e, this.inputMask = t;
|
|
4306
4340
|
}
|
|
4307
4341
|
}
|
|
4308
|
-
class
|
|
4342
|
+
class pd extends ur {
|
|
4309
4343
|
constructor(e) {
|
|
4310
|
-
super(), this.pipeline = new
|
|
4344
|
+
super(), this.pipeline = new md(this.context, e), this.disablePostProcessing();
|
|
4311
4345
|
}
|
|
4312
4346
|
}
|
|
4313
|
-
class
|
|
4347
|
+
class gd extends yo {
|
|
4314
4348
|
constructor() {
|
|
4315
4349
|
super(...arguments), this.preciseMaskEnabled = !0;
|
|
4316
4350
|
}
|
|
@@ -4325,9 +4359,9 @@ class pd extends yo {
|
|
|
4325
4359
|
e?.value && (this.inputBackgroundImage = await createImageBitmap(e.value), e.value.close());
|
|
4326
4360
|
}
|
|
4327
4361
|
}
|
|
4328
|
-
class
|
|
4362
|
+
class yd extends ur {
|
|
4329
4363
|
constructor() {
|
|
4330
|
-
super(), this.pipeline = new
|
|
4364
|
+
super(), this.pipeline = new gd(this.context);
|
|
4331
4365
|
}
|
|
4332
4366
|
setBackgroundVideo(e) {
|
|
4333
4367
|
this.pipeline.reader = e;
|
|
@@ -4335,19 +4369,19 @@ class gd extends ur {
|
|
|
4335
4369
|
}
|
|
4336
4370
|
class ni {
|
|
4337
4371
|
blurBackground(e) {
|
|
4338
|
-
return new
|
|
4372
|
+
return new hd(e);
|
|
4339
4373
|
}
|
|
4340
4374
|
blurSilhouette(e) {
|
|
4341
|
-
return new
|
|
4375
|
+
return new pd(e);
|
|
4342
4376
|
}
|
|
4343
4377
|
imageBackground() {
|
|
4344
4378
|
return new vo();
|
|
4345
4379
|
}
|
|
4346
4380
|
videoBackground() {
|
|
4347
|
-
return new
|
|
4381
|
+
return new yd();
|
|
4348
4382
|
}
|
|
4349
4383
|
}
|
|
4350
|
-
class
|
|
4384
|
+
class bd {
|
|
4351
4385
|
constructor(e) {
|
|
4352
4386
|
switch (e) {
|
|
4353
4387
|
case Mt.CANVAS:
|
|
@@ -4379,10 +4413,10 @@ class yd {
|
|
|
4379
4413
|
return this.factory;
|
|
4380
4414
|
}
|
|
4381
4415
|
}
|
|
4382
|
-
class
|
|
4416
|
+
class wd {
|
|
4383
4417
|
setBackgroundOptions(e) {
|
|
4384
4418
|
this.renderer && this.renderer.destroy();
|
|
4385
|
-
const t = new
|
|
4419
|
+
const t = new bd(e.renderingOptions?.type);
|
|
4386
4420
|
switch (e.transformerType) {
|
|
4387
4421
|
case "BackgroundBlur":
|
|
4388
4422
|
this.renderer = t.blurBackground(
|
|
@@ -4435,7 +4469,7 @@ class bd {
|
|
|
4435
4469
|
return this.renderer?.profileWebgl(e) ?? [];
|
|
4436
4470
|
}
|
|
4437
4471
|
}
|
|
4438
|
-
var
|
|
4472
|
+
var xd = (function() {
|
|
4439
4473
|
var r = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0;
|
|
4440
4474
|
return (function(e) {
|
|
4441
4475
|
e = e || {};
|
|
@@ -4815,17 +4849,17 @@ var wd = (function() {
|
|
|
4815
4849
|
return hr(), e.ready;
|
|
4816
4850
|
});
|
|
4817
4851
|
})();
|
|
4818
|
-
class
|
|
4852
|
+
class vd {
|
|
4819
4853
|
constructor() {
|
|
4820
4854
|
this.isSIMDSupported = !1, this.isThreadsSupported = !1, this.inputWidth = 0, this.inputHeight = 0, this.inputChannelCount = 0, this.inputMemoryOffset = 0, this.outputWidth = 0, this.outputHeight = 0, this.outputChannelCount = 0, this.outputMemoryOffset = 0;
|
|
4821
4855
|
}
|
|
4822
4856
|
}
|
|
4823
|
-
const
|
|
4824
|
-
async function
|
|
4825
|
-
let t = new
|
|
4857
|
+
const _d = "https://d3opqjmqzxf057.cloudfront.net/vonage-tensorflow-wasm/tflite-simd-wasm/1.1.3/", Ed = "https://d3opqjmqzxf057.cloudfront.net/ml/selfie_segmentation/4.0.0/selfie_segmentation_landscape.tflite";
|
|
4858
|
+
async function Ad(r = _d, e = Ed) {
|
|
4859
|
+
let t = new vd();
|
|
4826
4860
|
var n = new Promise(function(i, o) {
|
|
4827
4861
|
async function s() {
|
|
4828
|
-
return
|
|
4862
|
+
return xd({
|
|
4829
4863
|
locateFile: function(u) {
|
|
4830
4864
|
return r + u;
|
|
4831
4865
|
}
|
|
@@ -4890,8 +4924,8 @@ async function Ed(r = vd, e = _d) {
|
|
|
4890
4924
|
});
|
|
4891
4925
|
return n;
|
|
4892
4926
|
}
|
|
4893
|
-
const
|
|
4894
|
-
class
|
|
4927
|
+
const Td = 0.1, Sd = 0.7, Id = "https://d3opqjmqzxf057.cloudfront.net/ml/vonage_selfie_segmenter/float16/v1/vonage_selfie_segmenter.tflite";
|
|
4928
|
+
class Rd {
|
|
4895
4929
|
constructor() {
|
|
4896
4930
|
this.canvas = new OffscreenCanvas(0, 0), this.context = this.canvas.getContext(
|
|
4897
4931
|
"2d",
|
|
@@ -4917,7 +4951,7 @@ class Id {
|
|
|
4917
4951
|
});
|
|
4918
4952
|
}
|
|
4919
4953
|
async loadMediapipeAssets(e, t) {
|
|
4920
|
-
this.modelAssetUriPath = e ||
|
|
4954
|
+
this.modelAssetUriPath = e || Id;
|
|
4921
4955
|
const n = t ? `${t}/task-vision.js` : "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.20/+esm", i = t ? `${t}/wasm` : "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.20/wasm", { FilesetResolver: o, ImageSegmenter: s } = await import(
|
|
4922
4956
|
/* @vite-ignore */
|
|
4923
4957
|
n
|
|
@@ -4967,7 +5001,7 @@ class Id {
|
|
|
4967
5001
|
}), o = [255, 0, 0];
|
|
4968
5002
|
for (let s = 0; s < i?.length; s++) {
|
|
4969
5003
|
const a = 1 - i[s];
|
|
4970
|
-
a >
|
|
5004
|
+
a > Td ? (a < Sd ? (this.mask.data[s * 4] = o[0] * a, this.mask.data[s * 4 + 3] = 255 * a) : (this.mask.data[s * 4] = o[0], this.mask.data[s * 4 + 3] = 255), this.mask.data[s * 4 + 1] = o[1], this.mask.data[s * 4 + 2] = o[2]) : this.mask.data[s * 4] = this.mask.data[s * 4 + 1] = this.mask.data[s * 4 + 2] = this.mask.data[s * 4 + 3] = 0;
|
|
4971
5005
|
}
|
|
4972
5006
|
return this.previousConfidenceMask = i.slice(), this.mask;
|
|
4973
5007
|
}
|
|
@@ -4980,7 +5014,7 @@ class Id {
|
|
|
4980
5014
|
return t + (e - t) * (f * 0.9);
|
|
4981
5015
|
}
|
|
4982
5016
|
}
|
|
4983
|
-
class
|
|
5017
|
+
class kd {
|
|
4984
5018
|
constructor() {
|
|
4985
5019
|
this.canvas = new OffscreenCanvas(0, 0), this.context = this.canvas.getContext(
|
|
4986
5020
|
"2d",
|
|
@@ -4996,7 +5030,7 @@ class Rd {
|
|
|
4996
5030
|
), this.inputOffset = this.infos.inputMemoryOffset / 4, this.outputOffset = this.infos.outputMemoryOffset / 4);
|
|
4997
5031
|
}
|
|
4998
5032
|
async initWasm(e, t) {
|
|
4999
|
-
this.infos = await
|
|
5033
|
+
this.infos = await Ad(
|
|
5000
5034
|
e,
|
|
5001
5035
|
t
|
|
5002
5036
|
);
|
|
@@ -5032,16 +5066,16 @@ class Rd {
|
|
|
5032
5066
|
return this.infos?.selectedTFLite?._isGPUEnabled() ?? !1;
|
|
5033
5067
|
}
|
|
5034
5068
|
}
|
|
5035
|
-
class
|
|
5069
|
+
class Pd {
|
|
5036
5070
|
constructor() {
|
|
5037
|
-
this.reporter = new
|
|
5071
|
+
this.reporter = new Ua(), this.isEnabled = !0;
|
|
5038
5072
|
}
|
|
5039
5073
|
async init(e, t) {
|
|
5040
|
-
t.segmentationOptions?.lightWeightEngine === !0 ? this.selfieSegmentation = new
|
|
5074
|
+
t.segmentationOptions?.lightWeightEngine === !0 ? this.selfieSegmentation = new kd() : this.selfieSegmentation = new Rd(), this.selfieSegmentation?.init(
|
|
5041
5075
|
t.modelAssetUriPath,
|
|
5042
5076
|
t.mediapipeBaseAssetsUri,
|
|
5043
5077
|
t.segmentationOptions?.gpuSupport
|
|
5044
|
-
), this.backgroundFilter = new
|
|
5078
|
+
), this.backgroundFilter = new wd(), this.report({
|
|
5045
5079
|
variation: "Create"
|
|
5046
5080
|
});
|
|
5047
5081
|
}
|
|
@@ -5082,7 +5116,7 @@ class kd {
|
|
|
5082
5116
|
}
|
|
5083
5117
|
report(e) {
|
|
5084
5118
|
this.reporter.send({
|
|
5085
|
-
version:
|
|
5119
|
+
version: La,
|
|
5086
5120
|
action: "MlTransformers",
|
|
5087
5121
|
transformerType: this.backgroundOptions?.transformerType,
|
|
5088
5122
|
config: JSON.stringify(this.backgroundOptions),
|
|
@@ -5092,7 +5126,7 @@ class kd {
|
|
|
5092
5126
|
}
|
|
5093
5127
|
const pn = class pn {
|
|
5094
5128
|
constructor() {
|
|
5095
|
-
this.backgroundTransformer = new
|
|
5129
|
+
this.backgroundTransformer = new Pd(), this.mediaProcessor = new ui(), this.rate = 30, this.eventsQueue = [], this.frameTransformLatencyMs = [];
|
|
5096
5130
|
}
|
|
5097
5131
|
async init(e, t) {
|
|
5098
5132
|
this.frameTransformLatencyMs = [], await this.backgroundTransformer.init(e, t), await this.mediaProcessor.setTransformers([this.backgroundTransformer]), this.mediaProcessor.setTrackExpectedRate(this.rate), this.mediaProcessor.onAny((n, i) => {
|
|
@@ -5132,7 +5166,7 @@ const pn = class pn {
|
|
|
5132
5166
|
console.log(`Transform latency average is: ${t} ms`);
|
|
5133
5167
|
}
|
|
5134
5168
|
setVonageMetadata(e) {
|
|
5135
|
-
|
|
5169
|
+
Cs(e);
|
|
5136
5170
|
}
|
|
5137
5171
|
async profile(e) {
|
|
5138
5172
|
return JSON.stringify(
|
|
@@ -5140,10 +5174,10 @@ const pn = class pn {
|
|
|
5140
5174
|
);
|
|
5141
5175
|
}
|
|
5142
5176
|
};
|
|
5143
|
-
|
|
5177
|
+
ua("ProcessorWorker", pn);
|
|
5144
5178
|
let Mr = pn;
|
|
5145
|
-
const _o = '(function(){"use strict";function Vt(r,e){globalThis.vonage||(globalThis.vonage={}),globalThis.vonage.workerizer||(globalThis.vonage.workerizer={});let t=globalThis.vonage.workerizer;return t[r]||(t[r]=e),t[r]}const Vr=Vt("globals",{});var xe=(r=>(r.INIT="INIT",r.FORWARD="FORWARD",r.TERMINATE="TERMINATE",r.GLOBALS_SYNC="GLOBALS_SYNC",r.EVENT="EVENT",r))(xe||{});function zi(r){return[ImageBitmap,ReadableStream,WritableStream].some(t=>r instanceof t)}function Be(r,e){const{id:t,type:n}=r,i=Array.isArray(e)?e:[e];postMessage({id:t,type:n,result:e},i.filter(s=>zi(s)))}Vt("workerized",{});function Hr(){return typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope}function qe(r,e){if(Array.isArray(e))e.splice(0,e.length);else if(typeof e=="object")for(const t in e)delete e[t];for(const t in r)Array.isArray(r[t])?(e[t]=[],qe(r[t],e[t])):typeof r[t]=="object"?(e[t]={},qe(r[t],e[t])):e[t]=r[t]}const K=new WeakMap,ce=new WeakMap,j=new WeakMap,Ke=Symbol("anyProducer"),jr=Promise.resolve(),Je=Symbol("listenerAdded"),Ze=Symbol("listenerRemoved");let et=!1,Ht=!1;function _e(r){if(typeof r!="string"&&typeof r!="symbol"&&typeof r!="number")throw new TypeError("`eventName` must be a string, symbol, or number")}function tt(r){if(typeof r!="function")throw new TypeError("listener must be a function")}function Ee(r,e){const t=ce.get(r);if(t.has(e))return t.get(e)}function De(r,e){const t=typeof e=="string"||typeof e=="symbol"||typeof e=="number"?e:Ke,n=j.get(r);if(n.has(t))return n.get(t)}function Gi(r,e,t){const n=j.get(r);if(n.has(e))for(const i of n.get(e))i.enqueue(t);if(n.has(Ke)){const i=Promise.all([e,t]);for(const s of n.get(Ke))s.enqueue(i)}}function Xr(r,e){e=Array.isArray(e)?e:[e];let t=!1,n=()=>{},i=[];const s={enqueue(o){i.push(o),n()},finish(){t=!0,n()}};for(const o of e){let a=De(r,o);a||(a=new Set,j.get(r).set(o,a)),a.add(s)}return{async next(){return i?i.length===0?t?(i=void 0,this.next()):(await new Promise(o=>{n=o}),this.next()):{done:!1,value:await i.shift()}:{done:!0}},async return(o){i=void 0;for(const a of e){const c=De(r,a);c&&(c.delete(s),c.size===0&&j.get(r).delete(a))}return n(),arguments.length>0?{done:!0,value:await o}:{done:!0}},[Symbol.asyncIterator](){return this}}}function Yr(r){if(r===void 0)return Qr;if(!Array.isArray(r))throw new TypeError("`methodNames` must be an array of strings");for(const e of r)if(!Qr.includes(e))throw typeof e!="string"?new TypeError("`methodNames` element must be a string"):new Error(`${e} is not Emittery method`);return r}const we=r=>r===Je||r===Ze;function rt(r,e,t){if(we(e))try{et=!0,r.emit(e,t)}finally{et=!1}}class ve{static mixin(e,t){return t=Yr(t),n=>{if(typeof n!="function")throw new TypeError("`target` must be function");for(const o of t)if(n.prototype[o]!==void 0)throw new Error(`The property \\`${o}\\` already exists on \\`target\\``);function i(){return Object.defineProperty(this,e,{enumerable:!1,value:new ve}),this[e]}Object.defineProperty(n.prototype,e,{enumerable:!1,get:i});const s=o=>function(...a){return this[e][o](...a)};for(const o of t)Object.defineProperty(n.prototype,o,{enumerable:!1,value:s(o)});return n}}static get isDebugEnabled(){var e,t;if(typeof((e=globalThis.process)==null?void 0:e.env)!="object")return Ht;const{env:n}=(t=globalThis.process)!=null?t:{env:{}};return n.DEBUG==="emittery"||n.DEBUG==="*"||Ht}static set isDebugEnabled(e){Ht=e}constructor(e={}){var t;K.set(this,new Set),ce.set(this,new Map),j.set(this,new Map),j.get(this).set(Ke,new Set),this.debug=(t=e.debug)!=null?t:{},this.debug.enabled===void 0&&(this.debug.enabled=!1),this.debug.logger||(this.debug.logger=(n,i,s,o)=>{try{o=JSON.stringify(o)}catch{o=`Object with the following keys failed to stringify: ${Object.keys(o).join(",")}`}(typeof s=="symbol"||typeof s=="number")&&(s=s.toString());const a=new Date,c=`${a.getHours()}:${a.getMinutes()}:${a.getSeconds()}.${a.getMilliseconds()}`;console.log(`[${c}][emittery:${n}][${i}] Event Name: ${s}\n data: ${o}`)})}logIfDebugEnabled(e,t,n){(ve.isDebugEnabled||this.debug.enabled)&&this.debug.logger(e,this.debug.name,t,n)}on(e,t){tt(t),e=Array.isArray(e)?e:[e];for(const n of e){_e(n);let i=Ee(this,n);i||(i=new Set,ce.get(this).set(n,i)),i.add(t),this.logIfDebugEnabled("subscribe",n,void 0),we(n)||rt(this,Je,{eventName:n,listener:t})}return this.off.bind(this,e,t)}off(e,t){tt(t),e=Array.isArray(e)?e:[e];for(const n of e){_e(n);const i=Ee(this,n);i&&(i.delete(t),i.size===0&&ce.get(this).delete(n)),this.logIfDebugEnabled("unsubscribe",n,void 0),we(n)||rt(this,Ze,{eventName:n,listener:t})}}once(e){let t;const n=new Promise(i=>{t=this.on(e,s=>{t(),i(s)})});return n.off=t,n}events(e){e=Array.isArray(e)?e:[e];for(const t of e)_e(t);return Xr(this,e)}async emit(e,t){var n;if(_e(e),we(e)&&!et)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emit",e,t),Gi(this,e,t);const i=(n=Ee(this,e))!=null?n:new Set,s=K.get(this),o=[...i],a=we(e)?[]:[...s];await jr,await Promise.all([...o.map(async c=>{if(i.has(c))return c(t)}),...a.map(async c=>{if(s.has(c))return c(e,t)})])}async emitSerial(e,t){var n;if(_e(e),we(e)&&!et)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emitSerial",e,t);const i=(n=Ee(this,e))!=null?n:new Set,s=K.get(this),o=[...i],a=[...s];await jr;for(const c of o)i.has(c)&&await c(t);for(const c of a)s.has(c)&&await c(e,t)}onAny(e){return tt(e),this.logIfDebugEnabled("subscribeAny",void 0,void 0),K.get(this).add(e),rt(this,Je,{listener:e}),this.offAny.bind(this,e)}anyEvent(){return Xr(this)}offAny(e){tt(e),this.logIfDebugEnabled("unsubscribeAny",void 0,void 0),rt(this,Ze,{listener:e}),K.get(this).delete(e)}clearListeners(e){e=Array.isArray(e)?e:[e];for(const t of e)if(this.logIfDebugEnabled("clear",t,void 0),typeof t=="string"||typeof t=="symbol"||typeof t=="number"){const n=Ee(this,t);n&&n.clear();const i=De(this,t);if(i){for(const s of i)s.finish();i.clear()}}else{K.get(this).clear();for(const[n,i]of ce.get(this).entries())i.clear(),ce.get(this).delete(n);for(const[n,i]of j.get(this).entries()){for(const s of i)s.finish();i.clear(),j.get(this).delete(n)}}}listenerCount(e){var t,n,i,s,o,a;e=Array.isArray(e)?e:[e];let c=0;for(const u of e){if(typeof u=="string"){c+=K.get(this).size+((n=(t=Ee(this,u))==null?void 0:t.size)!=null?n:0)+((s=(i=De(this,u))==null?void 0:i.size)!=null?s:0)+((a=(o=De(this))==null?void 0:o.size)!=null?a:0);continue}typeof u<"u"&&_e(u),c+=K.get(this).size;for(const d of ce.get(this).values())c+=d.size;for(const d of j.get(this).values())c+=d.size}return c}bindMethods(e,t){if(typeof e!="object"||e===null)throw new TypeError("`target` must be an object");t=Yr(t);for(const n of t){if(e[n]!==void 0)throw new Error(`The property \\`${n}\\` already exists on \\`target\\``);Object.defineProperty(e,n,{enumerable:!1,value:this[n].bind(this)})}}}const Qr=Object.getOwnPropertyNames(ve.prototype).filter(r=>r!=="constructor");Object.defineProperty(ve,"listenerAdded",{value:Je,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(ve,"listenerRemoved",{value:Ze,writable:!1,enumerable:!0,configurable:!1});function $i(r){return r.onAny&&r.emit}async function Wi(r,e){const{functionName:t,args:n}=r;if(!e.instance)throw"instance not initialized";if(!t)throw"missing function name to call";if(!e.instance[t])throw`undefined function [${t}] in class ${e.instance.constructor.workerId}`;Be(r,await e.instance[t](...n??[]))}const qr=Vt("registeredWorkers",{});function Vi(r,e){e.workerId=r,Hr()&&(qr[e.workerId]=e)}function Hi(r,e){if(!r.args)throw"Missing className while initializing worker";const[t,n]=r.args,i=qr[t];if(i)e.instance=new i(r.args.slice(1));else throw`unknown worker class ${t}`;qe(n,Vr),$i(e.instance)&&e.instance.onAny((s,o)=>{Be({type:xe.EVENT},{name:s,data:o})}),Be(r,typeof e.instance!==void 0)}async function ji(r,e){const{args:t}=r;if(!e.instance)throw"instance not initialized";let n;e.instance.terminate&&(n=await e.instance.terminate(...t??[])),Be(r,n)}function Xi(r){if(!r.args)throw"Missing globals while syncing";qe(r.args[0],Vr),Be(r,{})}function Yi(){const r={};onmessage=async e=>{const t=e.data;switch(t.type){case xe.INIT:Hi(t,r);break;case xe.FORWARD:Wi(t,r);break;case xe.TERMINATE:ji(t,r);break;case xe.GLOBALS_SYNC:Xi(t);break}}}Hr()&&Yi();const J=new WeakMap,ue=new WeakMap,X=new WeakMap,nt=Symbol("anyProducer"),Kr=Promise.resolve(),it=Symbol("listenerAdded"),st=Symbol("listenerRemoved");let ot=!1,jt=!1;const at=r=>typeof r=="string"||typeof r=="symbol"||typeof r=="number";function Te(r){if(!at(r))throw new TypeError("`eventName` must be a string, symbol, or number")}function ct(r){if(typeof r!="function")throw new TypeError("listener must be a function")}function Ae(r,e){const t=ue.get(r);if(t.has(e))return t.get(e)}function Me(r,e){const t=at(e)?e:nt,n=X.get(r);if(n.has(t))return n.get(t)}function Qi(r,e,t){const n=X.get(r);if(n.has(e))for(const i of n.get(e))i.enqueue(t);if(n.has(nt)){const i=Promise.all([e,t]);for(const s of n.get(nt))s.enqueue(i)}}function Jr(r,e){e=Array.isArray(e)?e:[e];let t=!1,n=()=>{},i=[];const s={enqueue(o){i.push(o),n()},finish(){t=!0,n()}};for(const o of e){let a=Me(r,o);a||(a=new Set,X.get(r).set(o,a)),a.add(s)}return{async next(){return i?i.length===0?t?(i=void 0,this.next()):(await new Promise(o=>{n=o}),this.next()):{done:!1,value:await i.shift()}:{done:!0}},async return(o){i=void 0;for(const a of e){const c=Me(r,a);c&&(c.delete(s),c.size===0&&X.get(r).delete(a))}return n(),arguments.length>0?{done:!0,value:await o}:{done:!0}},[Symbol.asyncIterator](){return this}}}function Zr(r){if(r===void 0)return en;if(!Array.isArray(r))throw new TypeError("`methodNames` must be an array of strings");for(const e of r)if(!en.includes(e))throw typeof e!="string"?new TypeError("`methodNames` element must be a string"):new Error(`${e} is not Emittery method`);return r}const Ie=r=>r===it||r===st;function ut(r,e,t){if(Ie(e))try{ot=!0,r.emit(e,t)}finally{ot=!1}}class Y{static mixin(e,t){return t=Zr(t),n=>{if(typeof n!="function")throw new TypeError("`target` must be function");for(const o of t)if(n.prototype[o]!==void 0)throw new Error(`The property \\`${o}\\` already exists on \\`target\\``);function i(){return Object.defineProperty(this,e,{enumerable:!1,value:new Y}),this[e]}Object.defineProperty(n.prototype,e,{enumerable:!1,get:i});const s=o=>function(...a){return this[e][o](...a)};for(const o of t)Object.defineProperty(n.prototype,o,{enumerable:!1,value:s(o)});return n}}static get isDebugEnabled(){if(typeof globalThis.process?.env!="object")return jt;const{env:e}=globalThis.process??{env:{}};return e.DEBUG==="emittery"||e.DEBUG==="*"||jt}static set isDebugEnabled(e){jt=e}constructor(e={}){J.set(this,new Set),ue.set(this,new Map),X.set(this,new Map),X.get(this).set(nt,new Set),this.debug=e.debug??{},this.debug.enabled===void 0&&(this.debug.enabled=!1),this.debug.logger||(this.debug.logger=(t,n,i,s)=>{try{s=JSON.stringify(s)}catch{s=`Object with the following keys failed to stringify: ${Object.keys(s).join(",")}`}(typeof i=="symbol"||typeof i=="number")&&(i=i.toString());const o=new Date,a=`${o.getHours()}:${o.getMinutes()}:${o.getSeconds()}.${o.getMilliseconds()}`;console.log(`[${a}][emittery:${t}][${n}] Event Name: ${i}\n data: ${s}`)})}logIfDebugEnabled(e,t,n){(Y.isDebugEnabled||this.debug.enabled)&&this.debug.logger(e,this.debug.name,t,n)}on(e,t,{signal:n}={}){ct(t),e=Array.isArray(e)?e:[e];for(const s of e){Te(s);let o=Ae(this,s);o||(o=new Set,ue.get(this).set(s,o)),o.add(t),this.logIfDebugEnabled("subscribe",s,void 0),Ie(s)||ut(this,it,{eventName:s,listener:t})}const i=()=>{this.off(e,t),n?.removeEventListener("abort",i)};return n?.addEventListener("abort",i,{once:!0}),n?.aborted&&i(),i}off(e,t){ct(t),e=Array.isArray(e)?e:[e];for(const n of e){Te(n);const i=Ae(this,n);i&&(i.delete(t),i.size===0&&ue.get(this).delete(n)),this.logIfDebugEnabled("unsubscribe",n,void 0),Ie(n)||ut(this,st,{eventName:n,listener:t})}}once(e,t){if(t!==void 0&&typeof t!="function")throw new TypeError("predicate must be a function");let n;const i=new Promise(s=>{n=this.on(e,o=>{t&&!t(o)||(n(),s(o))})});return i.off=n,i}events(e){e=Array.isArray(e)?e:[e];for(const t of e)Te(t);return Jr(this,e)}async emit(e,t){if(Te(e),Ie(e)&&!ot)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emit",e,t),Qi(this,e,t);const n=Ae(this,e)??new Set,i=J.get(this),s=[...n],o=Ie(e)?[]:[...i];await Kr,await Promise.all([...s.map(async a=>{if(n.has(a))return a(t)}),...o.map(async a=>{if(i.has(a))return a(e,t)})])}async emitSerial(e,t){if(Te(e),Ie(e)&&!ot)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emitSerial",e,t);const n=Ae(this,e)??new Set,i=J.get(this),s=[...n],o=[...i];await Kr;for(const a of s)n.has(a)&&await a(t);for(const a of o)i.has(a)&&await a(e,t)}onAny(e,{signal:t}={}){ct(e),this.logIfDebugEnabled("subscribeAny",void 0,void 0),J.get(this).add(e),ut(this,it,{listener:e});const n=()=>{this.offAny(e),t?.removeEventListener("abort",n)};return t?.addEventListener("abort",n,{once:!0}),t?.aborted&&n(),n}anyEvent(){return Jr(this)}offAny(e){ct(e),this.logIfDebugEnabled("unsubscribeAny",void 0,void 0),ut(this,st,{listener:e}),J.get(this).delete(e)}clearListeners(e){e=Array.isArray(e)?e:[e];for(const t of e)if(this.logIfDebugEnabled("clear",t,void 0),at(t)){const n=Ae(this,t);n&&n.clear();const i=Me(this,t);if(i){for(const s of i)s.finish();i.clear()}}else{J.get(this).clear();for(const[n,i]of ue.get(this).entries())i.clear(),ue.get(this).delete(n);for(const[n,i]of X.get(this).entries()){for(const s of i)s.finish();i.clear(),X.get(this).delete(n)}}}listenerCount(e){e=Array.isArray(e)?e:[e];let t=0;for(const n of e){if(at(n)){t+=J.get(this).size+(Ae(this,n)?.size??0)+(Me(this,n)?.size??0)+(Me(this)?.size??0);continue}n!==void 0&&Te(n),t+=J.get(this).size;for(const i of ue.get(this).values())t+=i.size;for(const i of X.get(this).values())t+=i.size}return t}bindMethods(e,t){if(typeof e!="object"||e===null)throw new TypeError("`target` must be an object");t=Zr(t);for(const n of t){if(e[n]!==void 0)throw new Error(`The property \\`${n}\\` already exists on \\`target\\``);Object.defineProperty(e,n,{enumerable:!1,value:this[n].bind(this)})}}}const en=Object.getOwnPropertyNames(Y.prototype).filter(r=>r!=="constructor");Object.defineProperty(Y,"listenerAdded",{value:it,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(Y,"listenerRemoved",{value:st,writable:!1,enumerable:!0,configurable:!1});var qi=Object.defineProperty,Ki=(r,e,t)=>e in r?qi(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Ji=(r,e,t)=>(Ki(r,e+"",t),t);const Zi="hlg.tokbox.com/prod/logging/vcp_webrtc",es="https://",ts=1e4;let ft;const rs=new Uint8Array(16);function ns(){if(!ft&&(ft=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!ft))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return ft(rs)}const F=[];for(let r=0;r<256;++r)F.push((r+256).toString(16).slice(1));function is(r,e=0){return(F[r[e+0]]+F[r[e+1]]+F[r[e+2]]+F[r[e+3]]+"-"+F[r[e+4]]+F[r[e+5]]+"-"+F[r[e+6]]+F[r[e+7]]+"-"+F[r[e+8]]+F[r[e+9]]+"-"+F[r[e+10]]+F[r[e+11]]+F[r[e+12]]+F[r[e+13]]+F[r[e+14]]+F[r[e+15]]).toLowerCase()}const ss=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),tn={randomUUID:ss};function os(r,e,t){if(tn.randomUUID&&!r)return tn.randomUUID();r=r||{};const n=r.random||(r.rng||ns)();return n[6]=n[6]&15|64,n[8]=n[8]&63|128,is(n)}function Xt(r,e){globalThis.vonage||(globalThis.vonage={}),globalThis.vonage.workerizer||(globalThis.vonage.workerizer={});let t=globalThis.vonage.workerizer;return t[r]||(t[r]=e),t[r]}const Z=Xt("globals",{});var fe=(r=>(r.INIT="INIT",r.FORWARD="FORWARD",r.TERMINATE="TERMINATE",r.GLOBALS_SYNC="GLOBALS_SYNC",r))(fe||{});function rn(r){return[ImageBitmap,ReadableStream,WritableStream].some(e=>r instanceof e)}let as=0;function cs(r,e,t,n,i){const s=as++;return r.postMessage({id:s,type:e,functionName:t,args:n},n.filter(o=>rn(o))),new Promise(o=>{i?.set(s,o)})}function Oe(r,e){const{id:t,type:n}=r,i=Array.isArray(e)?e:[e];postMessage({id:t,type:n,result:e},i.filter(s=>rn(s)))}const nn=Xt("workerized",{});function sn(){return typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope}async function us(){if(sn())Oe({type:fe.GLOBALS_SYNC},Z);else{const r=[];for(const e in nn){const{worker:t,resolvers:n}=nn[e].workerContext;t&&r.push(cs(t,fe.GLOBALS_SYNC,"",[Z],n))}await Promise.all(r)}}function lt(r,e){if(Array.isArray(e))e.splice(0,e.length);else if(typeof e=="object")for(const t in e)delete e[t];for(const t in r)Array.isArray(r[t])?(e[t]=[],lt(r[t],e[t])):typeof r[t]=="object"?(e[t]={},lt(r[t],e[t])):e[t]=r[t]}async function fs(r,e){const{functionName:t,args:n}=r;if(!e.instance)throw"instance not initialized";if(!t)throw"missing function name to call";if(!e.instance[t])throw`undefined function [${t}] in class ${e.instance.constructor.workerId}`;Oe(r,await e.instance[t](...n??[]))}const ls=Xt("registeredWorkers",{});function ds(r,e){if(!r.args)throw"Missing className while initializing worker";const[t,n]=r.args,i=ls[t];if(i)e.instance=new i(r.args.slice(1));else throw`unknown worker class ${t}`;lt(n,Z),Oe(r,typeof e.instance!==void 0)}async function hs(r,e){const{args:t}=r;if(!e.instance)throw"instance not initialized";let n;e.instance.terminate&&(n=await e.instance.terminate(...t??[])),Oe(r,n)}function ms(r){if(!r.args)throw"Missing globals while syncing";lt(r.args[0],Z),Oe(r,{})}function ps(){const r={};onmessage=async e=>{const t=e.data;switch(t.type){case fe.INIT:ds(t,r);break;case fe.FORWARD:fs(t,r);break;case fe.TERMINATE:hs(t,r);break;case fe.GLOBALS_SYNC:ms(t);break}}}sn()&&ps();function gs(r,e){return Z[r]||(Z[r]=e),[()=>Z[r],async t=>{Z[r]=t,await us()}]}function ys(r,e){return gs(r,e)}const[bs,xs]=ys("metadata");function _s(r){xs(r)}function Yt(){return bs()}let Qt=class{constructor(e,t){Ji(this,"uuid"),this.config=e,this.uuid=t??os()}async send(e){var t,n,i;const{appId:s,sourceType:o}=(t=Yt())!=null?t:{};if(!s||!o)return"metadata missing";const a=new AbortController,c=setTimeout(()=>a.abort(),ts);return await((i=(n=this.config)==null?void 0:n.fetch)!=null?i:fetch)(this.getUrl(),{method:"POST",headers:this.getHeaders(),body:JSON.stringify(this.buildReport(e)),signal:a.signal}),clearTimeout(c),"success"}getUrl(){var e;let t=(e=Yt().proxyUrl)!=null?e:es;return t+=(t.at(-1)==="/"?"":"/")+Zi,t}getHeaders(){return{"Content-Type":"application/json"}}buildReport(e){const t=Yt();return{guid:this.uuid,...e,applicationId:t.appId,timestamp:Date.now(),proxyUrl:t.proxyUrl,source:t.sourceType}}};const dt="3.0.1-alpha.0",qt=class{};qt.updates={transformer_new:"New transformer",transformer_null:"Null transformer"},qt.errors={transformer_none:"No transformers provided",transformer_start:"Cannot start transformer",transformer_transform:"Cannot transform frame",transformer_flush:"Cannot flush transformer",readable_null:"Readable is null",writable_null:"Writable is null"};let le=qt;function Es(r){return typeof r=="object"&&r!==null&&"message"in r&&typeof r.message=="string"}function ws(r){if(Es(r))return r;try{return new Error(JSON.stringify(r))}catch{return new Error(String(r))}}function Kt(r){return ws(r).message}class vs{constructor(e,t){this.config=e,this.frameTransformedCount=0,this.frameFromSourceCount=0,this.startAt=0,this.reporter=new Qt(e,t)}async onFrameFromSource(){this.frameFromSourceCount++}get fps(){const{startAt:e,frameFromSourceCount:t}=this,n=(Date.now()-e)/1e3;return t/n}async onFrameTransformed(e={},t=!1){this.startAt===0&&(this.startAt=Date.now()),this.frameTransformedCount++;const{startAt:n,frameTransformedCount:i,frameFromSourceCount:s}=this,o=Date.now(),a=(o-n)/1e3,c=i/a,u=s/a;return t||this.frameTransformedCount>=this.config.loggingIntervalFrameCount?(this.frameFromSourceCount=0,this.frameTransformedCount=0,this.startAt=o,this.reporter.config=this.config,this.reporter.send({...this.config.report,variation:"QoS",fps:u,transformedFps:c,framesTransformed:i,...e})):"success"}}var Jt=(r=>(r.pipeline_ended="pipeline_ended",r.pipeline_ended_with_error="pipeline_ended_with_error",r.pipeline_started="pipeline_started",r.pipeline_started_with_error="pipeline_started_with_error",r.pipeline_restarted="pipeline_restarted",r.pipeline_restarted_with_error="pipeline_restarted_with_error",r))(Jt||{});const Ts=500,As=.8;class Is extends Y{constructor(e,t){super(),this.reporter_=new Qt,this.reporterQos_=new vs({loggingIntervalFrameCount:Ts,report:{version:dt}}),this.index_=t,this.transformer_=e,this.shouldStop_=!1,this.isFlashed_=!1,this.mediaTransformerQosReportStartTimestamp_=0,this.videoHeight_=0,this.videoWidth_=0,this.trackExpectedRate_=-1,this.transformerType_="Custom","getTransformerType"in e&&(this.transformerType_=e.getTransformerType()),this.report({variation:"Create"})}setTrackExpectedRate(e){this.trackExpectedRate_=e}async start(e){if(this.controller_=e,this.transformer_&&typeof this.transformer_.start=="function")try{await this.transformer_.start(e)}catch(t){this.report({message:le.errors.transformer_start,variation:"Error",error:Kt(t)});const n={eventMetaData:{transformerIndex:this.index_},error:t,function:"start"};this.emit("error",n)}}async transform(e,t){if(this.mediaTransformerQosReportStartTimestamp_===0&&(this.mediaTransformerQosReportStartTimestamp_=Date.now()),e instanceof VideoFrame&&(this.videoHeight_=e?.displayHeight??0,this.videoWidth_=e?.displayWidth??0),this.reporterQos_.onFrameFromSource(),this.transformer_)if(this.shouldStop_)console.warn("[Pipeline] flush from transform"),e.close(),this.flush(t),t.terminate();else{try{await this.transformer_.transform?.(e,t),this.reportQos()}catch(n){this.report({message:le.errors.transformer_transform,variation:"Error",error:Kt(n)});const i={eventMetaData:{transformerIndex:this.index_},error:n,function:"transform"};this.emit("error",i)}if(this.trackExpectedRate_!=-1&&this.trackExpectedRate_*As>this.reporterQos_.fps){const n={eventMetaData:{transformerIndex:this.index_},warningType:"fps_drop",dropInfo:{requested:this.trackExpectedRate_,current:this.reporterQos_.fps}};this.emit("warn",n)}}}async flush(e){if(this.transformer_&&typeof this.transformer_.flush=="function"&&!this.isFlashed_){this.isFlashed_=!0;try{await this.transformer_.flush(e)}catch(t){this.report({message:le.errors.transformer_flush,variation:"Error",error:Kt(t)});const n={eventMetaData:{transformerIndex:this.index_},error:t,function:"flush"};this.emit("error",n)}}this.reportQos(!0),this.report({variation:"Delete"})}stop(){console.log("[Pipeline] Stop stream."),this.controller_&&(this.flush(this.controller_),this.controller_.terminate()),this.shouldStop_=!0}report(e){this.reporter_.send({version:dt,action:"MediaTransformer",transformerType:this.transformerType_,...e})}reportQos(e=!1){this.reporterQos_.config={...this.reporterQos_.config},this.reporterQos_.onFrameTransformed({version:dt,action:"MediaTransformer",transformerType:this.transformerType_,videoWidth:this.videoWidth_,videoHeight:this.videoHeight_},e)}}class Ss extends Y{constructor(e){super(),this.transformers_=[],this.trackExpectedRate_=-1;for(let t=0;t<e.length;t++){let n=new Is(e[t],t);n.on("error",i=>{this.emit("error",i)}),n.on("warn",i=>{this.emit("warn",i)}),this.transformers_.push(n)}}setTrackExpectedRate(e){this.trackExpectedRate_=e;for(let t of this.transformers_)t.setTrackExpectedRate(this.trackExpectedRate_)}async start(e,t){if(!this.transformers_||this.transformers_.length===0){console.log("[Pipeline] No transformers.");return}try{let n=e;for(let i of this.transformers_)e=e.pipeThrough(new TransformStream(i));e.pipeTo(t).then(async()=>{console.log("[Pipeline] Setup."),await t.abort(),await n.cancel(),this.emit("pipelineInfo","pipeline_ended")}).catch(async i=>{e.cancel().then(()=>{console.log("[Pipeline] Shutting down streams after abort.")}).catch(s=>{console.error("[Pipeline] Error from stream transform:",s)}),await t.abort(i),await n.cancel(i),this.emit("pipelineInfo","pipeline_ended_with_error")})}catch{this.emit("pipelineInfo","pipeline_started_with_error"),this.destroy();return}this.emit("pipelineInfo","pipeline_started"),console.log("[Pipeline] Pipeline started.")}async destroy(){console.log("[Pipeline] Destroying Pipeline.");for(let e of this.transformers_)e.stop()}}class Rs extends Y{constructor(){super(),this.reporter_=new Qt,this.trackExpectedRate_=-1,this.report({variation:"Create"})}setTrackExpectedRate(e){this.trackExpectedRate_=e,this.pipeline_&&this.pipeline_.setTrackExpectedRate(this.trackExpectedRate_)}async transform(e,t){if(this.isTrack(e)){if(e.kind==="video"){const n=new MediaStreamTrackProcessor({track:e}),i=new VideoTrackGenerator;return this.readable_=n.readable,this.writable_=i.writable,await this.transformInternal(),i.track}throw Error("Cannot process audio tracks inside a web worker when passing a track to transform")}else return this.readable_=e,this.writable_=t,this.transformInternal()}transformInternal(){return new Promise(async(e,t)=>{if(!this.transformers_||this.transformers_.length===0){this.report({message:le.errors.transformer_none,variation:"Error"}),t("[MediaProcessor] Need to set transformers.");return}if(!this.readable_){this.report({variation:"Error",message:le.errors.readable_null}),t("[MediaProcessor] Readable is null.");return}if(!this.writable_){this.report({variation:"Error",message:le.errors.writable_null}),t("[MediaProcessor] Writable is null.");return}let n=!1;this.pipeline_&&(n=!0,this.pipeline_.clearListeners(),this.pipeline_.destroy()),this.pipeline_=new Ss(this.transformers_),this.pipeline_.on("warn",i=>{this.emit("warn",i)}),this.pipeline_.on("error",i=>{this.emit("error",i)}),this.pipeline_.on("pipelineInfo",i=>{n&&(i==="pipeline_started"?i=Jt.pipeline_restarted:i==="pipeline_started_with_error"&&(i=Jt.pipeline_restarted_with_error)),this.emit("pipelineInfo",i)}),this.trackExpectedRate_!=-1&&this.pipeline_.setTrackExpectedRate(this.trackExpectedRate_),this.pipeline_.start(this.readable_,this.writable_).then(()=>{e()}).catch(i=>{t(i)})})}setTransformers(e){return this.report({variation:"Update",message:le.updates.transformer_new}),this.transformers_=e,this.readable_&&this.writable_?this.transformInternal():Promise.resolve()}destroy(){return new Promise(async e=>{this.pipeline_&&this.pipeline_.destroy(),this.report({variation:"Delete"}),e()})}report(e){this.reporter_.send({version:dt,action:"MediaProcessor",...e})}isTrack(e){return"kind"in e}}var Fs=Object.defineProperty,Ps=(r,e,t)=>e in r?Fs(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ks=(r,e,t)=>(Ps(r,e+"",t),t);const Cs="hlg.tokbox.com/prod/logging/vcp_webrtc",Bs="https://",Ds=1e4;let ht;const Ms=new Uint8Array(16);function Os(){if(!ht&&(ht=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!ht))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return ht(Ms)}const P=[];for(let r=0;r<256;++r)P.push((r+256).toString(16).slice(1));function Us(r,e=0){return(P[r[e+0]]+P[r[e+1]]+P[r[e+2]]+P[r[e+3]]+"-"+P[r[e+4]]+P[r[e+5]]+"-"+P[r[e+6]]+P[r[e+7]]+"-"+P[r[e+8]]+P[r[e+9]]+"-"+P[r[e+10]]+P[r[e+11]]+P[r[e+12]]+P[r[e+13]]+P[r[e+14]]+P[r[e+15]]).toLowerCase()}const Ns=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),on={randomUUID:Ns};function Ls(r,e,t){if(on.randomUUID&&!e&&!r)return on.randomUUID();r=r||{};const n=r.random||(r.rng||Os)();return n[6]=n[6]&15|64,n[8]=n[8]&63|128,Us(n)}function Zt(r,e){globalThis.vonage||(globalThis.vonage={}),globalThis.vonage.workerizer||(globalThis.vonage.workerizer={});let t=globalThis.vonage.workerizer;return t[r]||(t[r]=e),t[r]}const ee=Zt("globals",{});var de=(r=>(r.INIT="INIT",r.FORWARD="FORWARD",r.TERMINATE="TERMINATE",r.GLOBALS_SYNC="GLOBALS_SYNC",r))(de||{});function an(r){return[ImageBitmap,ReadableStream,WritableStream].some(e=>r instanceof e)}let zs=0;function Gs(r,e,t,n,i){const s=zs++;return r.postMessage({id:s,type:e,functionName:t,args:n},n.filter(o=>an(o))),new Promise(o=>{i?.set(s,o)})}function Ue(r,e){const{id:t,type:n}=r,i=Array.isArray(e)?e:[e];postMessage({id:t,type:n,result:e},i.filter(s=>an(s)))}const cn=Zt("workerized",{});function un(){return typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope}async function $s(){if(un())Ue({type:de.GLOBALS_SYNC},ee);else{const r=[];for(const e in cn){const{worker:t,resolvers:n}=cn[e].workerContext;t&&r.push(Gs(t,de.GLOBALS_SYNC,"",[ee],n))}await Promise.all(r)}}function mt(r,e){if(Array.isArray(e))e.splice(0,e.length);else if(typeof e=="object")for(const t in e)delete e[t];for(const t in r)Array.isArray(r[t])?(e[t]=[],mt(r[t],e[t])):typeof r[t]=="object"?(e[t]={},mt(r[t],e[t])):e[t]=r[t]}async function Ws(r,e){const{functionName:t,args:n}=r;if(!e.instance)throw"instance not initialized";if(!t)throw"missing function name to call";if(!e.instance[t])throw`undefined function [${t}] in class ${e.instance.constructor.workerId}`;Ue(r,await e.instance[t](...n??[]))}const Vs=Zt("registeredWorkers",{});function Hs(r,e){if(!r.args)throw"Missing className while initializing worker";const[t,n]=r.args,i=Vs[t];if(i)e.instance=new i(r.args.slice(1));else throw`unknown worker class ${t}`;mt(n,ee),Ue(r,typeof e.instance!==void 0)}async function js(r,e){const{args:t}=r;if(!e.instance)throw"instance not initialized";let n;e.instance.terminate&&(n=await e.instance.terminate(...t??[])),Ue(r,n)}function Xs(r){if(!r.args)throw"Missing globals while syncing";mt(r.args[0],ee),Ue(r,{})}function Ys(){const r={};onmessage=async e=>{const t=e.data;switch(t.type){case de.INIT:Hs(t,r);break;case de.FORWARD:Ws(t,r);break;case de.TERMINATE:js(t,r);break;case de.GLOBALS_SYNC:Xs(t);break}}}un()&&Ys();function Qs(r,e){return ee[r]||(ee[r]=e),[()=>ee[r],async t=>{ee[r]=t,await $s()}]}function qs(r,e){return Qs(r,e)}const[Ks]=qs("metadata");function er(){return Ks()}class Js{constructor(e){ks(this,"uuid",Ls()),this.config=e}async send(e){var t,n,i;const{appId:s,sourceType:o}=(t=er())!=null?t:{};if(!s||!o)return"metadata missing";const a=new AbortController,c=setTimeout(()=>a.abort(),Ds);return await((i=(n=this.config)==null?void 0:n.fetch)!=null?i:fetch)(this.getUrl(),{method:"POST",headers:this.getHeaders(),body:JSON.stringify(this.buildReport(e)),signal:a.signal}),clearTimeout(c),"success"}getUrl(){var e;let t=(e=er().proxyUrl)!=null?e:Bs;return t+=(t.at(-1)==="/"?"":"/")+Cs,t}getHeaders(){return{"Content-Type":"application/json"}}buildReport(e){const t=er();return{guid:this.uuid,...e,applicationId:t.appId,timestamp:Date.now(),proxyUrl:t.proxyUrl,source:t.sourceType}}}const Zs="7.0.0-alpha.3";var pt=(r=>(r.Low="Low",r.High="High",r))(pt||{}),tr=(r=>(r.FAST="FAST",r.PRECISE="PRECISE",r))(tr||{}),gt=(r=>(r.CANVAS="CANVAS",r.WEBGL="WEBGL",r))(gt||{});function eo(){const e=new OffscreenCanvas(0,0).getContext("webgl2",{failIfMajorPerformanceCaveat:!0});if(e){const t=e?.getExtension("WEBGL_lose_context");t&&t.loseContext()}else return{supported:!1,message:"Your hardware does not perform good enough to run the library efficiently"};return{supported:!0}}class rr{constructor(){const e=new OffscreenCanvas(0,0),t=e.getContext("2d",{willReadFrequently:!0});if(!t)throw"Fail to retrieve 2d context";this.canvas=e,this.context=t}enablePostProcessing(){}disablePostProcessing(){}async profileWebgl(e){return[]}async render(e,t){return this.canvas}resizeCanvas(e){const{width:t,height:n}=e;this.canvas.width=t,this.canvas.height=n}renderSilhouette(e,t,n="none"){const{width:i,height:s}=e;this.context.save(),this.context.drawImage(t,0,0,t.width,t.height,0,0,i,s),this.context.filter="blur(5px)",this.context.globalCompositeOperation="source-in",this.context.drawImage(t,0,0,t.width,t.height,0,0,i,s),this.context.globalCompositeOperation="source-in",this.context.filter=n,this.context.drawImage(e,0,0,i,s,0,0,this.canvas.width,this.canvas.height),this.context.restore()}destroy(){}}class to extends rr{constructor(e){super(),this.radius=e}async render(e,t){super.resizeCanvas(e);const n=await createImageBitmap(t);return this.renderSilhouette(e,n),this.context.save(),this.context.filter=`blur(${this.radius}px)`,this.context.globalCompositeOperation="destination-over",this.context.drawImage(e,0,0,e.width,e.height),this.context.restore(),super.render(e,t)}}class ro extends rr{constructor(e){super(),this.radius=e}async render(e,t){super.resizeCanvas(e);const n=await createImageBitmap(t);return this.renderSilhouette(e,n,`blur(${this.radius}px)`),this.context.save(),this.context.filter="none",this.context.globalCompositeOperation="destination-over",this.context.drawImage(e,0,0,e.width,e.height),this.context.restore(),super.render(e,t)}}class no extends rr{setBackgroundImage(e){this.backgroundImage=e}async render(e,t){super.resizeCanvas(e);const n=await createImageBitmap(t);return this.renderSilhouette(e,n),this.backgroundImage&&(this.context.save(),this.context.filter="none",this.context.globalCompositeOperation="destination-over",this.context.drawImage(this.backgroundImage,0,0,this.backgroundImage.width,this.backgroundImage.height,0,0,e.width,e.height),this.context.restore()),super.render(e,t)}}const nr=5120,Ne=5121,ir=5122,sr=5123,or=5124,ar=5125,cr=5126,io=32819,so=32820,oo=33635,ao=5131,co=33640,uo=35899,fo=35902,lo=36269,ho=34042,fn={};{const r=fn;r[nr]=Int8Array,r[Ne]=Uint8Array,r[ir]=Int16Array,r[sr]=Uint16Array,r[or]=Int32Array,r[ar]=Uint32Array,r[cr]=Float32Array,r[io]=Uint16Array,r[so]=Uint16Array,r[oo]=Uint16Array,r[ao]=Uint16Array,r[co]=Uint32Array,r[uo]=Uint32Array,r[fo]=Uint32Array,r[lo]=Uint32Array,r[ho]=Uint32Array}function ur(r){if(r instanceof Int8Array)return nr;if(r instanceof Uint8Array||r instanceof Uint8ClampedArray)return Ne;if(r instanceof Int16Array)return ir;if(r instanceof Uint16Array)return sr;if(r instanceof Int32Array)return or;if(r instanceof Uint32Array)return ar;if(r instanceof Float32Array)return cr;throw new Error("unsupported typed array type")}function ln(r){if(r===Int8Array)return nr;if(r===Uint8Array||r===Uint8ClampedArray)return Ne;if(r===Int16Array)return ir;if(r===Uint16Array)return sr;if(r===Int32Array)return or;if(r===Uint32Array)return ar;if(r===Float32Array)return cr;throw new Error("unsupported typed array type")}function dn(r){const e=fn[r];if(!e)throw new Error("unknown gl type");return e}const yt=typeof SharedArrayBuffer<"u"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function hn(...r){console.error(...r)}const mn=new Map;function bt(r,e){if(!r||typeof r!="object")return!1;let t=mn.get(e);t||(t=new WeakMap,mn.set(e,t));let n=t.get(r);if(n===void 0){const i=Object.prototype.toString.call(r);n=i.substring(8,i.length-1)===e,t.set(r,n)}return n}function mo(r,e){return typeof WebGLBuffer<"u"&&bt(e,"WebGLBuffer")}function po(r,e){return typeof WebGLRenderbuffer<"u"&&bt(e,"WebGLRenderbuffer")}function fr(r,e){return typeof WebGLTexture<"u"&&bt(e,"WebGLTexture")}function go(r,e){return typeof WebGLSampler<"u"&&bt(e,"WebGLSampler")}const pn=35044,he=34962,yo=34963,bo=34660,xo=5120,_o=5121,Eo=5122,wo=5123,vo=5124,To=5125,gn=5126,yn={attribPrefix:""};function Ao(r,e,t,n,i){r.bindBuffer(e,t),r.bufferData(e,n,i||pn)}function bn(r,e,t,n){if(mo(r,e))return e;t=t||he;const i=r.createBuffer();return Ao(r,t,i,e,n),i}function xn(r){return r==="indices"}function Io(r){return r===Int8Array||r===Uint8Array}function So(r){return r.length?r:r.data}const Ro=/coord|texture/i,Fo=/color|colour/i;function Po(r,e){let t;if(Ro.test(r)?t=2:Fo.test(r)?t=4:t=3,e%t>0)throw new Error(`Can not guess numComponents for attribute \'${r}\'. Tried ${t} but ${e} values is not evenly divisible by ${t}. You should specify it.`);return t}function ko(r,e,t){return r.numComponents||r.size||Po(e,t||So(r).length)}function _n(r,e){if(yt(r))return r;if(yt(r.data))return r.data;Array.isArray(r)&&(r={data:r});let t=r.type?lr(r.type):void 0;return t||(xn(e)?t=Uint16Array:t=Float32Array),new t(r.data)}function Co(r){return typeof r=="number"?r:r?ln(r):gn}function lr(r){return typeof r=="number"?dn(r):r||Float32Array}function Bo(r,e){return{buffer:e.buffer,numValues:24,type:Co(e.type),arrayType:lr(e.type)}}function Do(r,e){const t=e.data||e,n=lr(e.type),i=t*n.BYTES_PER_ELEMENT,s=r.createBuffer();return r.bindBuffer(he,s),r.bufferData(he,i,e.drawType||pn),{buffer:s,numValues:t,type:ln(n),arrayType:n}}function Mo(r,e,t){const n=_n(e,t);return{arrayType:n.constructor,buffer:bn(r,n,void 0,e.drawType),type:ur(n),numValues:0}}function Oo(r,e){const t={};return Object.keys(e).forEach(function(n){if(!xn(n)){const i=e[n],s=i.attrib||i.name||i.attribName||yn.attribPrefix+n;if(i.value){if(!Array.isArray(i.value)&&!yt(i.value))throw new Error("array.value is not array or typedarray");t[s]={value:i.value}}else{let o;i.buffer&&i.buffer instanceof WebGLBuffer?o=Bo:typeof i=="number"||typeof i.data=="number"?o=Do:o=Mo;const{buffer:a,type:c,numValues:u,arrayType:d}=o(r,i,n),m=i.normalize!==void 0?i.normalize:Io(d),p=ko(i,n,u);t[s]={buffer:a,numComponents:p,type:c,normalize:m,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),r.bindBuffer(he,null),t}function Uo(r,e){return e===xo||e===_o?1:e===Eo||e===wo?2:e===vo||e===To||e===gn?4:0}const dr=["position","positions","a_position"];function No(r,e){let t,n;for(n=0;n<dr.length&&(t=dr[n],!(t in e||(t=yn.attribPrefix+t,t in e)));++n);n===dr.length&&(t=Object.keys(e)[0]);const i=e[t];if(!i.buffer)return 1;r.bindBuffer(he,i.buffer);const s=r.getBufferParameter(he,bo);r.bindBuffer(he,null);const o=Uo(r,i.type),a=s/o,c=i.numComponents||i.size,u=a/c;if(u%1!==0)throw new Error(`numComponents ${c} not correct for length ${length}`);return u}function Lo(r,e,t){const n=Oo(r,e),i=Object.assign({},t||{});i.attribs=Object.assign({},t?t.attribs:{},n);const s=e.indices;if(s){const o=_n(s,"indices");i.indices=bn(r,o,yo),i.numElements=o.length,i.elementType=ur(o)}else i.numElements||(i.numElements=No(r,i.attribs));return i}function Le(r){return!!r.texStorage2D}const En=(function(){const r={},e={};function t(n){const i=n.constructor.name;if(!r[i]){for(const s in n)if(typeof n[s]=="number"){const o=e[n[s]];e[n[s]]=o?`${o} | ${s}`:s}r[i]=!0}}return function(i,s){return t(i),e[s]||(typeof s=="number"?`0x${s.toString(16)}`:s)}})(),te={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},ze=yt,wn=(function(){let r;return function(){return r=r||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),r}})(),vn=6406,V=6407,A=6408,Tn=6409,An=6410,Ge=6402,In=34041,xt=33071,zo=9728,Go=9729,re=3553,ne=34067,me=32879,pe=35866,hr=34069,$o=34070,Wo=34071,Vo=34072,Ho=34073,jo=34074,mr=10241,pr=10240,_t=10242,Et=10243,Sn=32882,Xo=33082,Yo=33083,Qo=33084,qo=33085,Ko=34892,Jo=34893,gr=3317,Rn=3314,Fn=32878,Pn=3316,kn=3315,Cn=32877,Zo=37443,ea=37441,ta=37440,ra=33321,na=36756,ia=33325,sa=33326,oa=33330,aa=33329,ca=33338,ua=33337,fa=33340,la=33339,da=33323,ha=36757,ma=33327,pa=33328,ga=33336,ya=33335,ba=33332,xa=33331,_a=33334,Ea=33333,wa=32849,va=35905,Ta=36194,Aa=36758,Ia=35898,Sa=35901,Ra=34843,Fa=34837,Pa=36221,ka=36239,Ca=36215,Ba=36233,Da=36209,Ma=36227,Oa=32856,Ua=35907,Na=36759,La=32855,za=32854,Ga=32857,$a=34842,Wa=34836,Va=36220,Ha=36238,ja=36975,Xa=36214,Ya=36232,Qa=36226,qa=36208,Ka=33189,Ja=33190,Za=36012,ec=36013,tc=35056,ie=5120,T=5121,wt=5122,Se=5123,vt=5124,ge=5125,B=5126,Bn=32819,Dn=32820,Mn=33635,z=5131,$e=36193,yr=33640,rc=35899,nc=35902,ic=36269,sc=34042,Tt=33319,Re=33320,At=6403,Fe=36244,Pe=36248,ye=36249;let br;function It(r){if(!br){const e={};e[vn]={textureFormat:vn,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[T,z,$e,B]},e[Tn]={textureFormat:Tn,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[T,z,$e,B]},e[An]={textureFormat:An,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[T,z,$e,B]},e[V]={textureFormat:V,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[T,z,$e,B,Mn]},e[A]={textureFormat:A,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[T,z,$e,B,Bn,Dn]},e[Ge]={textureFormat:Ge,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[ge,Se]},e[ra]={textureFormat:At,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[T]},e[na]={textureFormat:At,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[ie]},e[ia]={textureFormat:At,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[B,z]},e[sa]={textureFormat:At,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[B]},e[oa]={textureFormat:Fe,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[T]},e[aa]={textureFormat:Fe,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ie]},e[ba]={textureFormat:Fe,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Se]},e[xa]={textureFormat:Fe,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[wt]},e[_a]={textureFormat:Fe,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ge]},e[Ea]={textureFormat:Fe,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[vt]},e[da]={textureFormat:Tt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[T]},e[ha]={textureFormat:Tt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[ie]},e[ma]={textureFormat:Tt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[B,z]},e[pa]={textureFormat:Tt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[B]},e[ga]={textureFormat:Re,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[T]},e[ya]={textureFormat:Re,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ie]},e[ca]={textureFormat:Re,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Se]},e[ua]={textureFormat:Re,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[wt]},e[fa]={textureFormat:Re,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ge]},e[la]={textureFormat:Re,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[vt]},e[wa]={textureFormat:V,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[T]},e[va]={textureFormat:V,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[T]},e[Ta]={textureFormat:V,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[T,Mn]},e[Aa]={textureFormat:V,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ie]},e[Ia]={textureFormat:V,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[B,z,rc]},e[Sa]={textureFormat:V,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[B,z,nc]},e[Ra]={textureFormat:V,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[B,z]},e[Fa]={textureFormat:V,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[B]},e[Pa]={textureFormat:Pe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[T]},e[ka]={textureFormat:Pe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ie]},e[Ca]={textureFormat:Pe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Se]},e[Ba]={textureFormat:Pe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[wt]},e[Da]={textureFormat:Pe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ge]},e[Ma]={textureFormat:Pe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[vt]},e[Oa]={textureFormat:A,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[T]},e[Ua]={textureFormat:A,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[T]},e[Na]={textureFormat:A,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[ie]},e[La]={textureFormat:A,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[T,Dn,yr]},e[za]={textureFormat:A,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[T,Bn]},e[Ga]={textureFormat:A,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[yr]},e[$a]={textureFormat:A,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[B,z]},e[Wa]={textureFormat:A,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[B]},e[Va]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[T]},e[Ha]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ie]},e[ja]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[yr]},e[Xa]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Se]},e[Ya]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[wt]},e[Qa]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[vt]},e[qa]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[ge]},e[Ka]={textureFormat:Ge,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Se,ge]},e[Ja]={textureFormat:Ge,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ge]},e[Za]={textureFormat:Ge,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[B]},e[tc]={textureFormat:In,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[sc]},e[ec]={textureFormat:In,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ic]},Object.keys(e).forEach(function(t){const n=e[t];n.bytesPerElementMap={},n.bytesPerElement.forEach(function(i,s){const o=n.type[s];n.bytesPerElementMap[o]=i})}),br=e}return br[r]}function oc(r,e){const t=It(r);if(!t)throw"unknown internal format";const n=t.bytesPerElementMap[e];if(n===void 0)throw"unknown internal format";return n}function We(r){const e=It(r);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function On(r){return(r&r-1)===0}function ac(r,e,t,n){if(!Le(r))return On(e)&&On(t);const i=It(n);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function cc(r){const e=It(r);if(!e)throw"unknown internal format";return e.textureFilterable}function uc(r,e,t){return ze(e)?ur(e):t||T}function St(r,e,t,n,i){if(i%1!==0)throw"can\'t guess dimensions";if(!t&&!n){const s=Math.sqrt(i/(e===ne?6:1));s%1===0?(t=s,n=s):(t=i,n=1)}else if(n){if(!t&&(t=i/n,t%1))throw"can\'t guess dimensions"}else if(n=i/t,n%1)throw"can\'t guess dimensions";return{width:t,height:n}}function ke(r,e){e.colorspaceConversion!==void 0&&r.pixelStorei(Zo,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&r.pixelStorei(ea,e.premultiplyAlpha),e.flipY!==void 0&&r.pixelStorei(ta,e.flipY)}function Un(r){r.pixelStorei(gr,4),Le(r)&&(r.pixelStorei(Rn,0),r.pixelStorei(Fn,0),r.pixelStorei(Pn,0),r.pixelStorei(kn,0),r.pixelStorei(Cn,0))}function fc(r,e,t,n){n.minMag&&(t.call(r,e,mr,n.minMag),t.call(r,e,pr,n.minMag)),n.min&&t.call(r,e,mr,n.min),n.mag&&t.call(r,e,pr,n.mag),n.wrap&&(t.call(r,e,_t,n.wrap),t.call(r,e,Et,n.wrap),(e===me||go(r,e))&&t.call(r,e,Sn,n.wrap)),n.wrapR&&t.call(r,e,Sn,n.wrapR),n.wrapS&&t.call(r,e,_t,n.wrapS),n.wrapT&&t.call(r,e,Et,n.wrapT),n.minLod!==void 0&&t.call(r,e,Xo,n.minLod),n.maxLod!==void 0&&t.call(r,e,Yo,n.maxLod),n.baseLevel!==void 0&&t.call(r,e,Qo,n.baseLevel),n.maxLevel!==void 0&&t.call(r,e,qo,n.maxLevel),n.compareFunc!==void 0&&t.call(r,e,Jo,n.compareFunc),n.compareMode!==void 0&&t.call(r,e,Ko,n.compareMode)}function Nn(r,e,t){const n=t.target||re;r.bindTexture(n,e),fc(r,n,r.texParameteri,t)}function lc(r){return r=r||te.textureColor,ze(r)?r:new Uint8Array([r[0]*255,r[1]*255,r[2]*255,r[3]*255])}function xr(r,e,t,n,i,s){t=t||te.textureOptions,s=s||A;const o=t.target||re;if(n=n||t.width,i=i||t.height,r.bindTexture(o,e),ac(r,n,i,s))r.generateMipmap(o);else{const a=cc(s)?Go:zo;r.texParameteri(o,mr,a),r.texParameteri(o,pr,a),r.texParameteri(o,_t,xt),r.texParameteri(o,Et,xt)}}function Ve(r){return r.auto===!0||r.auto===void 0&&r.level===void 0}function _r(r,e){return e=e||{},e.cubeFaceOrder||[hr,$o,Wo,Vo,Ho,jo]}function Er(r,e){const n=_r(r,e).map(function(i,s){return{face:i,ndx:s}});return n.sort(function(i,s){return i.face-s.face}),n}function Ln(r,e,t,n){n=n||te.textureOptions;const i=n.target||re,s=n.level||0;let o=t.width,a=t.height;const c=n.internalFormat||n.format||A,u=We(c),d=n.format||u.format,m=n.type||u.type;if(ke(r,n),r.bindTexture(i,e),i===ne){const p=t.width,y=t.height;let l,b;if(p/6===y)l=y,b=[0,0,1,0,2,0,3,0,4,0,5,0];else if(y/6===p)l=p,b=[0,0,0,1,0,2,0,3,0,4,0,5];else if(p/3===y/2)l=p/3,b=[0,0,1,0,2,0,0,1,1,1,2,1];else if(p/2===y/3)l=p/2,b=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can\'t figure out cube map from element: "+(t.src?t.src:t.nodeName);const _=wn();_?(_.canvas.width=l,_.canvas.height=l,o=l,a=l,Er(r,n).forEach(function(E){const R=b[E.ndx*2+0]*l,k=b[E.ndx*2+1]*l;_.drawImage(t,R,k,l,l,0,0,l,l),r.texImage2D(E.face,s,c,d,m,_.canvas)}),_.canvas.width=1,_.canvas.height=1):typeof createImageBitmap<"u"&&(o=l,a=l,Er(r,n).forEach(function(E){const R=b[E.ndx*2+0]*l,k=b[E.ndx*2+1]*l;r.texImage2D(E.face,s,c,l,l,0,d,m,null),createImageBitmap(t,R,k,l,l,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(N){ke(r,n),r.bindTexture(i,e),r.texImage2D(E.face,s,c,d,m,N),Ve(n)&&xr(r,e,n,o,a,c)})}))}else if(i===me||i===pe){const p=Math.min(t.width,t.height),y=Math.max(t.width,t.height),l=y/p;if(l%1!==0)throw"can not compute 3D dimensions of element";const b=t.width===y?1:0,_=t.height===y?1:0;r.pixelStorei(gr,1),r.pixelStorei(Rn,t.width),r.pixelStorei(Fn,0),r.pixelStorei(Cn,0),r.texImage3D(i,s,c,p,p,p,0,d,m,null);for(let E=0;E<l;++E){const R=E*p*b,k=E*p*_;r.pixelStorei(Pn,R),r.pixelStorei(kn,k),r.texSubImage3D(i,s,0,0,E,p,p,1,d,m,t)}Un(r)}else r.texImage2D(i,s,c,d,m,t);Ve(n)&&xr(r,e,n,o,a,c),Nn(r,e,n)}function He(){}function dc(r){if(typeof document<"u"){const e=document.createElement("a");return e.href=r,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(r,location.href).origin===e}}function hc(r,e){return e===void 0&&!dc(r)?"anonymous":e}function mc(r,e,t){t=t||He;let n;if(e=e!==void 0?e:te.crossOrigin,e=hc(r,e),typeof Image<"u"){n=new Image,e!==void 0&&(n.crossOrigin=e);const i=function(){n.removeEventListener("error",s),n.removeEventListener("load",o),n=null},s=function(){const c="couldn\'t load image: "+r;hn(c),t(c,n),i()},o=function(){t(null,n),i()};return n.addEventListener("error",s),n.addEventListener("load",o),n.src=r,n}else if(typeof ImageBitmap<"u"){let i,s;const o=function(){t(i,s)},a={};e&&(a.mode="cors"),fetch(r,a).then(function(c){if(!c.ok)throw c;return c.blob()}).then(function(c){return createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(c){s=c,setTimeout(o)}).catch(function(c){i=c,setTimeout(o)}),n=null}return n}function zn(r){return typeof ImageBitmap<"u"&&r instanceof ImageBitmap||typeof ImageData<"u"&&r instanceof ImageData||typeof HTMLElement<"u"&&r instanceof HTMLElement}function wr(r,e,t){return zn(r)?(setTimeout(function(){t(null,r)}),r):mc(r,e,t)}function vr(r,e,t){t=t||te.textureOptions;const n=t.target||re;if(r.bindTexture(n,e),t.color===!1)return;const i=lc(t.color);if(n===ne)for(let s=0;s<6;++s)r.texImage2D(hr+s,0,A,1,1,0,A,T,i);else n===me||n===pe?r.texImage3D(n,0,A,1,1,1,0,A,T,i):r.texImage2D(n,0,A,1,1,0,A,T,i)}function pc(r,e,t,n){return n=n||He,t=t||te.textureOptions,vr(r,e,t),t=Object.assign({},t),wr(t.src,t.crossOrigin,function(s,o){s?n(s,e,o):(Ln(r,e,o,t),n(null,e,o))})}function gc(r,e,t,n){n=n||He;const i=t.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const s=t.level||0,o=t.internalFormat||t.format||A,a=We(o),c=t.format||a.format,u=t.type||T,d=t.target||re;if(d!==ne)throw"target must be TEXTURE_CUBE_MAP";vr(r,e,t),t=Object.assign({},t);let m=6;const p=[],y=_r(r,t);let l;function b(_){return function(E,R){--m,E?p.push(E):R.width!==R.height?p.push("cubemap face img is not a square: "+R.src):(ke(r,t),r.bindTexture(d,e),m===5?_r().forEach(function(k){r.texImage2D(k,s,o,c,u,R)}):r.texImage2D(_,s,o,c,u,R),Ve(t)&&r.generateMipmap(d)),m===0&&n(p.length?p:void 0,e,l)}}l=i.map(function(_,E){return wr(_,t.crossOrigin,b(y[E]))})}function yc(r,e,t,n){n=n||He;const i=t.src,s=t.internalFormat||t.format||A,o=We(s),a=t.format||o.format,c=t.type||T,u=t.target||pe;if(u!==me&&u!==pe)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";vr(r,e,t),t=Object.assign({},t);let d=i.length;const m=[];let p;const y=t.level||0;let l=t.width,b=t.height;const _=i.length;let E=!0;function R(k){return function(N,Q){if(--d,N)m.push(N);else{if(ke(r,t),r.bindTexture(u,e),E){E=!1,l=t.width||Q.width,b=t.height||Q.height,r.texImage3D(u,y,s,l,b,_,0,a,c,null);for(let q=0;q<_;++q)r.texSubImage3D(u,y,0,0,q,l,b,1,a,c,Q)}else{let q=Q,L;(Q.width!==l||Q.height!==b)&&(L=wn(),q=L.canvas,L.canvas.width=l,L.canvas.height=b,L.drawImage(Q,0,0,l,b)),r.texSubImage3D(u,y,0,0,k,l,b,1,a,c,q),L&&q===L.canvas&&(L.canvas.width=0,L.canvas.height=0)}Ve(t)&&r.generateMipmap(u)}d===0&&n(m.length?m:void 0,e,p)}}p=i.map(function(k,N){return wr(k,t.crossOrigin,R(N))})}function bc(r,e,t,n){n=n||te.textureOptions;const i=n.target||re;r.bindTexture(i,e);let s=n.width,o=n.height,a=n.depth;const c=n.level||0,u=n.internalFormat||n.format||A,d=We(u),m=n.format||d.format,p=n.type||uc(r,t,d.type);if(ze(t))t instanceof Uint8ClampedArray&&(t=new Uint8Array(t.buffer));else{const _=dn(p);t=new _(t)}const y=oc(u,p),l=t.byteLength/y;if(l%1)throw"length wrong size for format: "+En(r,m);let b;if(i===me||i===pe)if(!s&&!o&&!a){const _=Math.cbrt(l);if(_%1!==0)throw"can\'t guess cube size of array of numElements: "+l;s=_,o=_,a=_}else s&&(!o||!a)?(b=St(r,i,o,a,l/s),o=b.width,a=b.height):o&&(!s||!a)?(b=St(r,i,s,a,l/o),s=b.width,a=b.height):(b=St(r,i,s,o,l/a),s=b.width,o=b.height);else b=St(r,i,s,o,l),s=b.width,o=b.height;if(Un(r),r.pixelStorei(gr,n.unpackAlignment||1),ke(r,n),i===ne){const _=y/t.BYTES_PER_ELEMENT,E=l/6*_;Er(r,n).forEach(R=>{const k=E*R.ndx,N=t.subarray(k,k+E);r.texImage2D(R.face,c,u,s,o,0,m,p,N)})}else i===me||i===pe?r.texImage3D(i,c,u,s,o,a,0,m,p,t):r.texImage2D(i,c,u,s,o,0,m,p,t);return{width:s,height:o,depth:a,type:p}}function xc(r,e,t){const n=t.target||re;r.bindTexture(n,e);const i=t.level||0,s=t.internalFormat||t.format||A,o=We(s),a=t.format||o.format,c=t.type||o.type;if(ke(r,t),n===ne)for(let u=0;u<6;++u)r.texImage2D(hr+u,i,s,t.width,t.height,0,a,c,null);else n===me||n===pe?r.texImage3D(n,i,s,t.width,t.height,t.depth,0,a,c,null):r.texImage2D(n,i,s,t.width,t.height,0,a,c,null)}function Gn(r,e,t){t=t||He,e=e||te.textureOptions;const n=r.createTexture(),i=e.target||re;let s=e.width||1,o=e.height||1;const a=e.internalFormat||A;r.bindTexture(i,n),i===ne&&(r.texParameteri(i,_t,xt),r.texParameteri(i,Et,xt));let c=e.src;if(c)if(typeof c=="function"&&(c=c(r,e)),typeof c=="string")pc(r,n,e,t);else if(ze(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||ze(c[0]))){const u=bc(r,n,c,e);s=u.width,o=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||zn(c[0]))?i===ne?gc(r,n,e,t):yc(r,n,e,t):(Ln(r,n,c,e),s=c.width,o=c.height);else xc(r,n,e);return Ve(e)&&xr(r,n,e,s,o,a),Nn(r,n,e),n}const Tr=hn;function $n(r){return typeof document<"u"&&document.getElementById?document.getElementById(r):null}const Rt=33984,Ft=34962,_c=34963,Ec=35713,wc=35714,vc=35632,Tc=35633,Ac=35981,Wn=35718,Ic=35721,Sc=35971,Rc=35382,Fc=35396,Pc=35398,kc=35392,Cc=35395,Pt=5126,Vn=35664,Hn=35665,jn=35666,Ar=5124,Xn=35667,Yn=35668,Qn=35669,qn=35670,Kn=35671,Jn=35672,Zn=35673,ei=35674,ti=35675,ri=35676,Bc=35678,Dc=35680,Mc=35679,Oc=35682,Uc=35685,Nc=35686,Lc=35687,zc=35688,Gc=35689,$c=35690,Wc=36289,Vc=36292,Hc=36293,Ir=5125,ni=36294,ii=36295,si=36296,jc=36298,Xc=36299,Yc=36300,Qc=36303,qc=36306,Kc=36307,Jc=36308,Zc=36311,kt=3553,Ct=34067,Sr=32879,Bt=35866,x={};function oi(r,e){return x[e].bindPoint}function eu(r,e){return function(t){r.uniform1f(e,t)}}function tu(r,e){return function(t){r.uniform1fv(e,t)}}function ru(r,e){return function(t){r.uniform2fv(e,t)}}function nu(r,e){return function(t){r.uniform3fv(e,t)}}function iu(r,e){return function(t){r.uniform4fv(e,t)}}function ai(r,e){return function(t){r.uniform1i(e,t)}}function ci(r,e){return function(t){r.uniform1iv(e,t)}}function ui(r,e){return function(t){r.uniform2iv(e,t)}}function fi(r,e){return function(t){r.uniform3iv(e,t)}}function li(r,e){return function(t){r.uniform4iv(e,t)}}function su(r,e){return function(t){r.uniform1ui(e,t)}}function ou(r,e){return function(t){r.uniform1uiv(e,t)}}function au(r,e){return function(t){r.uniform2uiv(e,t)}}function cu(r,e){return function(t){r.uniform3uiv(e,t)}}function uu(r,e){return function(t){r.uniform4uiv(e,t)}}function fu(r,e){return function(t){r.uniformMatrix2fv(e,!1,t)}}function lu(r,e){return function(t){r.uniformMatrix3fv(e,!1,t)}}function du(r,e){return function(t){r.uniformMatrix4fv(e,!1,t)}}function hu(r,e){return function(t){r.uniformMatrix2x3fv(e,!1,t)}}function mu(r,e){return function(t){r.uniformMatrix3x2fv(e,!1,t)}}function pu(r,e){return function(t){r.uniformMatrix2x4fv(e,!1,t)}}function gu(r,e){return function(t){r.uniformMatrix4x2fv(e,!1,t)}}function yu(r,e){return function(t){r.uniformMatrix3x4fv(e,!1,t)}}function bu(r,e){return function(t){r.uniformMatrix4x3fv(e,!1,t)}}function O(r,e,t,n){const i=oi(r,e);return Le(r)?function(s){let o,a;!s||fr(r,s)?(o=s,a=null):(o=s.texture,a=s.sampler),r.uniform1i(n,t),r.activeTexture(Rt+t),r.bindTexture(i,o),r.bindSampler(t,a)}:function(s){r.uniform1i(n,t),r.activeTexture(Rt+t),r.bindTexture(i,s)}}function U(r,e,t,n,i){const s=oi(r,e),o=new Int32Array(i);for(let a=0;a<i;++a)o[a]=t+a;return Le(r)?function(a){r.uniform1iv(n,o),a.forEach(function(c,u){r.activeTexture(Rt+o[u]);let d,m;!c||fr(r,c)?(d=c,m=null):(d=c.texture,m=c.sampler),r.bindSampler(t,m),r.bindTexture(s,d)})}:function(a){r.uniform1iv(n,o),a.forEach(function(c,u){r.activeTexture(Rt+o[u]),r.bindTexture(s,c)})}}x[Pt]={Type:Float32Array,size:4,setter:eu,arraySetter:tu},x[Vn]={Type:Float32Array,size:8,setter:ru,cols:2},x[Hn]={Type:Float32Array,size:12,setter:nu,cols:3},x[jn]={Type:Float32Array,size:16,setter:iu,cols:4},x[Ar]={Type:Int32Array,size:4,setter:ai,arraySetter:ci},x[Xn]={Type:Int32Array,size:8,setter:ui,cols:2},x[Yn]={Type:Int32Array,size:12,setter:fi,cols:3},x[Qn]={Type:Int32Array,size:16,setter:li,cols:4},x[Ir]={Type:Uint32Array,size:4,setter:su,arraySetter:ou},x[ni]={Type:Uint32Array,size:8,setter:au,cols:2},x[ii]={Type:Uint32Array,size:12,setter:cu,cols:3},x[si]={Type:Uint32Array,size:16,setter:uu,cols:4},x[qn]={Type:Uint32Array,size:4,setter:ai,arraySetter:ci},x[Kn]={Type:Uint32Array,size:8,setter:ui,cols:2},x[Jn]={Type:Uint32Array,size:12,setter:fi,cols:3},x[Zn]={Type:Uint32Array,size:16,setter:li,cols:4},x[ei]={Type:Float32Array,size:32,setter:fu,rows:2,cols:2},x[ti]={Type:Float32Array,size:48,setter:lu,rows:3,cols:3},x[ri]={Type:Float32Array,size:64,setter:du,rows:4,cols:4},x[Uc]={Type:Float32Array,size:32,setter:hu,rows:2,cols:3},x[Nc]={Type:Float32Array,size:32,setter:pu,rows:2,cols:4},x[Lc]={Type:Float32Array,size:48,setter:mu,rows:3,cols:2},x[zc]={Type:Float32Array,size:48,setter:yu,rows:3,cols:4},x[Gc]={Type:Float32Array,size:64,setter:gu,rows:4,cols:2},x[$c]={Type:Float32Array,size:64,setter:bu,rows:4,cols:3},x[Bc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:kt},x[Dc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Ct},x[Mc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Sr},x[Oc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:kt},x[Wc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Bt},x[Vc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Bt},x[Hc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Ct},x[jc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:kt},x[Xc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Sr},x[Yc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Ct},x[Qc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Bt},x[qc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:kt},x[Kc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Sr},x[Jc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Ct},x[Zc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Bt};function Dt(r,e){return function(t){if(t.value)switch(r.disableVertexAttribArray(e),t.value.length){case 4:r.vertexAttrib4fv(e,t.value);break;case 3:r.vertexAttrib3fv(e,t.value);break;case 2:r.vertexAttrib2fv(e,t.value);break;case 1:r.vertexAttrib1fv(e,t.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else r.bindBuffer(Ft,t.buffer),r.enableVertexAttribArray(e),r.vertexAttribPointer(e,t.numComponents||t.size,t.type||Pt,t.normalize||!1,t.stride||0,t.offset||0),r.vertexAttribDivisor&&r.vertexAttribDivisor(e,t.divisor||0)}}function se(r,e){return function(t){if(t.value)if(r.disableVertexAttribArray(e),t.value.length===4)r.vertexAttrib4iv(e,t.value);else throw new Error("The length of an integer constant value must be 4!");else r.bindBuffer(Ft,t.buffer),r.enableVertexAttribArray(e),r.vertexAttribIPointer(e,t.numComponents||t.size,t.type||Ar,t.stride||0,t.offset||0),r.vertexAttribDivisor&&r.vertexAttribDivisor(e,t.divisor||0)}}function Mt(r,e){return function(t){if(t.value)if(r.disableVertexAttribArray(e),t.value.length===4)r.vertexAttrib4uiv(e,t.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else r.bindBuffer(Ft,t.buffer),r.enableVertexAttribArray(e),r.vertexAttribIPointer(e,t.numComponents||t.size,t.type||Ir,t.stride||0,t.offset||0),r.vertexAttribDivisor&&r.vertexAttribDivisor(e,t.divisor||0)}}function Rr(r,e,t){const n=t.size,i=t.count;return function(s){r.bindBuffer(Ft,s.buffer);const o=s.size||s.numComponents||n,a=o/i,c=s.type||Pt,d=x[c].size*o,m=s.normalize||!1,p=s.offset||0,y=d/i;for(let l=0;l<i;++l)r.enableVertexAttribArray(e+l),r.vertexAttribPointer(e+l,a,c,m,d,p+y*l),r.vertexAttribDivisor&&r.vertexAttribDivisor(e+l,s.divisor||0)}}const I={};I[Pt]={size:4,setter:Dt},I[Vn]={size:8,setter:Dt},I[Hn]={size:12,setter:Dt},I[jn]={size:16,setter:Dt},I[Ar]={size:4,setter:se},I[Xn]={size:8,setter:se},I[Yn]={size:12,setter:se},I[Qn]={size:16,setter:se},I[Ir]={size:4,setter:Mt},I[ni]={size:8,setter:Mt},I[ii]={size:12,setter:Mt},I[si]={size:16,setter:Mt},I[qn]={size:4,setter:se},I[Kn]={size:8,setter:se},I[Jn]={size:12,setter:se},I[Zn]={size:16,setter:se},I[ei]={size:4,setter:Rr,count:2},I[ti]={size:9,setter:Rr,count:3},I[ri]={size:16,setter:Rr,count:4};const xu=/ERROR:\\s*\\d+:(\\d+)/gi;function _u(r,e="",t=0){const n=[...e.matchAll(xu)],i=new Map(n.map((s,o)=>{const a=parseInt(s[1]),c=n[o+1],u=c?c.index:e.length,d=e.substring(s.index,u);return[a-1,d]}));return r.split(`\n`).map((s,o)=>{const a=i.get(o);return`${o+1+t}: ${s}${a?`\n\n^^^ ${a}`:""}`}).join(`\n`)}const di=/^[ \\t]*\\n/;function hi(r){let e=0;return di.test(r)&&(e=1,r=r.replace(di,"")),{lineOffset:e,shaderSource:r}}function Eu(r,e){return r.errorCallback(e),r.callback&&setTimeout(()=>{r.callback(`${e}\n${r.errors.join(`\n`)}`)}),null}function wu(r,e,t,n){if(n=n||Tr,!r.getShaderParameter(t,Ec)){const s=r.getShaderInfoLog(t),{lineOffset:o,shaderSource:a}=hi(r.getShaderSource(t)),c=`${_u(a,s,o)}\nError compiling ${En(r,e)}: ${s}`;return n(c),c}return""}function Fr(r,e,t){let n,i,s;if(typeof e=="function"&&(t=e,e=void 0),typeof r=="function")t=r,r=void 0;else if(r&&!Array.isArray(r)){const u=r;t=u.errorCallback,r=u.attribLocations,n=u.transformFeedbackVaryings,i=u.transformFeedbackMode,s=u.callback}const o=t||Tr,a=[],c={errorCallback(u,...d){a.push(u),o(u,...d)},transformFeedbackVaryings:n,transformFeedbackMode:i,callback:s,errors:a};{let u={};Array.isArray(r)?r.forEach(function(d,m){u[d]=e?e[m]:m}):u=r||{},c.attribLocations=u}return c}const vu=["VERTEX_SHADER","FRAGMENT_SHADER"];function Tu(r,e){if(e.indexOf("frag")>=0)return vc;if(e.indexOf("vert")>=0)return Tc}function Au(r,e,t){const n=r.getAttachedShaders(e);for(const i of n)t.has(i)&&r.deleteShader(i);r.deleteProgram(e)}const Iu=(r=0)=>new Promise(e=>setTimeout(e,r));function Su(r,e,t){const n=r.createProgram(),{attribLocations:i,transformFeedbackVaryings:s,transformFeedbackMode:o}=Fr(t);for(let a=0;a<e.length;++a){let c=e[a];if(typeof c=="string"){const u=$n(c),d=u?u.text:c;let m=r[vu[a]];u&&u.type&&(m=Tu(r,u.type)||m),c=r.createShader(m),r.shaderSource(c,hi(d).shaderSource),r.compileShader(c),r.attachShader(n,c)}}Object.entries(i).forEach(([a,c])=>r.bindAttribLocation(n,c,a));{let a=s;a&&(a.attribs&&(a=a.attribs),Array.isArray(a)||(a=Object.keys(a)),r.transformFeedbackVaryings(n,a,o||Ac))}return r.linkProgram(n),n}function Ru(r,e,t,n,i){const s=Fr(t,n,i),o=new Set(e),a=Su(r,e,s);function c(u,d){const m=Pu(u,d,s.errorCallback);return m&&Au(u,d,o),m}if(s.callback){Fu(r,a).then(()=>{const u=c(r,a);s.callback(u,u?void 0:a)});return}return c(r,a)?void 0:a}async function Fu(r,e){const t=r.getExtension("KHR_parallel_shader_compile"),n=t?(s,o)=>s.getProgramParameter(o,t.COMPLETION_STATUS_KHR):()=>!0;let i=0;do await Iu(i),i=1e3/60;while(!n(r,e))}function Pu(r,e,t){if(t=t||Tr,!r.getProgramParameter(e,wc)){const i=r.getProgramInfoLog(e);t(`Error in program linking: ${i}`);const o=r.getAttachedShaders(e).map(a=>wu(r,r.getShaderParameter(a,r.SHADER_TYPE),a,t));return`${i}\n${o.filter(a=>a).join(`\n`)}`}}function ku(r,e,t,n,i){return Ru(r,e,t,n,i)}function mi(r){const e=r.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const Cu=/(\\.|\\[|]|\\w+)/g,Bu=r=>r>="0"&&r<="9";function Du(r,e,t,n){const i=r.split(Cu).filter(a=>a!=="");let s=0,o="";for(;;){const a=i[s++];o+=a;const c=Bu(a[0]),u=c?parseInt(a):a;if(c&&(o+=i[s++]),s===i.length){t[u]=e;break}else{const m=i[s++],p=m==="[",y=t[u]||(p?[]:{});t[u]=y,t=y,n[o]=n[o]||(function(l){return function(b){pi(l,b)}})(y),o+=m}}}function Mu(r,e){let t=0;function n(a,c,u){const d=c.name.endsWith("[0]"),m=c.type,p=x[m];if(!p)throw new Error(`unknown type: 0x${m.toString(16)}`);let y;if(p.bindPoint){const l=t;t+=c.size,d?y=p.arraySetter(r,m,l,u,c.size):y=p.setter(r,m,l,u,c.size)}else p.arraySetter&&d?y=p.arraySetter(r,u):y=p.setter(r,u);return y.location=u,y}const i={},s={},o=r.getProgramParameter(e,Wn);for(let a=0;a<o;++a){const c=r.getActiveUniform(e,a);if(mi(c))continue;let u=c.name;u.endsWith("[0]")&&(u=u.substr(0,u.length-3));const d=r.getUniformLocation(e,c.name);if(d){const m=n(e,c,d);i[u]=m,Du(u,m,s,i)}}return i}function Ou(r,e){const t={},n=r.getProgramParameter(e,Sc);for(let i=0;i<n;++i){const s=r.getTransformFeedbackVarying(e,i);t[s.name]={index:i,type:s.type,size:s.size}}return t}function Uu(r,e){const t=r.getProgramParameter(e,Wn),n=[],i=[];for(let a=0;a<t;++a){i.push(a),n.push({});const c=r.getActiveUniform(e,a);n[a].name=c.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const c=a[0],u=a[1];r.getActiveUniforms(e,i,r[c]).forEach(function(d,m){n[m][u]=d})});const s={},o=r.getProgramParameter(e,Rc);for(let a=0;a<o;++a){const c=r.getActiveUniformBlockName(e,a),u={index:r.getUniformBlockIndex(e,c),usedByVertexShader:r.getActiveUniformBlockParameter(e,a,Fc),usedByFragmentShader:r.getActiveUniformBlockParameter(e,a,Pc),size:r.getActiveUniformBlockParameter(e,a,kc),uniformIndices:r.getActiveUniformBlockParameter(e,a,Cc)};u.used=u.usedByVertexShader||u.usedByFragmentShader,s[c]=u}return{blockSpecs:s,uniformData:n}}function pi(r,e){for(const t in e){const n=r[t];typeof n=="function"?n(e[t]):pi(r[t],e[t])}}function gi(r,...e){const t=r.uniformSetters||r,n=e.length;for(let i=0;i<n;++i){const s=e[i];if(Array.isArray(s)){const o=s.length;for(let a=0;a<o;++a)gi(t,s[a])}else for(const o in s){const a=t[o];a&&a(s[o])}}}function Nu(r,e){const t={},n=r.getProgramParameter(e,Ic);for(let i=0;i<n;++i){const s=r.getActiveAttrib(e,i);if(mi(s))continue;const o=r.getAttribLocation(e,s.name),a=I[s.type],c=a.setter(r,o,a);c.location=o,t[s.name]=c}return t}function Lu(r,e){for(const t in e){const n=r[t];n&&n(e[t])}}function zu(r,e,t){t.vertexArrayObject?r.bindVertexArray(t.vertexArrayObject):(Lu(e.attribSetters||e,t.attribs),t.indices&&r.bindBuffer(_c,t.indices))}function yi(r,e){const t=Mu(r,e),n=Nu(r,e),i={program:e,uniformSetters:t,attribSetters:n};return Le(r)&&(i.uniformBlockSpec=Uu(r,e),i.transformFeedbackInfo=Ou(r,e)),i}const Gu=/\\s|{|}|;/;function $u(r,e,t,n,i){const s=Fr(t,n,i),o=[];if(e=e.map(function(u){if(!Gu.test(u)){const d=$n(u);if(d)u=d.text;else{const m=`no element with id: ${u}`;s.errorCallback(m),o.push(m)}}return u}),o.length)return Eu(s,"");const a=s.callback;a&&(s.callback=(u,d)=>{a(u,u?void 0:yi(r,d))});const c=ku(r,e,s);return c?yi(r,c):null}const Wu=4,bi=5123;function Vu(r,e,t,n,i,s){t=t===void 0?Wu:t;const o=e.indices,a=e.elementType,c=n===void 0?e.numElements:n;i=i===void 0?0:i,a||o?s!==void 0?r.drawElementsInstanced(t,c,a===void 0?bi:e.elementType,i,s):r.drawElements(t,c,a===void 0?bi:e.elementType,i):s!==void 0?r.drawArraysInstanced(t,i,c,s):r.drawArrays(t,i,c)}const xi=36160,Ot=36161,Hu=3553,ju=5121,Xu=6402,Yu=6408,Qu=33190,qu=36012,Ku=35056,Ju=36013,Zu=32854,ef=32855,tf=36194,_i=33189,Ei=6401,wi=36168,Pr=34041,kr=36064,Ut=36096,vi=36128,Cr=33306,Br=33071,Dr=9729,rf=[{format:Yu,type:ju,min:Dr,wrap:Br},{format:Pr}],G={};G[Pr]=Cr,G[Ei]=vi,G[wi]=vi,G[Xu]=Ut,G[_i]=Ut,G[Qu]=Ut,G[qu]=Ut,G[Ku]=Cr,G[Ju]=Cr;function nf(r,e){return G[r]||G[e]}const oe={};oe[Zu]=!0,oe[ef]=!0,oe[tf]=!0,oe[Pr]=!0,oe[_i]=!0,oe[Ei]=!0,oe[wi]=!0;function sf(r){return oe[r]}const of=32;function af(r){return r>=kr&&r<kr+of}function Ti(r,e,t,n){const i=xi,s=r.createFramebuffer();r.bindFramebuffer(i,s),t=t||r.drawingBufferWidth,n=n||r.drawingBufferHeight,e=e||rf;const o=[],a={framebuffer:s,attachments:[],width:t,height:n};return e.forEach(function(c,u){let d=c.attachment;const m=c.samples,p=c.format;let y=c.attachmentPoint||nf(p,c.internalFormat);if(y||(y=kr+u),af(y)&&o.push(y),!d)if(m!==void 0||sf(p))d=r.createRenderbuffer(),r.bindRenderbuffer(Ot,d),m>1?r.renderbufferStorageMultisample(Ot,m,p,t,n):r.renderbufferStorage(Ot,p,t,n);else{const l=Object.assign({},c);l.width=t,l.height=n,l.auto===void 0&&(l.auto=!1,l.min=l.min||l.minMag||Dr,l.mag=l.mag||l.minMag||Dr,l.wrapS=l.wrapS||l.wrap||Br,l.wrapT=l.wrapT||l.wrap||Br),d=Gn(r,l)}if(po(r,d))r.framebufferRenderbuffer(i,y,Ot,d);else if(fr(r,d))c.layer!==void 0?r.framebufferTextureLayer(i,y,d,c.level||0,c.layer):r.framebufferTexture2D(i,y,c.target||Hu,d,c.level||0);else throw new Error("unknown attachment type");a.attachments.push(d)}),r.drawBuffers&&r.drawBuffers(o),a}function cf(r,e,t){t=t||xi,e?(r.bindFramebuffer(t,e.framebuffer),r.viewport(0,0,e.width,e.height)):(r.bindFramebuffer(t,null),r.viewport(0,0,r.drawingBufferWidth,r.drawingBufferHeight))}function D(r,e){return()=>e instanceof WebGLTexture?e:Gn(r,{src:e,wrap:r.CLAMP_TO_EDGE})}const Ce=2;class je{constructor(e){this.id="_";const{context:t,width:n,height:i}=e;this.context=t,this.options=e;const s=this.buildDefines();this.programInfo=$u(this.context,[s+this.getVertexShader(),s+this.getFragmentShader()]),this.bufferInfo=Lo(this.context,this.getBuffers()),this.fbi=Ti(this.context,[{format:this.context.RGBA,type:this.context.UNSIGNED_BYTE,min:this.context.LINEAR,wrap:this.context.CLAMP_TO_EDGE}],n,i),this.output=this.fbi.attachments[0]}resizeOutput(e,t){this.fbi=Ti(this.context,[{format:this.context.RGBA,type:this.context.UNSIGNED_BYTE,min:this.context.LINEAR,wrap:this.context.CLAMP_TO_EDGE}],e,t),this.options.width=e,this.options.height=t,this.output=this.fbi.attachments[0]}getDefines(){return{}}getBuffers(){return{position:{numComponents:2,data:[-1,-1,-1,1,1,-1,1,1,-1,1,1,-1]},texture_coord:{numComponents:2,data:[0,0,0,1,1,0,1,1,0,1,1,0]}}}buildDefines(){let e="";const t=this.getDefines();for(let n in t)e+=`#define ${n} ${t[n].toFixed(1)}\n`;return e}run(e){this.profiler?.pushContext(`[${this.id}] PROG : ${this.constructor.name}`),this.profiler?.pushContext(`[${this.id}] UNIFORMS`);for(const i in e)typeof e[i]=="function"&&(this.profiler?.pushContext(`[${this.id}] UNI : ${i}`),e[i]=e[i](),this.profiler?.popContext(`[${this.id}] UNI : ${i}`));this.profiler?.popContext(`[${this.id}] UNIFORMS`);const t=Date.now();let n=0;this.lastRun&&(n=(t-this.lastRun)/1e3),this.lastRun=t,this.context.viewport(0,0,this.context.canvas.width,this.context.canvas.height),this.context.useProgram(this.programInfo.program),zu(this.context,this.programInfo,this.bufferInfo),gi(this.programInfo,{delta:n,canvas:[this.context.canvas.width,this.context.canvas.height],...e}),cf(this.context,this.options.disableFramebuffer?null:this.fbi),Vu(this.context,this.bufferInfo),this.profiler?.popContext(`[${this.id}] PROG : ${this.constructor.name}`)}setProfiler(e){this.profiler=e}}var uf=`precision mediump float;\n\nvarying vec2 _texture_coord;\n\nuniform sampler2D background;\nuniform sampler2D foreground;\nuniform sampler2D threshold;\n\nvoid main() {\n vec4 backgroundColor = texture2D(background, _texture_coord);\n vec4 foregroundColor = texture2D(foreground, _texture_coord);\n vec4 tresholdColor = texture2D(threshold, _texture_coord);\n gl_FragColor = foregroundColor * tresholdColor.a +\n backgroundColor * (1. - tresholdColor.a);\n}\n`,ff=`varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n _texture_coord.y = 1. - texture_coord.y;\n}\n`;class Mr extends je{getFragmentShader(){return uf}getVertexShader(){return ff}}class Or{constructor(){this.steps=[]}addStep(e){this.steps.push(e)}async run(){for(const e of this.steps)e.program.run(e.getUniforms())}resizeOutput(e,t){this.profiler?.pushContext(`PIP [${this.constructor.name}]`);for(const n of this.steps)n.preventResize||n.program.resizeOutput(e,t);this.profiler?.popContext(`PIP [${this.constructor.name}]`)}setProfiler(e){this.profiler=e;for(const t of this.steps)t.program.setProfiler(e)}setId(e){for(const t of this.steps)t.program.id=e}}class Ur extends Or{constructor(){super(...arguments),this.preciseMaskEnabled=!1}}class Ai extends Ur{constructor(e){super(),this.context=e,this.preciseMaskEnabled=!0;const t={context:e,height:e.canvas.height,width:e.canvas.width},n=new Mr({...t,disableFramebuffer:!0});this.addStep({program:n,getUniforms:()=>({background:D(e,this.inputBackgroundImage),foreground:D(e,this.inputImage),threshold:D(e,this.inputMask)})})}setData(e,t){this.inputImage=e,this.inputMask=t}}var lf=`precision mediump float;\n\nvarying vec2 _texture_coord;\nuniform sampler2D texture;\n\nvoid main() { gl_FragColor = texture2D(texture, _texture_coord); }\n`,df=`varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\nuniform bool invert_y;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n if (invert_y) {\n _texture_coord.y = 1. - texture_coord.y;\n }\n}\n`;class hf extends je{getFragmentShader(){return lf}getVertexShader(){return df}}class mf extends Or{constructor(e,t,n){super(),this.context=e;const i={context:e,height:n,width:t};this.addStep({program:new hf({...i,disableFramebuffer:!0}),getUniforms:()=>({texture:D(e,this.inputImage),invert_y:!0})})}setData(e){this.inputImage=e}}async function Ii(r){return new Promise(e=>{setTimeout(()=>{e()},r)})}var pf=`precision mediump float;\n\nvarying vec2 _texture_coord;\n\nuniform vec2 canvas;\nuniform sampler2D texture;\n\nvec4 loop();\n\nvoid main() { gl_FragColor = loop(); }\n`,gf=`varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n}\n`,Nr=(r=>(r[r.LINEAR=0]="LINEAR",r[r.GAUSSIAN=1]="GAUSSIAN",r))(Nr||{});class Si extends je{getDefines(){return{RADIUS:this.options.radius??1}}getFragmentShader(){return pf+this.createLoopFunction()}getVertexShader(){return gf}createLoopFunction(){let e=this.options.radius??1;return`\n\n vec4 loop() { \n vec4 result = vec4(0,0,0,0);\n float factorSum = 0.;\n\n vec2 normalizedRadius = vec2(-${e}.) / canvas;\n vec2 normalizedIncrement = vec2(1.) / canvas;\n vec2 diff = normalizedRadius;\n\n for(int y=-${e}; y<${e+1}; ++y) {\n for(int x=-${e}; x<${e+1}; ++x) {\n float factor = 1.;\n result += factor * texture2D(texture, _texture_coord + diff);\n factorSum += factor;\n diff.x += normalizedIncrement.x;\n }\n diff.y += normalizedIncrement.y;\n diff.x = normalizedRadius.x;\n }\n return result / factorSum;\n }`}}var yf=`#version 300 es\n// https://github.com/Volcomix/virtual-background/blob/main/src/pipelines/webgl2/jointBilateralFilterStage.ts\n\nprecision highp float;\nuniform sampler2D input_frame;\nuniform sampler2D segmentation_mask;\nuniform sampler2D threshold;\nuniform vec2 texel_size;\nuniform float step;\nuniform float radius;\nuniform float offset;\nuniform float sigma_texel;\nuniform float sigma_color;\n\nin vec2 _texture_coord;\nout vec4 outColor;\n\nfloat gaussian(float x, float sigma) {\n float coeff = -0.5 / (sigma * sigma * 4.0 + 1.0e-6);\n return exp((x * x) * coeff);\n}\n\nvoid main() {\n vec2 centerCoord = _texture_coord;\n vec3 centerColor = texture(input_frame, centerCoord).rgb;\n float newVal = 0.0;\n float spaceWeight = 0.0;\n float colorWeight = 0.0;\n float totalWeight = 0.0;\n // Subsample kernel space.\n for (float i = -radius + offset; i <= radius; i += step) {\n for (float j = -radius + offset; j <= radius; j += step) {\n vec2 shift = vec2(j, i) * texel_size;\n vec2 coord = vec2(centerCoord + shift);\n vec3 frameColor = texture(input_frame, coord).rgb;\n float threshold = texture(threshold, coord).a;\n float outVal = texture(segmentation_mask, coord).a;\n\n spaceWeight = gaussian(distance(centerCoord, coord), sigma_texel);\n colorWeight = gaussian(distance(centerColor, frameColor), sigma_color);\n totalWeight += spaceWeight * colorWeight;\n newVal += spaceWeight * colorWeight * outVal * threshold;\n }\n }\n newVal /= totalWeight;\n outColor = vec4(vec3(0.), newVal);\n}`,bf=`#version 300 es\nin vec2 position;\nin vec2 texture_coord;\nout vec2 _texture_coord;\nvoid main() {\n gl_Position = vec4(position, 0.0, 1.0);\n _texture_coord = texture_coord;\n}`;class xf extends je{getFragmentShader(){return yf}getVertexShader(){return bf}}class _f extends Or{constructor(e,t,n){super(),this.context=e;const i={context:e,height:n,width:t},s=new Si({...i,radius:1,type:Nr.GAUSSIAN});this.jointBilateral=new xf(i),this.addStep({program:s,getUniforms:()=>({inputs:D(e,this.inputMask)})}),this.addStep({program:this.jointBilateral,getUniforms:()=>{const a=this.inputImage?.width??1,c=this.inputImage?.height??1;this.inputMask?.width,this.inputMask?.height;const u=3,d=Math.max(1,Math.sqrt(u)*.66),m=1/a,p=1/c;return{input_frame:D(e,this.inputImage),segmentation_mask:D(e,this.inputMask),texel_size:[m,p],step:d,radius:u,offset:d>1?d*.5:0,sigma_texel:Math.max(m,p)*u,sigma_color:u}}}),this.output=this.jointBilateral.output}setData(e,t){this.previousInputImage=this.inputImage?this.inputImage:e,this.previousInputMask=this.inputMask?this.inputMask:t,this.inputImage=e,this.inputMask=t}resizeOutput(e,t){super.resizeOutput(e,t),this.output=this.jointBilateral.output}}class Ef{constructor(e){this.queries=[],this.context=e,this.extension=e.getExtension("EXT_disjoint_timer_query_webgl2")}start(){}stop(){this.activeQuery&&this.context.endQuery(this.extension.TIME_ELAPSED_EXT)}pushContext(e){this.createQuery("PUSH",e)}popContext(e){this.createQuery("POP",e)}createQuery(e,t){this.activeQuery&&this.context.endQuery(this.extension.TIME_ELAPSED_EXT),this.activeQuery=this.context.createQuery(),this.context.beginQuery(this.extension.TIME_ELAPSED_EXT,this.activeQuery),this.queries.push({name:t,action:e,query:this.activeQuery})}async getResolvedQueries(){const e=(await Promise.all([...this.queries].map(t=>this.resolveQuery(t)))).filter(t=>t);for(let t=1;t<e.length;++t)e[t].timestamp+=e[t-1].duration+e[t-1].timestamp;return e}async resolveQuery(e){if(!await this.awaitQueryAvailable(e)){console.log("Unawaitable query",e);return}if(this.context.getParameter(this.extension.GPU_DISJOINT_EXT)){console.log("Disjointed query",e);return}return{...e,duration:this.context.getQueryParameter(e.query,this.context.QUERY_RESULT),timestamp:0}}async awaitQueryAvailable(e){for(let t=0;t<10;++t){if(this.context.getQueryParameter(e.query,this.context.QUERY_RESULT_AVAILABLE))return e;await Ii(200)}}}class Nt{constructor(){this.previousImageWidth=0,this.previousImageHeight=0,this.previousMaskWidth=Ce,this.previousMaskHeight=Ce,this.postProcessingEnabled=!0;const e=new OffscreenCanvas(0,0),t=e.getContext("webgl2");if(!t)throw"Fail to retrieve webgl2 context";this.canvas=e,this.context=t,this.improveMask=new _f(this.context,Ce,Ce)}enablePostProcessing(){this.postProcessingEnabled=!0}disablePostProcessing(){this.postProcessingEnabled=!1}async profileWebgl(e){const t=new Ef(this.context);return this.profiler=t,t.start(),await Ii(e),this.profiler=void 0,t.stop(),t.getResolvedQueries()}async render(e,t){if(!this.pipeline)throw"missing pipeline";(this.previousImageHeight!==e.height||this.previousImageWidth!==e.width)&&this.resizeOutput(e.width,e.height),(this.previousMaskHeight!==t.height||this.previousMaskWidth!==t.width)&&(this.improveMask.resizeOutput(t.width,t.height),this.previousMaskWidth=t.width,this.previousMaskHeight=t.height);const n="renderer";this.profiler?.pushContext(n),this.improveMask.setProfiler(this.profiler),this.pipeline.setProfiler(this.profiler);const i=await createImageBitmap(t);let s=i;return this.postProcessingEnabled&&(this.improveMask.setData(e,i),this.improveMask.run(),s=this.improveMask.output),this.pipeline.setData(e,s),await this.pipeline.run(),this.profiler?.popContext(n),this.canvas}resizeOutput(e,t){this.canvas.width=e,this.canvas.height=t,this.pipeline?.resizeOutput(e,t),this.previousImageWidth=e,this.previousImageHeight=t}destroy(){const e=this.context?.getExtension("WEBGL_lose_context");e&&e.loseContext()}}class Ri extends Nt{constructor(){super(),this.pipeline=new Ai(this.context);const e=new OffscreenCanvas(0,0),t=e.getContext("webgl2");if(!t)throw"Fail to retrieve webgl context";this.backgroundImageResizerCanvas=e,this.backgroundImageResizerContext=t,this.backgroundImageResizer=new mf(this.backgroundImageResizerContext,0,0)}setBackgroundImage(e){this.backgroundImage=e,this.updateBackgroundImage()}updateBackgroundImage(){const{width:e,height:t}=this.canvas;this.backgroundImageResizer.resizeOutput(e,t),this.backgroundImageResizer.setData(this.backgroundImage),this.backgroundImageResizer.run(),this.pipeline.inputBackgroundImage=this.backgroundImageResizerCanvas}resizeOutput(e,t){super.resizeOutput(e,t),this.backgroundImageResizerCanvas.width=e,this.backgroundImageResizerCanvas.height=t,this.backgroundImageResizer.resizeOutput(e,t),this.updateBackgroundImage()}destroy(){const e=this.backgroundImageResizerContext?.getExtension("WEBGL_lose_context");e&&e.loseContext(),super.destroy()}}class wf extends Ri{setBackgroundVideo(e){this.frameReader=e}async render(e,t){return await this.readNextVideoFrame(),super.render(e,t)}async readNextVideoFrame(){const e=await this.frameReader?.read();if(e?.value){const t=await createImageBitmap(e.value);this.setBackgroundImage(t),e.value.close()}}}class Fi{blurBackground(e){return new to(e)}blurSilhouette(e){return new ro(e)}imageBackground(){return new no}videoBackground(){return new wf}}var vf=`precision mediump float;\n\nvarying vec2 _texture_coord;\n\nuniform vec2 canvas;\nuniform sampler2D texture;\nuniform sampler2D mask;\n\nvec4 loop();\n\nvoid main() { gl_FragColor = loop(); }\n`,Tf=`varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n}\n`;class Af extends je{getDefines(){return{RADIUS:this.options.radius??1}}getFragmentShader(){return vf+this.createLoopFunction()}getVertexShader(){return Tf}createLoopFunction(){let e=this.options.radius??1;return`\n\n vec4 loop() { \n vec4 result = vec4(0,0,0,0);\n float factorSum = 0.;\n\n vec2 normalizedRadius = vec2(-${e}.) / canvas;\n vec2 normalizedIncrement = vec2(1.) / canvas;\n vec2 diff = normalizedRadius;\n float maxLength = length(normalizedRadius);\n\n for(int y=-${e}; y<${e+1}; ++y) {\n for(int x=-${e}; x<${e+1}; ++x) {\n float factor = (1.- texture2D(mask, _texture_coord + diff).a) * (maxLength - length(diff)) / maxLength;\n result += factor * texture2D(texture, _texture_coord + diff);\n factorSum += factor;\n diff.x += normalizedIncrement.x;\n }\n diff.y += normalizedIncrement.y;\n diff.x = normalizedRadius.x;\n }\n return result / factorSum;\n }`}}const If=10,Sf=2,Rf=8;class Ff extends Ur{constructor(e,t){super(),this.context=e,this.radius=t;const n={context:e,height:e.canvas.height,width:e.canvas.width};this.blur=new Af({...n,radius:t,...this.getBlurTextureSize(e.canvas.width,e.canvas.height)});const i=new Mr({...n,disableFramebuffer:!0});this.addStep({program:this.blur,preventResize:!0,getUniforms:()=>({texture:D(e,this.inputImage),mask:D(e,this.inputMask)})}),this.addStep({program:i,getUniforms:()=>({background:D(e,this.blur.output),foreground:D(e,this.inputImage),threshold:D(e,this.inputMask)})})}getBlurTextureSize(e,t){const n=this.radius>If?Rf:Sf;return{width:Math.max(Ce,e/n),height:Math.max(Ce,t/n)}}setData(e,t){this.inputImage=e,this.inputMask=t}resizeOutput(e,t){super.resizeOutput(e,t);const n=this.getBlurTextureSize(e,t);this.blur.resizeOutput(n.width,n.height)}}class Pf extends Nt{constructor(e){super(),this.pipeline=new Ff(this.context,e),this.disablePostProcessing()}}class kf extends Ur{constructor(e,t){super(),this.context=e;const n={context:e,height:e.canvas.height,width:e.canvas.width},i=new Si({...n,radius:t,type:Nr.GAUSSIAN}),s=new Mr({...n,disableFramebuffer:!0});this.addStep({program:i,getUniforms:()=>({texture:D(e,this.inputImage)})}),this.addStep({program:s,getUniforms:()=>({background:D(e,this.inputImage),foreground:D(e,i.output),threshold:D(e,this.inputMask)})})}setData(e,t){this.inputImage=e,this.inputMask=t}}class Cf extends Nt{constructor(e){super(),this.pipeline=new kf(this.context,e),this.disablePostProcessing()}}class Bf extends Ai{constructor(){super(...arguments),this.preciseMaskEnabled=!0}set reader(e){this.frameReader=e}async run(){this.frameReader&&(await this.readNextVideoFrame(),await super.run())}async readNextVideoFrame(){const e=await this.frameReader?.read();e?.value&&(this.inputBackgroundImage=await createImageBitmap(e.value),e.value.close())}}class Df extends Nt{constructor(){super(),this.pipeline=new Bf(this.context)}setBackgroundVideo(e){this.pipeline.reader=e}}class Pi{blurBackground(e){return new Pf(e)}blurSilhouette(e){return new Cf(e)}imageBackground(){return new Ri}videoBackground(){return new Df}}class Mf{constructor(e){switch(e){case gt.CANVAS:this.factory=new Fi;break;case gt.WEBGL:this.factory=new Pi;break;default:const t=eo();this.factory=t.supported?new Pi:new Fi}}blurBackground(e){return this.getFactory().blurBackground(e)}blurSilhouette(e){return this.getFactory().blurSilhouette(e)}imageBackground(){return this.getFactory().imageBackground()}videoBackground(){return this.getFactory().videoBackground()}getFactory(){if(!this.factory)throw"Factory is not initialized";return this.factory}}class Of{setBackgroundOptions(e){this.renderer&&this.renderer.destroy();const t=new Mf(e.renderingOptions?.type);switch(e.transformerType){case"BackgroundBlur":this.renderer=t.blurBackground(this.getBlurSize(e.radius));break;case"SilhouetteBlur":this.renderer=t.blurSilhouette(this.getBlurSize(e.radius));break;case"VideoBackground":const n=t.videoBackground();this.backgroundVideo&&n.setBackgroundVideo(this.backgroundVideo),this.renderer=n;break;case"VirtualBackground":const i=t.imageBackground();this.backgroundImage&&i.setBackgroundImage(this.backgroundImage),this.renderer=i;break;default:throw`Unknown rendering type [${e.transformerType}]`}e.renderingOptions?.type===gt.WEBGL&&(e.renderingOptions.selfieSegmentationType===tr.PRECISE?this.renderer.enablePostProcessing():e.renderingOptions.selfieSegmentationType===tr.FAST&&this.renderer.disablePostProcessing())}setVideoBGReadable(e){this.backgroundVideo=e.getReader();const t=this.renderer;t?.setBackgroundVideo&&t.setBackgroundVideo(this.backgroundVideo)}async setVirtualBGImage(e){const t=this.renderer;t?.setBackgroundImage&&t.setBackgroundImage(e),this.backgroundImage=e}async process(e,t){if(this.renderer)return this.renderer.render(e,t)}async resizeForeground(e,t){}getBlurSize(e=pt.Low){switch(e){case pt.Low:return 5;case pt.High:return 12}return e}async profile(e){return this.renderer?.profileWebgl(e)??[]}}var Uf=(function(){var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return(function(e){e=e||{};var t=typeof e<"u"?e:{},n,i;t.ready=new Promise(function(f,h){n=f,i=h});var s={},o;for(o in t)t.hasOwnProperty(o)&&(s[o]=t[o]);var a="./this.program",c=function(f,h){throw h},u=!0,d="";function m(f){return t.locateFile?t.locateFile(f,d):d+f}var p;typeof document<"u"&&document.currentScript&&(d=document.currentScript.src),r&&(d=r),d.indexOf("blob:")!==0?d=d.substr(0,d.replace(/[?#].*/,"").lastIndexOf("/")+1):d="";var y=t.print||console.log.bind(console),l=t.printErr||console.warn.bind(console);for(o in s)s.hasOwnProperty(o)&&(t[o]=s[o]);s=null,t.arguments&&t.arguments,t.thisProgram&&(a=t.thisProgram),t.quit&&(c=t.quit);var b;t.wasmBinary&&(b=t.wasmBinary),t.noExitRuntime,typeof WebAssembly!="object"&&ae("no native wasm support detected");var _,E=!1,R=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function k(f,h,g){for(var w=h+g,S=h;f[S]&&!(S>=w);)++S;if(S-h>16&&f.subarray&&R)return R.decode(f.subarray(h,S));for(var C="";h<S;){var v=f[h++];if(!(v&128)){C+=String.fromCharCode(v);continue}var M=f[h++]&63;if((v&224)==192){C+=String.fromCharCode((v&31)<<6|M);continue}var H=f[h++]&63;if((v&240)==224?v=(v&15)<<12|M<<6|H:v=(v&7)<<18|M<<12|H<<6|f[h++]&63,v<65536)C+=String.fromCharCode(v);else{var Li=v-65536;C+=String.fromCharCode(55296|Li>>10,56320|Li&1023)}}return C}function N(f,h){return f?k(Xe,f,h):""}function Q(f,h,g){for(var w=0;w<f.length;++w)Lt[h++>>0]=f.charCodeAt(w);Lt[h>>0]=0}function q(f,h){return f%h>0&&(f+=h-f%h),f}var L,Lt,Xe,$;function Ci(f){L=f,t.HEAP8=Lt=new Int8Array(f),t.HEAP16=new Int16Array(f),t.HEAP32=$=new Int32Array(f),t.HEAPU8=Xe=new Uint8Array(f),t.HEAPU16=new Uint16Array(f),t.HEAPU32=new Uint32Array(f),t.HEAPF32=new Float32Array(f),t.HEAPF64=new Float64Array(f)}t.INITIAL_MEMORY;var zr,Bi=[],Di=[],Mi=[];function Yf(){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)Kf(t.preRun.shift());Gr(Bi)}function Qf(){Gr(Di)}function qf(){if(t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;)Zf(t.postRun.shift());Gr(Mi)}function Kf(f){Bi.unshift(f)}function Jf(f){Di.unshift(f)}function Zf(f){Mi.unshift(f)}var be=0,Ye=null;function el(f){be++,t.monitorRunDependencies&&t.monitorRunDependencies(be)}function tl(f){if(be--,t.monitorRunDependencies&&t.monitorRunDependencies(be),be==0&&Ye){var h=Ye;Ye=null,h()}}t.preloadedImages={},t.preloadedAudios={};function ae(f){t.onAbort&&t.onAbort(f),f="Aborted("+f+")",l(f),E=!0,f+=". Build with -s ASSERTIONS=1 for more info.";var h=new WebAssembly.RuntimeError(f);throw i(h),h}var rl="data:application/octet-stream;base64,";function Oi(f){return f.startsWith(rl)}var W;W="tflite-simd.wasm",Oi(W)||(W=m(W));function Ui(f){try{if(f==W&&b)return new Uint8Array(b);if(!p)throw"both async and sync fetching of the wasm failed"}catch(h){ae(h)}}function nl(){return!b&&u&&typeof fetch=="function"?fetch(W,{credentials:"same-origin"}).then(function(f){if(!f.ok)throw"failed to load wasm binary file at \'"+W+"\'";return f.arrayBuffer()}).catch(function(){return Ui(W)}):Promise.resolve().then(function(){return Ui(W)})}function il(){var f={a:Al};function h(v,M){var H=v.exports;t.asm=H,_=t.asm.q,Ci(_.buffer),zr=t.asm.E,Jf(t.asm.r),tl()}el();function g(v){h(v.instance)}function w(v){return nl().then(function(M){return WebAssembly.instantiate(M,f)}).then(function(M){return M}).then(v,function(M){l("failed to asynchronously prepare wasm: "+M),ae(M)})}function S(){return!b&&typeof WebAssembly.instantiateStreaming=="function"&&!Oi(W)&&typeof fetch=="function"?fetch(W,{credentials:"same-origin"}).then(function(v){var M=WebAssembly.instantiateStreaming(v,f);return M.then(g,function(H){return l("wasm streaming compile failed: "+H),l("falling back to ArrayBuffer instantiation"),w(g)})}):w(g)}if(t.instantiateWasm)try{var C=t.instantiateWasm(f,h);return C}catch(v){return l("Module.instantiateWasm callback failed with error: "+v),!1}return S().catch(i),{}}function Gr(f){for(;f.length>0;){var h=f.shift();if(typeof h=="function"){h(t);continue}var g=h.func;typeof g=="number"?h.arg===void 0?zr.get(g)():zr.get(g)(h.arg):g(h.arg===void 0?null:h.arg)}}function sl(f,h,g,w){ae("Assertion failed: "+N(f)+", at: "+[h?N(h):"unknown filename",g,w?N(w):"unknown function"])}function ol(f,h){ae("To use dlopen, you need to use Emscripten\'s linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function al(f,h){ae("To use dlopen, you need to use Emscripten\'s linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function cl(){ae("")}var zt;zt=function(){return performance.now()};var ul=!0;function fl(f){return $[Ni()>>2]=f,f}function ll(f,h){var g;if(f===0)g=Date.now();else if((f===1||f===4)&&ul)g=zt();else return fl(28),-1;return $[h>>2]=g/1e3|0,$[h+4>>2]=g%1e3*1e3*1e3|0,0}function dl(){return 2147483648}function hl(f,h,g){Xe.copyWithin(f,h,h+g)}function ml(f){try{return _.grow(f-L.byteLength+65535>>>16),Ci(_.buffer),1}catch{}}function pl(f){var h=Xe.length;f=f>>>0;var g=2147483648;if(f>g)return!1;for(var w=1;w<=4;w*=2){var S=h*(1+.2/w);S=Math.min(S,f+100663296);var C=Math.min(g,q(Math.max(f,S),65536)),v=ml(C);if(v)return!0}return!1}function gl(f){for(var h=zt();zt()-h<f;);}var $r={};function yl(){return a||"./this.program"}function Qe(){if(!Qe.strings){var f=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",h={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:f,_:yl()};for(var g in $r)$r[g]===void 0?delete h[g]:h[g]=$r[g];var w=[];for(var g in h)w.push(g+"="+h[g]);Qe.strings=w}return Qe.strings}var Gt={mappings:{},buffers:[null,[],[]],printChar:function(f,h){var g=Gt.buffers[f];h===0||h===10?((f===1?y:l)(k(g,0)),g.length=0):g.push(h)},varargs:void 0,get:function(){Gt.varargs+=4;var f=$[Gt.varargs-4>>2];return f},getStr:function(f){var h=N(f);return h},get64:function(f,h){return f}};function bl(f,h){var g=0;return Qe().forEach(function(w,S){var C=h+g;$[f+S*4>>2]=C,Q(w,C),g+=w.length+1}),0}function xl(f,h){var g=Qe();$[f>>2]=g.length;var w=0;return g.forEach(function(S){w+=S.length+1}),$[h>>2]=w,0}function _l(f){Sl(f)}function El(f){return 0}function wl(f,h,g,w,S){}function vl(f,h,g,w){for(var S=0,C=0;C<g;C++){for(var v=$[h+C*8>>2],M=$[h+(C*8+4)>>2],H=0;H<M;H++)Gt.printChar(f,Xe[v+H]);S+=M}return $[w>>2]=S,0}function Tl(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var f=new Uint8Array(1);return function(){return crypto.getRandomValues(f),f[0]}}else return function(){ae("randomDevice")}}function $t(f,h){$t.randomDevice||($t.randomDevice=Tl());for(var g=0;g<h;g++)Lt[f+g>>0]=$t.randomDevice();return 0}var Al={a:sl,e:ol,d:al,b:cl,n:ll,h:dl,l:hl,m:pl,p:gl,f:bl,g:xl,j:_l,i:El,k:wl,c:vl,o:$t};il(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.r).apply(null,arguments)},t._getModelBufferMemoryOffset=function(){return(t._getModelBufferMemoryOffset=t.asm.s).apply(null,arguments)},t._getInputMemoryOffset=function(){return(t._getInputMemoryOffset=t.asm.t).apply(null,arguments)},t._getInputHeight=function(){return(t._getInputHeight=t.asm.u).apply(null,arguments)},t._getInputWidth=function(){return(t._getInputWidth=t.asm.v).apply(null,arguments)},t._getInputChannelCount=function(){return(t._getInputChannelCount=t.asm.w).apply(null,arguments)},t._getOutputMemoryOffset=function(){return(t._getOutputMemoryOffset=t.asm.x).apply(null,arguments)},t._getOutputHeight=function(){return(t._getOutputHeight=t.asm.y).apply(null,arguments)},t._getOutputWidth=function(){return(t._getOutputWidth=t.asm.z).apply(null,arguments)},t._getOutputChannelCount=function(){return(t._getOutputChannelCount=t.asm.A).apply(null,arguments)},t._loadModel=function(){return(t._loadModel=t.asm.B).apply(null,arguments)},t._runInference=function(){return(t._runInference=t.asm.C).apply(null,arguments)},t._isGPUEnabled=function(){return(t._isGPUEnabled=t.asm.D).apply(null,arguments)};var Ni=t.___errno_location=function(){return(Ni=t.___errno_location=t.asm.F).apply(null,arguments)},Wt;function Il(f){this.name="ExitStatus",this.message="Program terminated with exit("+f+")",this.status=f}Ye=function f(){Wt||Wr(),Wt||(Ye=f)};function Wr(f){if(be>0||(Yf(),be>0))return;function h(){Wt||(Wt=!0,t.calledRun=!0,!E&&(Qf(),n(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),qf()))}t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),h()},1)):h()}t.run=Wr;function Sl(f,h){Rl(f)}function Rl(f){c(f,new Il(f))}if(t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return Wr(),e.ready})})();class Nf{constructor(){this.isSIMDSupported=!1,this.isThreadsSupported=!1,this.inputWidth=0,this.inputHeight=0,this.inputChannelCount=0,this.inputMemoryOffset=0,this.outputWidth=0,this.outputHeight=0,this.outputChannelCount=0,this.outputMemoryOffset=0}}const Lf="https://d3opqjmqzxf057.cloudfront.net/vonage-tensorflow-wasm/tflite-simd-wasm/1.1.3/",zf="https://d3opqjmqzxf057.cloudfront.net/ml/selfie_segmentation/4.0.0/selfie_segmentation_landscape.tflite";async function Gf(r=Lf,e=zf){let t=new Nf;var n=new Promise(function(i,s){async function o(){return Uf({locateFile:function(u){return r+u}})}async function a(c){return new Promise(async(u,d)=>{const m=c;if(typeof m>"u")return d("TFLite backend unavailable: wasmSimd");let p=e;console.log("TFLite modelUrl: "+p);try{const l=await(await fetch(p)).arrayBuffer();console.log("Model buffer size:",l.byteLength);const b=m._getModelBufferMemoryOffset();console.log("Model buffer memory offset:",b),console.log("Loading model buffer..."),m.HEAPU8.set(new Uint8Array(l),b);const _=m._loadModel(l.byteLength);if(console.log("Load model result:",_),_!==0){d("Cannot load model");return}t.inputWidth=m._getInputWidth(),t.inputHeight=m._getInputHeight(),t.inputChannelCount=m._getInputChannelCount(),t.inputMemoryOffset=m._getInputMemoryOffset(),console.log("Input memory offset:",t.inputMemoryOffset),console.log("Input height:",t.inputHeight),console.log("Input width:",t.inputWidth),console.log("Input channels:",t.inputChannelCount),t.outputMemoryOffset=m._getOutputMemoryOffset(),t.outputWidth=m._getOutputWidth(),t.outputHeight=m._getOutputHeight(),t.outputChannelCount=m._getOutputChannelCount(),console.log("Output memory offset:",t.outputMemoryOffset),console.log("Output height:",t.outputHeight),console.log("Output width:",t.outputWidth),console.log("Output channels:",t.outputChannelCount),t.selectedTFLite=m}catch(y){d(y);return}u()})}o().then(c=>{if(c===null)throw console.error("loadTFLite null"),"loadTFLite null";a(c).then(u=>{i(t)}).catch(u=>{console.error("loadTFLiteModel error"),s("loadTFLiteModel error")})}).catch(c=>{console.error("loadTFLite error:",c),s("loadTFLite error:"+c)})});return n}const $f=.1,Wf=.7,Vf="https://d3opqjmqzxf057.cloudfront.net/ml/vonage_selfie_segmenter/float16/v1/vonage_selfie_segmenter.tflite";class Hf{constructor(){this.canvas=new OffscreenCanvas(0,0),this.context=this.canvas.getContext("2d",{willReadFrequently:!0}),this.width=0,this.height=0,this.gpuDelegate=!0}async createImageSegmenter(){if(!this.ImageSegmenter||!this.wasmFileset){console.warn("Mediapipe objects not loaded");return}this.imageSegmenter=await this.ImageSegmenter.createFromOptions(this.wasmFileset,{baseOptions:{modelAssetPath:this.modelAssetUriPath,delegate:this.gpuDelegate?"GPU":"CPU"},runningMode:"VIDEO",outputCategoryMask:!0,outputConfidenceMasks:!0})}async loadMediapipeAssets(e,t){this.modelAssetUriPath=e||Vf;const n=t?`${t}/task-vision.js`:"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.20/+esm",i=t?`${t}/wasm`:"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.20/wasm",{FilesetResolver:s,ImageSegmenter:o}=await import(n);this.ImageSegmenter=o,this.wasmFileset=await s.forVisionTasks(i)}async init(e,t,n){n===!1&&(this.gpuDelegate=!1),await this.loadMediapipeAssets(e,t),globalThis.document={},await this.createImageSegmenter()}async process(e){if(!this.imageSegmenter){console.warn("ImageSegmenter instance not available");return}(this.width!==e.width||this.height!==e.height)&&(this.canvas.width=this.width=e.width,this.canvas.height=this.height=e.height,this.mask&&(this.mask=new ImageData(this.width,this.height))),this.mask||(this.mask=new ImageData(this.width,this.height)),this.context.drawImage(e,0,0,e.width,e.height);const t=Date.now();let n;try{this.imageSegmenter?.segmentForVideo(this.context.getImageData(0,0,e.width,e.height),t,o=>{n=o.confidenceMasks?.[0]?.getAsFloat32Array()})}catch{await this.createImageSegmenter();return}if(!n)return;if(!this.previousConfidenceMask){this.previousConfidenceMask=n.slice();return}const i=n.map((o,a)=>{const c=this.previousConfidenceMask?.[a];return c!==void 0?this.blend(c,o):o}),s=[255,0,0];for(let o=0;o<i?.length;o++){const a=1-i[o];a>$f?(a<Wf?(this.mask.data[o*4]=s[0]*a,this.mask.data[o*4+3]=255*a):(this.mask.data[o*4]=s[0],this.mask.data[o*4+3]=255),this.mask.data[o*4+1]=s[1],this.mask.data[o*4+2]=s[2]):this.mask.data[o*4]=this.mask.data[o*4+1]=this.mask.data[o*4+2]=this.mask.data[o*4+3]=0}return this.previousConfidenceMask=i.slice(),this.mask}isGpuSupported(){return!0}blend(e,t){const i=-.748699,s=-57.8051,o=291.309,a=-624.717,c=t-.5,u=c*c,d=1-Math.min(1,u*(5.68842+u*(i+u*(s+u*(o+u*a)))));return t+(e-t)*(d*.9)}}class jf{constructor(){this.canvas=new OffscreenCanvas(0,0),this.context=this.canvas.getContext("2d",{willReadFrequently:!0}),this.pixelCount=0,this.inputOffset=0,this.outputOffset=0}async init(e,t,n){await this.initWasm(t,e),this.infos&&(this.canvas.width=this.infos.inputWidth,this.canvas.height=this.infos.inputHeight,this.pixelCount=this.infos.inputWidth*this.infos.inputHeight,this.mask=new ImageData(this.infos.inputWidth,this.infos.inputHeight),this.inputOffset=this.infos.inputMemoryOffset/4,this.outputOffset=this.infos.outputMemoryOffset/4)}async initWasm(e,t){this.infos=await Gf(e,t)}async process(e){if(!this.mask||!this.infos)return;const t=this.infos.inputWidth,n=this.infos.inputHeight;this.context.drawImage(e,0,0,e.width,e.height,0,0,t,n);const i=this.context.getImageData(0,0,t,n),s=this.infos.selectedTFLite.HEAPF32;for(let o=0;o<this.pixelCount;o++){const a=this.inputOffset+o*3;s[a]=i.data[o*4]/255,s[a+1]=i.data[o*4+1]/255,s[a+2]=i.data[o*4+2]/255}this.infos.selectedTFLite._runInference();for(let o=0;o<this.pixelCount;o++){const a=this.infos.selectedTFLite.HEAPF32[this.outputOffset+o];this.mask.data[o*4]=this.mask.data[o*4+3]=255*a}return this.mask}isGpuSupported(){return this.infos?.selectedTFLite?._isGPUEnabled()??!1}}class Xf{constructor(){this.reporter=new Js,this.isEnabled=!0}async init(e,t){t.segmentationOptions?.lightWeightEngine===!0?this.selfieSegmentation=new jf:this.selfieSegmentation=new Hf,this.selfieSegmentation?.init(t.modelAssetUriPath,t.mediapipeBaseAssetsUri,t.segmentationOptions?.gpuSupport),this.backgroundFilter=new Of,this.report({variation:"Create"})}async transform(e,t){if(!this.isEnabled)return t.enqueue(e);let n;const i=e.timestamp??0,s=await createImageBitmap(e),o=await this.selfieSegmentation?.process(s);o&&(n=await this.backgroundFilter?.process(s,o)),n?(e.close(),t.enqueue(new VideoFrame(n,{timestamp:i,alpha:"discard"}))):t.enqueue(e)}async setBackgroundOptions(e){this.backgroundOptions=e,this.backgroundFilter?.setBackgroundOptions(e),this.report({variation:"Update"})}setVideoBGReadable(e){this.backgroundFilter?.setVideoBGReadable(e)}async setVirtualBGImage(e){await this.backgroundFilter?.setVirtualBGImage(e)}async profile(e){return this.backgroundFilter?.profile(e)??[]}getTransformerType(){return this.backgroundOptions?.transformerType??"Undefined"}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}report(e){this.reporter.send({version:Zs,action:"MlTransformers",transformerType:this.backgroundOptions?.transformerType,config:JSON.stringify(this.backgroundOptions),...e})}}const Lr=class Lr{constructor(){this.backgroundTransformer=new Xf,this.mediaProcessor=new Rs,this.rate=30,this.eventsQueue=[],this.frameTransformLatencyMs=[]}async init(e,t){this.frameTransformLatencyMs=[],await this.backgroundTransformer.init(e,t),await this.mediaProcessor.setTransformers([this.backgroundTransformer]),this.mediaProcessor.setTrackExpectedRate(this.rate),this.mediaProcessor.onAny((n,i)=>{this.resolveOnMediaProcessor?(this.resolveOnMediaProcessor({name:n,data:i}),this.resolveOnMediaProcessor=void 0):this.eventsQueue.push({name:n,data:i})})}enable(){this.backgroundTransformer.enable()}disable(){this.backgroundTransformer.disable()}async onMediaProcessorEvent(){return await new Promise(e=>{this.eventsQueue.length>0?e(this.eventsQueue.shift()):this.resolveOnMediaProcessor=e})}async setTrackExpectedRate(e){this.rate=e,this.mediaProcessor.setTrackExpectedRate(e)}async transform(e,t){let n=this.mediaProcessor.transform(e,t),i=performance.now();return this.frameTransformLatencyMs.push(performance.now()-i),n}async setBackgroundOptions(e){await this.backgroundTransformer?.setBackgroundOptions(e)}setVideoBGReadable(e){this.backgroundTransformer.setVideoBGReadable(e)}async setVirtualBGImage(e){await this.backgroundTransformer.setVirtualBGImage(e)}async terminate(){await this.mediaProcessor.destroy();const t=this.frameTransformLatencyMs.reduce((n,i)=>n+i,0)/this.frameTransformLatencyMs.length||0;console.log(`Transform latency average is: ${t} ms`)}setVonageMetadata(e){_s(e)}async profile(e){return JSON.stringify(await this.backgroundTransformer.profile(e))}};Vi("ProcessorWorker",Lr);let ki=Lr})();\n//# sourceMappingURL=processor-worker-CR7IjkAn.js.map\n', ii = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", _o], { type: "text/javascript;charset=utf-8" });
|
|
5146
|
-
function
|
|
5179
|
+
const _o = '(function(){"use strict";function Vt(r,e){globalThis.vonage||(globalThis.vonage={}),globalThis.vonage.workerizer||(globalThis.vonage.workerizer={});let t=globalThis.vonage.workerizer;return t[r]||(t[r]=e),t[r]}const Vr=Vt("globals",{});var xe=(r=>(r.INIT="INIT",r.FORWARD="FORWARD",r.TERMINATE="TERMINATE",r.GLOBALS_SYNC="GLOBALS_SYNC",r.EVENT="EVENT",r))(xe||{});function zi(r){return[ImageBitmap,ReadableStream,WritableStream].some(t=>r instanceof t)}function Be(r,e){const{id:t,type:n}=r,i=Array.isArray(e)?e:[e];postMessage({id:t,type:n,result:e},i.filter(s=>zi(s)))}Vt("workerized",{});function Hr(){return typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope}function qe(r,e){if(Array.isArray(e))e.splice(0,e.length);else if(typeof e=="object")for(const t in e)delete e[t];for(const t in r)Array.isArray(r[t])?(e[t]=[],qe(r[t],e[t])):typeof r[t]=="object"?(e[t]={},qe(r[t],e[t])):e[t]=r[t]}const K=new WeakMap,ce=new WeakMap,j=new WeakMap,Ke=Symbol("anyProducer"),jr=Promise.resolve(),Je=Symbol("listenerAdded"),Ze=Symbol("listenerRemoved");let et=!1,Ht=!1;function _e(r){if(typeof r!="string"&&typeof r!="symbol"&&typeof r!="number")throw new TypeError("`eventName` must be a string, symbol, or number")}function tt(r){if(typeof r!="function")throw new TypeError("listener must be a function")}function Ee(r,e){const t=ce.get(r);if(t.has(e))return t.get(e)}function De(r,e){const t=typeof e=="string"||typeof e=="symbol"||typeof e=="number"?e:Ke,n=j.get(r);if(n.has(t))return n.get(t)}function Gi(r,e,t){const n=j.get(r);if(n.has(e))for(const i of n.get(e))i.enqueue(t);if(n.has(Ke)){const i=Promise.all([e,t]);for(const s of n.get(Ke))s.enqueue(i)}}function Xr(r,e){e=Array.isArray(e)?e:[e];let t=!1,n=()=>{},i=[];const s={enqueue(o){i.push(o),n()},finish(){t=!0,n()}};for(const o of e){let a=De(r,o);a||(a=new Set,j.get(r).set(o,a)),a.add(s)}return{async next(){return i?i.length===0?t?(i=void 0,this.next()):(await new Promise(o=>{n=o}),this.next()):{done:!1,value:await i.shift()}:{done:!0}},async return(o){i=void 0;for(const a of e){const c=De(r,a);c&&(c.delete(s),c.size===0&&j.get(r).delete(a))}return n(),arguments.length>0?{done:!0,value:await o}:{done:!0}},[Symbol.asyncIterator](){return this}}}function Yr(r){if(r===void 0)return Qr;if(!Array.isArray(r))throw new TypeError("`methodNames` must be an array of strings");for(const e of r)if(!Qr.includes(e))throw typeof e!="string"?new TypeError("`methodNames` element must be a string"):new Error(`${e} is not Emittery method`);return r}const we=r=>r===Je||r===Ze;function rt(r,e,t){if(we(e))try{et=!0,r.emit(e,t)}finally{et=!1}}class ve{static mixin(e,t){return t=Yr(t),n=>{if(typeof n!="function")throw new TypeError("`target` must be function");for(const o of t)if(n.prototype[o]!==void 0)throw new Error(`The property \\`${o}\\` already exists on \\`target\\``);function i(){return Object.defineProperty(this,e,{enumerable:!1,value:new ve}),this[e]}Object.defineProperty(n.prototype,e,{enumerable:!1,get:i});const s=o=>function(...a){return this[e][o](...a)};for(const o of t)Object.defineProperty(n.prototype,o,{enumerable:!1,value:s(o)});return n}}static get isDebugEnabled(){var e,t;if(typeof((e=globalThis.process)==null?void 0:e.env)!="object")return Ht;const{env:n}=(t=globalThis.process)!=null?t:{env:{}};return n.DEBUG==="emittery"||n.DEBUG==="*"||Ht}static set isDebugEnabled(e){Ht=e}constructor(e={}){var t;K.set(this,new Set),ce.set(this,new Map),j.set(this,new Map),j.get(this).set(Ke,new Set),this.debug=(t=e.debug)!=null?t:{},this.debug.enabled===void 0&&(this.debug.enabled=!1),this.debug.logger||(this.debug.logger=(n,i,s,o)=>{try{o=JSON.stringify(o)}catch{o=`Object with the following keys failed to stringify: ${Object.keys(o).join(",")}`}(typeof s=="symbol"||typeof s=="number")&&(s=s.toString());const a=new Date,c=`${a.getHours()}:${a.getMinutes()}:${a.getSeconds()}.${a.getMilliseconds()}`;console.log(`[${c}][emittery:${n}][${i}] Event Name: ${s}\n data: ${o}`)})}logIfDebugEnabled(e,t,n){(ve.isDebugEnabled||this.debug.enabled)&&this.debug.logger(e,this.debug.name,t,n)}on(e,t){tt(t),e=Array.isArray(e)?e:[e];for(const n of e){_e(n);let i=Ee(this,n);i||(i=new Set,ce.get(this).set(n,i)),i.add(t),this.logIfDebugEnabled("subscribe",n,void 0),we(n)||rt(this,Je,{eventName:n,listener:t})}return this.off.bind(this,e,t)}off(e,t){tt(t),e=Array.isArray(e)?e:[e];for(const n of e){_e(n);const i=Ee(this,n);i&&(i.delete(t),i.size===0&&ce.get(this).delete(n)),this.logIfDebugEnabled("unsubscribe",n,void 0),we(n)||rt(this,Ze,{eventName:n,listener:t})}}once(e){let t;const n=new Promise(i=>{t=this.on(e,s=>{t(),i(s)})});return n.off=t,n}events(e){e=Array.isArray(e)?e:[e];for(const t of e)_e(t);return Xr(this,e)}async emit(e,t){var n;if(_e(e),we(e)&&!et)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emit",e,t),Gi(this,e,t);const i=(n=Ee(this,e))!=null?n:new Set,s=K.get(this),o=[...i],a=we(e)?[]:[...s];await jr,await Promise.all([...o.map(async c=>{if(i.has(c))return c(t)}),...a.map(async c=>{if(s.has(c))return c(e,t)})])}async emitSerial(e,t){var n;if(_e(e),we(e)&&!et)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emitSerial",e,t);const i=(n=Ee(this,e))!=null?n:new Set,s=K.get(this),o=[...i],a=[...s];await jr;for(const c of o)i.has(c)&&await c(t);for(const c of a)s.has(c)&&await c(e,t)}onAny(e){return tt(e),this.logIfDebugEnabled("subscribeAny",void 0,void 0),K.get(this).add(e),rt(this,Je,{listener:e}),this.offAny.bind(this,e)}anyEvent(){return Xr(this)}offAny(e){tt(e),this.logIfDebugEnabled("unsubscribeAny",void 0,void 0),rt(this,Ze,{listener:e}),K.get(this).delete(e)}clearListeners(e){e=Array.isArray(e)?e:[e];for(const t of e)if(this.logIfDebugEnabled("clear",t,void 0),typeof t=="string"||typeof t=="symbol"||typeof t=="number"){const n=Ee(this,t);n&&n.clear();const i=De(this,t);if(i){for(const s of i)s.finish();i.clear()}}else{K.get(this).clear();for(const[n,i]of ce.get(this).entries())i.clear(),ce.get(this).delete(n);for(const[n,i]of j.get(this).entries()){for(const s of i)s.finish();i.clear(),j.get(this).delete(n)}}}listenerCount(e){var t,n,i,s,o,a;e=Array.isArray(e)?e:[e];let c=0;for(const u of e){if(typeof u=="string"){c+=K.get(this).size+((n=(t=Ee(this,u))==null?void 0:t.size)!=null?n:0)+((s=(i=De(this,u))==null?void 0:i.size)!=null?s:0)+((a=(o=De(this))==null?void 0:o.size)!=null?a:0);continue}typeof u<"u"&&_e(u),c+=K.get(this).size;for(const d of ce.get(this).values())c+=d.size;for(const d of j.get(this).values())c+=d.size}return c}bindMethods(e,t){if(typeof e!="object"||e===null)throw new TypeError("`target` must be an object");t=Yr(t);for(const n of t){if(e[n]!==void 0)throw new Error(`The property \\`${n}\\` already exists on \\`target\\``);Object.defineProperty(e,n,{enumerable:!1,value:this[n].bind(this)})}}}const Qr=Object.getOwnPropertyNames(ve.prototype).filter(r=>r!=="constructor");Object.defineProperty(ve,"listenerAdded",{value:Je,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(ve,"listenerRemoved",{value:Ze,writable:!1,enumerable:!0,configurable:!1});function $i(r){return r.onAny&&r.emit}async function Wi(r,e){const{functionName:t,args:n}=r;if(!e.instance)throw"instance not initialized";if(!t)throw"missing function name to call";if(!e.instance[t])throw`undefined function [${t}] in class ${e.instance.constructor.workerId}`;Be(r,await e.instance[t](...n??[]))}const qr=Vt("registeredWorkers",{});function Vi(r,e){e.workerId=r,Hr()&&(qr[e.workerId]=e)}function Hi(r,e){if(!r.args)throw"Missing className while initializing worker";const[t,n]=r.args,i=qr[t];if(i)e.instance=new i(r.args.slice(1));else throw`unknown worker class ${t}`;qe(n,Vr),$i(e.instance)&&e.instance.onAny((s,o)=>{Be({type:xe.EVENT},{name:s,data:o})}),Be(r,typeof e.instance!==void 0)}async function ji(r,e){const{args:t}=r;if(!e.instance)throw"instance not initialized";let n;e.instance.terminate&&(n=await e.instance.terminate(...t??[])),Be(r,n)}function Xi(r){if(!r.args)throw"Missing globals while syncing";qe(r.args[0],Vr),Be(r,{})}function Yi(){const r={};onmessage=async e=>{const t=e.data;switch(t.type){case xe.INIT:Hi(t,r);break;case xe.FORWARD:Wi(t,r);break;case xe.TERMINATE:ji(t,r);break;case xe.GLOBALS_SYNC:Xi(t);break}}}Hr()&&Yi();const J=new WeakMap,ue=new WeakMap,X=new WeakMap,nt=Symbol("anyProducer"),Kr=Promise.resolve(),it=Symbol("listenerAdded"),st=Symbol("listenerRemoved");let ot=!1,jt=!1;const at=r=>typeof r=="string"||typeof r=="symbol"||typeof r=="number";function Te(r){if(!at(r))throw new TypeError("`eventName` must be a string, symbol, or number")}function ct(r){if(typeof r!="function")throw new TypeError("listener must be a function")}function Ae(r,e){const t=ue.get(r);if(t.has(e))return t.get(e)}function Me(r,e){const t=at(e)?e:nt,n=X.get(r);if(n.has(t))return n.get(t)}function Qi(r,e,t){const n=X.get(r);if(n.has(e))for(const i of n.get(e))i.enqueue(t);if(n.has(nt)){const i=Promise.all([e,t]);for(const s of n.get(nt))s.enqueue(i)}}function Jr(r,e){e=Array.isArray(e)?e:[e];let t=!1,n=()=>{},i=[];const s={enqueue(o){i.push(o),n()},finish(){t=!0,n()}};for(const o of e){let a=Me(r,o);a||(a=new Set,X.get(r).set(o,a)),a.add(s)}return{async next(){return i?i.length===0?t?(i=void 0,this.next()):(await new Promise(o=>{n=o}),this.next()):{done:!1,value:await i.shift()}:{done:!0}},async return(o){i=void 0;for(const a of e){const c=Me(r,a);c&&(c.delete(s),c.size===0&&X.get(r).delete(a))}return n(),arguments.length>0?{done:!0,value:await o}:{done:!0}},[Symbol.asyncIterator](){return this}}}function Zr(r){if(r===void 0)return en;if(!Array.isArray(r))throw new TypeError("`methodNames` must be an array of strings");for(const e of r)if(!en.includes(e))throw typeof e!="string"?new TypeError("`methodNames` element must be a string"):new Error(`${e} is not Emittery method`);return r}const Ie=r=>r===it||r===st;function ut(r,e,t){if(Ie(e))try{ot=!0,r.emit(e,t)}finally{ot=!1}}class Y{static mixin(e,t){return t=Zr(t),n=>{if(typeof n!="function")throw new TypeError("`target` must be function");for(const o of t)if(n.prototype[o]!==void 0)throw new Error(`The property \\`${o}\\` already exists on \\`target\\``);function i(){return Object.defineProperty(this,e,{enumerable:!1,value:new Y}),this[e]}Object.defineProperty(n.prototype,e,{enumerable:!1,get:i});const s=o=>function(...a){return this[e][o](...a)};for(const o of t)Object.defineProperty(n.prototype,o,{enumerable:!1,value:s(o)});return n}}static get isDebugEnabled(){if(typeof globalThis.process?.env!="object")return jt;const{env:e}=globalThis.process??{env:{}};return e.DEBUG==="emittery"||e.DEBUG==="*"||jt}static set isDebugEnabled(e){jt=e}constructor(e={}){J.set(this,new Set),ue.set(this,new Map),X.set(this,new Map),X.get(this).set(nt,new Set),this.debug=e.debug??{},this.debug.enabled===void 0&&(this.debug.enabled=!1),this.debug.logger||(this.debug.logger=(t,n,i,s)=>{try{s=JSON.stringify(s)}catch{s=`Object with the following keys failed to stringify: ${Object.keys(s).join(",")}`}(typeof i=="symbol"||typeof i=="number")&&(i=i.toString());const o=new Date,a=`${o.getHours()}:${o.getMinutes()}:${o.getSeconds()}.${o.getMilliseconds()}`;console.log(`[${a}][emittery:${t}][${n}] Event Name: ${i}\n data: ${s}`)})}logIfDebugEnabled(e,t,n){(Y.isDebugEnabled||this.debug.enabled)&&this.debug.logger(e,this.debug.name,t,n)}on(e,t,{signal:n}={}){ct(t),e=Array.isArray(e)?e:[e];for(const s of e){Te(s);let o=Ae(this,s);o||(o=new Set,ue.get(this).set(s,o)),o.add(t),this.logIfDebugEnabled("subscribe",s,void 0),Ie(s)||ut(this,it,{eventName:s,listener:t})}const i=()=>{this.off(e,t),n?.removeEventListener("abort",i)};return n?.addEventListener("abort",i,{once:!0}),n?.aborted&&i(),i}off(e,t){ct(t),e=Array.isArray(e)?e:[e];for(const n of e){Te(n);const i=Ae(this,n);i&&(i.delete(t),i.size===0&&ue.get(this).delete(n)),this.logIfDebugEnabled("unsubscribe",n,void 0),Ie(n)||ut(this,st,{eventName:n,listener:t})}}once(e,t){if(t!==void 0&&typeof t!="function")throw new TypeError("predicate must be a function");let n;const i=new Promise(s=>{n=this.on(e,o=>{t&&!t(o)||(n(),s(o))})});return i.off=n,i}events(e){e=Array.isArray(e)?e:[e];for(const t of e)Te(t);return Jr(this,e)}async emit(e,t){if(Te(e),Ie(e)&&!ot)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emit",e,t),Qi(this,e,t);const n=Ae(this,e)??new Set,i=J.get(this),s=[...n],o=Ie(e)?[]:[...i];await Kr,await Promise.all([...s.map(async a=>{if(n.has(a))return a(t)}),...o.map(async a=>{if(i.has(a))return a(e,t)})])}async emitSerial(e,t){if(Te(e),Ie(e)&&!ot)throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");this.logIfDebugEnabled("emitSerial",e,t);const n=Ae(this,e)??new Set,i=J.get(this),s=[...n],o=[...i];await Kr;for(const a of s)n.has(a)&&await a(t);for(const a of o)i.has(a)&&await a(e,t)}onAny(e,{signal:t}={}){ct(e),this.logIfDebugEnabled("subscribeAny",void 0,void 0),J.get(this).add(e),ut(this,it,{listener:e});const n=()=>{this.offAny(e),t?.removeEventListener("abort",n)};return t?.addEventListener("abort",n,{once:!0}),t?.aborted&&n(),n}anyEvent(){return Jr(this)}offAny(e){ct(e),this.logIfDebugEnabled("unsubscribeAny",void 0,void 0),ut(this,st,{listener:e}),J.get(this).delete(e)}clearListeners(e){e=Array.isArray(e)?e:[e];for(const t of e)if(this.logIfDebugEnabled("clear",t,void 0),at(t)){const n=Ae(this,t);n&&n.clear();const i=Me(this,t);if(i){for(const s of i)s.finish();i.clear()}}else{J.get(this).clear();for(const[n,i]of ue.get(this).entries())i.clear(),ue.get(this).delete(n);for(const[n,i]of X.get(this).entries()){for(const s of i)s.finish();i.clear(),X.get(this).delete(n)}}}listenerCount(e){e=Array.isArray(e)?e:[e];let t=0;for(const n of e){if(at(n)){t+=J.get(this).size+(Ae(this,n)?.size??0)+(Me(this,n)?.size??0)+(Me(this)?.size??0);continue}n!==void 0&&Te(n),t+=J.get(this).size;for(const i of ue.get(this).values())t+=i.size;for(const i of X.get(this).values())t+=i.size}return t}bindMethods(e,t){if(typeof e!="object"||e===null)throw new TypeError("`target` must be an object");t=Zr(t);for(const n of t){if(e[n]!==void 0)throw new Error(`The property \\`${n}\\` already exists on \\`target\\``);Object.defineProperty(e,n,{enumerable:!1,value:this[n].bind(this)})}}}const en=Object.getOwnPropertyNames(Y.prototype).filter(r=>r!=="constructor");Object.defineProperty(Y,"listenerAdded",{value:it,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(Y,"listenerRemoved",{value:st,writable:!1,enumerable:!0,configurable:!1});var qi=Object.defineProperty,Ki=(r,e,t)=>e in r?qi(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Ji=(r,e,t)=>(Ki(r,e+"",t),t);const Zi="hlg.tokbox.com/prod/logging/vcp_webrtc",es="https://",ts=1e4;let ft;const rs=new Uint8Array(16);function ns(){if(!ft&&(ft=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!ft))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return ft(rs)}const F=[];for(let r=0;r<256;++r)F.push((r+256).toString(16).slice(1));function is(r,e=0){return(F[r[e+0]]+F[r[e+1]]+F[r[e+2]]+F[r[e+3]]+"-"+F[r[e+4]]+F[r[e+5]]+"-"+F[r[e+6]]+F[r[e+7]]+"-"+F[r[e+8]]+F[r[e+9]]+"-"+F[r[e+10]]+F[r[e+11]]+F[r[e+12]]+F[r[e+13]]+F[r[e+14]]+F[r[e+15]]).toLowerCase()}const ss=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),tn={randomUUID:ss};function os(r,e,t){if(tn.randomUUID&&!r)return tn.randomUUID();r=r||{};const n=r.random||(r.rng||ns)();return n[6]=n[6]&15|64,n[8]=n[8]&63|128,is(n)}function Xt(r,e){globalThis.vonage||(globalThis.vonage={}),globalThis.vonage.workerizer||(globalThis.vonage.workerizer={});let t=globalThis.vonage.workerizer;return t[r]||(t[r]=e),t[r]}const Z=Xt("globals",{});var fe=(r=>(r.INIT="INIT",r.FORWARD="FORWARD",r.TERMINATE="TERMINATE",r.GLOBALS_SYNC="GLOBALS_SYNC",r))(fe||{});function rn(r){return[ImageBitmap,ReadableStream,WritableStream].some(e=>r instanceof e)}let as=0;function cs(r,e,t,n,i){const s=as++;return r.postMessage({id:s,type:e,functionName:t,args:n},n.filter(o=>rn(o))),new Promise(o=>{i?.set(s,o)})}function Oe(r,e){const{id:t,type:n}=r,i=Array.isArray(e)?e:[e];postMessage({id:t,type:n,result:e},i.filter(s=>rn(s)))}const nn=Xt("workerized",{});function sn(){return typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope}async function us(){if(sn())Oe({type:fe.GLOBALS_SYNC},Z);else{const r=[];for(const e in nn){const{worker:t,resolvers:n}=nn[e].workerContext;t&&r.push(cs(t,fe.GLOBALS_SYNC,"",[Z],n))}await Promise.all(r)}}function lt(r,e){if(Array.isArray(e))e.splice(0,e.length);else if(typeof e=="object")for(const t in e)delete e[t];for(const t in r)Array.isArray(r[t])?(e[t]=[],lt(r[t],e[t])):typeof r[t]=="object"?(e[t]={},lt(r[t],e[t])):e[t]=r[t]}async function fs(r,e){const{functionName:t,args:n}=r;if(!e.instance)throw"instance not initialized";if(!t)throw"missing function name to call";if(!e.instance[t])throw`undefined function [${t}] in class ${e.instance.constructor.workerId}`;Oe(r,await e.instance[t](...n??[]))}const ls=Xt("registeredWorkers",{});function ds(r,e){if(!r.args)throw"Missing className while initializing worker";const[t,n]=r.args,i=ls[t];if(i)e.instance=new i(r.args.slice(1));else throw`unknown worker class ${t}`;lt(n,Z),Oe(r,typeof e.instance!==void 0)}async function hs(r,e){const{args:t}=r;if(!e.instance)throw"instance not initialized";let n;e.instance.terminate&&(n=await e.instance.terminate(...t??[])),Oe(r,n)}function ms(r){if(!r.args)throw"Missing globals while syncing";lt(r.args[0],Z),Oe(r,{})}function ps(){const r={};onmessage=async e=>{const t=e.data;switch(t.type){case fe.INIT:ds(t,r);break;case fe.FORWARD:fs(t,r);break;case fe.TERMINATE:hs(t,r);break;case fe.GLOBALS_SYNC:ms(t);break}}}sn()&&ps();function gs(r,e){return Z[r]||(Z[r]=e),[()=>Z[r],async t=>{Z[r]=t,await us()}]}function ys(r,e){return gs(r,e)}const[bs,xs]=ys("metadata");function _s(r){xs(r)}function Yt(){return bs()}let Qt=class{constructor(e,t){Ji(this,"uuid"),this.config=e,this.uuid=t??os()}async send(e){var t,n,i;const{appId:s,sourceType:o}=(t=Yt())!=null?t:{};if(!s||!o)return"metadata missing";const a=new AbortController,c=setTimeout(()=>a.abort(),ts);return await((i=(n=this.config)==null?void 0:n.fetch)!=null?i:fetch)(this.getUrl(),{method:"POST",headers:this.getHeaders(),body:JSON.stringify(this.buildReport(e)),signal:a.signal}),clearTimeout(c),"success"}getUrl(){var e;let t=(e=Yt().proxyUrl)!=null?e:es;return t+=(t.at(-1)==="/"?"":"/")+Zi,t}getHeaders(){return{"Content-Type":"application/json"}}buildReport(e){const t=Yt();return{guid:this.uuid,...e,applicationId:t.appId,timestamp:Date.now(),proxyUrl:t.proxyUrl,source:t.sourceType}}};const dt="3.0.2",qt=class{};qt.updates={transformer_new:"New transformer",transformer_null:"Null transformer"},qt.errors={transformer_none:"No transformers provided",transformer_start:"Cannot start transformer",transformer_transform:"Cannot transform frame",transformer_flush:"Cannot flush transformer",readable_null:"Readable is null",writable_null:"Writable is null"};let le=qt;function Es(r){return typeof r=="object"&&r!==null&&"message"in r&&typeof r.message=="string"}function ws(r){if(Es(r))return r;try{return new Error(JSON.stringify(r))}catch{return new Error(String(r))}}function Kt(r){return ws(r).message}class vs{constructor(e,t){this.config=e,this.frameTransformedCount=0,this.frameFromSourceCount=0,this.startAt=0,this.reporter=new Qt(e,t)}async onFrameFromSource(){this.frameFromSourceCount++}get fps(){const{startAt:e,frameFromSourceCount:t}=this,n=(Date.now()-e)/1e3;return t/n}async onFrameTransformed(e={},t=!1){this.startAt===0&&(this.startAt=Date.now()),this.frameTransformedCount++;const{startAt:n,frameTransformedCount:i,frameFromSourceCount:s}=this,o=Date.now(),a=(o-n)/1e3,c=i/a,u=s/a;return t||this.frameTransformedCount>=this.config.loggingIntervalFrameCount?(this.frameFromSourceCount=0,this.frameTransformedCount=0,this.startAt=o,this.reporter.config=this.config,this.reporter.send({...this.config.report,variation:"QoS",fps:u,transformedFps:c,framesTransformed:i,...e})):"success"}}var Jt=(r=>(r.pipeline_ended="pipeline_ended",r.pipeline_ended_with_error="pipeline_ended_with_error",r.pipeline_started="pipeline_started",r.pipeline_started_with_error="pipeline_started_with_error",r.pipeline_restarted="pipeline_restarted",r.pipeline_restarted_with_error="pipeline_restarted_with_error",r))(Jt||{});const Ts=500,As=.8;class Is extends Y{constructor(e,t){super(),this.reporter_=new Qt,this.reporterQos_=new vs({loggingIntervalFrameCount:Ts,report:{version:dt}}),this.index_=t,this.transformer_=e,this.shouldStop_=!1,this.isFlashed_=!1,this.mediaTransformerQosReportStartTimestamp_=0,this.videoHeight_=0,this.videoWidth_=0,this.trackExpectedRate_=-1,this.transformerType_="Custom","getTransformerType"in e&&(this.transformerType_=e.getTransformerType()),this.report({variation:"Create"})}setTrackExpectedRate(e){this.trackExpectedRate_=e}async start(e){if(this.controller_=e,this.transformer_&&typeof this.transformer_.start=="function")try{await this.transformer_.start(e)}catch(t){this.report({message:le.errors.transformer_start,variation:"Error",error:Kt(t)});const n={eventMetaData:{transformerIndex:this.index_},error:t,function:"start"};this.emit("error",n)}}async transform(e,t){if(this.mediaTransformerQosReportStartTimestamp_===0&&(this.mediaTransformerQosReportStartTimestamp_=Date.now()),e instanceof VideoFrame&&(this.videoHeight_=e?.displayHeight??0,this.videoWidth_=e?.displayWidth??0),this.reporterQos_.onFrameFromSource(),this.transformer_)if(this.shouldStop_)console.warn("[Pipeline] flush from transform"),e.close(),this.flush(t),t.terminate();else{try{await this.transformer_.transform?.(e,t),this.reportQos()}catch(n){this.report({message:le.errors.transformer_transform,variation:"Error",error:Kt(n)});const i={eventMetaData:{transformerIndex:this.index_},error:n,function:"transform"};this.emit("error",i)}if(this.trackExpectedRate_!=-1&&this.trackExpectedRate_*As>this.reporterQos_.fps){const n={eventMetaData:{transformerIndex:this.index_},warningType:"fps_drop",dropInfo:{requested:this.trackExpectedRate_,current:this.reporterQos_.fps}};this.emit("warn",n)}}}async flush(e){if(this.transformer_&&typeof this.transformer_.flush=="function"&&!this.isFlashed_){this.isFlashed_=!0;try{await this.transformer_.flush(e)}catch(t){this.report({message:le.errors.transformer_flush,variation:"Error",error:Kt(t)});const n={eventMetaData:{transformerIndex:this.index_},error:t,function:"flush"};this.emit("error",n)}}this.reportQos(!0),this.report({variation:"Delete"})}stop(){console.log("[Pipeline] Stop stream."),this.controller_&&(this.flush(this.controller_),this.controller_.terminate()),this.shouldStop_=!0}report(e){this.reporter_.send({version:dt,action:"MediaTransformer",transformerType:this.transformerType_,...e})}reportQos(e=!1){this.reporterQos_.config={...this.reporterQos_.config},this.reporterQos_.onFrameTransformed({version:dt,action:"MediaTransformer",transformerType:this.transformerType_,videoWidth:this.videoWidth_,videoHeight:this.videoHeight_},e)}}class Ss extends Y{constructor(e){super(),this.transformers_=[],this.trackExpectedRate_=-1;for(let t=0;t<e.length;t++){let n=new Is(e[t],t);n.on("error",i=>{this.emit("error",i)}),n.on("warn",i=>{this.emit("warn",i)}),this.transformers_.push(n)}}setTrackExpectedRate(e){this.trackExpectedRate_=e;for(let t of this.transformers_)t.setTrackExpectedRate(this.trackExpectedRate_)}async start(e,t){if(!this.transformers_||this.transformers_.length===0){console.log("[Pipeline] No transformers.");return}try{let n=e;for(let i of this.transformers_)e=e.pipeThrough(new TransformStream(i));e.pipeTo(t).then(async()=>{console.log("[Pipeline] Setup."),await t.abort(),await n.cancel(),this.emit("pipelineInfo","pipeline_ended")}).catch(async i=>{e.cancel().then(()=>{console.log("[Pipeline] Shutting down streams after abort.")}).catch(s=>{console.error("[Pipeline] Error from stream transform:",s)}),await t.abort(i),await n.cancel(i),this.emit("pipelineInfo","pipeline_ended_with_error")})}catch{this.emit("pipelineInfo","pipeline_started_with_error"),this.destroy();return}this.emit("pipelineInfo","pipeline_started"),console.log("[Pipeline] Pipeline started.")}async destroy(){console.log("[Pipeline] Destroying Pipeline.");for(let e of this.transformers_)e.stop()}}class Rs extends Y{constructor(){super(),this.reporter_=new Qt,this.trackExpectedRate_=-1,this.report({variation:"Create"})}setTrackExpectedRate(e){this.trackExpectedRate_=e,this.pipeline_&&this.pipeline_.setTrackExpectedRate(this.trackExpectedRate_)}async transform(e,t){if(this.isTrack(e)){if(e.kind==="video"){const n=new MediaStreamTrackProcessor({track:e}),i=new VideoTrackGenerator;return this.readable_=n.readable,this.writable_=i.writable,await this.transformInternal(),i.track}throw Error("Cannot process audio tracks inside a web worker when passing a track to transform")}else return this.readable_=e,this.writable_=t,this.transformInternal()}transformInternal(){return new Promise(async(e,t)=>{if(!this.transformers_||this.transformers_.length===0){this.report({message:le.errors.transformer_none,variation:"Error"}),t("[MediaProcessor] Need to set transformers.");return}if(!this.readable_){this.report({variation:"Error",message:le.errors.readable_null}),t("[MediaProcessor] Readable is null.");return}if(!this.writable_){this.report({variation:"Error",message:le.errors.writable_null}),t("[MediaProcessor] Writable is null.");return}let n=!1;this.pipeline_&&(n=!0,this.pipeline_.clearListeners(),this.pipeline_.destroy()),this.pipeline_=new Ss(this.transformers_),this.pipeline_.on("warn",i=>{this.emit("warn",i)}),this.pipeline_.on("error",i=>{this.emit("error",i)}),this.pipeline_.on("pipelineInfo",i=>{n&&(i==="pipeline_started"?i=Jt.pipeline_restarted:i==="pipeline_started_with_error"&&(i=Jt.pipeline_restarted_with_error)),this.emit("pipelineInfo",i)}),this.trackExpectedRate_!=-1&&this.pipeline_.setTrackExpectedRate(this.trackExpectedRate_),this.pipeline_.start(this.readable_,this.writable_).then(()=>{e()}).catch(i=>{t(i)})})}setTransformers(e){return this.report({variation:"Update",message:le.updates.transformer_new}),this.transformers_=e,this.readable_&&this.writable_?this.transformInternal():Promise.resolve()}destroy(){return new Promise(async e=>{this.pipeline_&&this.pipeline_.destroy(),this.report({variation:"Delete"}),e()})}report(e){this.reporter_.send({version:dt,action:"MediaProcessor",...e})}isTrack(e){return"kind"in e}}var Fs=Object.defineProperty,Ps=(r,e,t)=>e in r?Fs(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ks=(r,e,t)=>(Ps(r,e+"",t),t);const Cs="hlg.tokbox.com/prod/logging/vcp_webrtc",Bs="https://",Ds=1e4;let ht;const Ms=new Uint8Array(16);function Os(){if(!ht&&(ht=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!ht))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return ht(Ms)}const P=[];for(let r=0;r<256;++r)P.push((r+256).toString(16).slice(1));function Us(r,e=0){return(P[r[e+0]]+P[r[e+1]]+P[r[e+2]]+P[r[e+3]]+"-"+P[r[e+4]]+P[r[e+5]]+"-"+P[r[e+6]]+P[r[e+7]]+"-"+P[r[e+8]]+P[r[e+9]]+"-"+P[r[e+10]]+P[r[e+11]]+P[r[e+12]]+P[r[e+13]]+P[r[e+14]]+P[r[e+15]]).toLowerCase()}const Ns=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),on={randomUUID:Ns};function Ls(r,e,t){if(on.randomUUID&&!e&&!r)return on.randomUUID();r=r||{};const n=r.random||(r.rng||Os)();return n[6]=n[6]&15|64,n[8]=n[8]&63|128,Us(n)}function Zt(r,e){globalThis.vonage||(globalThis.vonage={}),globalThis.vonage.workerizer||(globalThis.vonage.workerizer={});let t=globalThis.vonage.workerizer;return t[r]||(t[r]=e),t[r]}const ee=Zt("globals",{});var de=(r=>(r.INIT="INIT",r.FORWARD="FORWARD",r.TERMINATE="TERMINATE",r.GLOBALS_SYNC="GLOBALS_SYNC",r))(de||{});function an(r){return[ImageBitmap,ReadableStream,WritableStream].some(e=>r instanceof e)}let zs=0;function Gs(r,e,t,n,i){const s=zs++;return r.postMessage({id:s,type:e,functionName:t,args:n},n.filter(o=>an(o))),new Promise(o=>{i?.set(s,o)})}function Ue(r,e){const{id:t,type:n}=r,i=Array.isArray(e)?e:[e];postMessage({id:t,type:n,result:e},i.filter(s=>an(s)))}const cn=Zt("workerized",{});function un(){return typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope}async function $s(){if(un())Ue({type:de.GLOBALS_SYNC},ee);else{const r=[];for(const e in cn){const{worker:t,resolvers:n}=cn[e].workerContext;t&&r.push(Gs(t,de.GLOBALS_SYNC,"",[ee],n))}await Promise.all(r)}}function mt(r,e){if(Array.isArray(e))e.splice(0,e.length);else if(typeof e=="object")for(const t in e)delete e[t];for(const t in r)Array.isArray(r[t])?(e[t]=[],mt(r[t],e[t])):typeof r[t]=="object"?(e[t]={},mt(r[t],e[t])):e[t]=r[t]}async function Ws(r,e){const{functionName:t,args:n}=r;if(!e.instance)throw"instance not initialized";if(!t)throw"missing function name to call";if(!e.instance[t])throw`undefined function [${t}] in class ${e.instance.constructor.workerId}`;Ue(r,await e.instance[t](...n??[]))}const Vs=Zt("registeredWorkers",{});function Hs(r,e){if(!r.args)throw"Missing className while initializing worker";const[t,n]=r.args,i=Vs[t];if(i)e.instance=new i(r.args.slice(1));else throw`unknown worker class ${t}`;mt(n,ee),Ue(r,typeof e.instance!==void 0)}async function js(r,e){const{args:t}=r;if(!e.instance)throw"instance not initialized";let n;e.instance.terminate&&(n=await e.instance.terminate(...t??[])),Ue(r,n)}function Xs(r){if(!r.args)throw"Missing globals while syncing";mt(r.args[0],ee),Ue(r,{})}function Ys(){const r={};onmessage=async e=>{const t=e.data;switch(t.type){case de.INIT:Hs(t,r);break;case de.FORWARD:Ws(t,r);break;case de.TERMINATE:js(t,r);break;case de.GLOBALS_SYNC:Xs(t);break}}}un()&&Ys();function Qs(r,e){return ee[r]||(ee[r]=e),[()=>ee[r],async t=>{ee[r]=t,await $s()}]}function qs(r,e){return Qs(r,e)}const[Ks]=qs("metadata");function er(){return Ks()}class Js{constructor(e){ks(this,"uuid",Ls()),this.config=e}async send(e){var t,n,i;const{appId:s,sourceType:o}=(t=er())!=null?t:{};if(!s||!o)return"metadata missing";const a=new AbortController,c=setTimeout(()=>a.abort(),Ds);return await((i=(n=this.config)==null?void 0:n.fetch)!=null?i:fetch)(this.getUrl(),{method:"POST",headers:this.getHeaders(),body:JSON.stringify(this.buildReport(e)),signal:a.signal}),clearTimeout(c),"success"}getUrl(){var e;let t=(e=er().proxyUrl)!=null?e:Bs;return t+=(t.at(-1)==="/"?"":"/")+Cs,t}getHeaders(){return{"Content-Type":"application/json"}}buildReport(e){const t=er();return{guid:this.uuid,...e,applicationId:t.appId,timestamp:Date.now(),proxyUrl:t.proxyUrl,source:t.sourceType}}}const Zs="7.0.1";var pt=(r=>(r.Low="Low",r.High="High",r))(pt||{}),tr=(r=>(r.FAST="FAST",r.PRECISE="PRECISE",r))(tr||{}),gt=(r=>(r.CANVAS="CANVAS",r.WEBGL="WEBGL",r))(gt||{});function eo(){const e=new OffscreenCanvas(0,0).getContext("webgl2",{failIfMajorPerformanceCaveat:!0});if(e){const t=e?.getExtension("WEBGL_lose_context");t&&t.loseContext()}else return{supported:!1,message:"Your hardware does not perform good enough to run the library efficiently"};return{supported:!0}}class rr{constructor(){const e=new OffscreenCanvas(0,0),t=e.getContext("2d",{willReadFrequently:!0});if(!t)throw"Fail to retrieve 2d context";this.canvas=e,this.context=t}enablePostProcessing(){}disablePostProcessing(){}async profileWebgl(e){return[]}async render(e,t){return this.canvas}resizeCanvas(e){const{width:t,height:n}=e;this.canvas.width=t,this.canvas.height=n}renderSilhouette(e,t,n="none"){const{width:i,height:s}=e;this.context.save(),this.context.drawImage(t,0,0,t.width,t.height,0,0,i,s),this.context.filter="blur(5px)",this.context.globalCompositeOperation="source-in",this.context.drawImage(t,0,0,t.width,t.height,0,0,i,s),this.context.globalCompositeOperation="source-in",this.context.filter=n,this.context.drawImage(e,0,0,i,s,0,0,this.canvas.width,this.canvas.height),this.context.restore()}destroy(){}}class to extends rr{constructor(e){super(),this.radius=e}async render(e,t){super.resizeCanvas(e);const n=await createImageBitmap(t);return this.renderSilhouette(e,n),this.context.save(),this.context.filter=`blur(${this.radius}px)`,this.context.globalCompositeOperation="destination-over",this.context.drawImage(e,0,0,e.width,e.height),this.context.restore(),super.render(e,t)}}class ro extends rr{constructor(e){super(),this.radius=e}async render(e,t){super.resizeCanvas(e);const n=await createImageBitmap(t);return this.renderSilhouette(e,n,`blur(${this.radius}px)`),this.context.save(),this.context.filter="none",this.context.globalCompositeOperation="destination-over",this.context.drawImage(e,0,0,e.width,e.height),this.context.restore(),super.render(e,t)}}class no extends rr{setBackgroundImage(e){this.backgroundImage=e}async render(e,t){super.resizeCanvas(e);const n=await createImageBitmap(t);return this.renderSilhouette(e,n),this.backgroundImage&&(this.context.save(),this.context.filter="none",this.context.globalCompositeOperation="destination-over",this.context.drawImage(this.backgroundImage,0,0,this.backgroundImage.width,this.backgroundImage.height,0,0,e.width,e.height),this.context.restore()),super.render(e,t)}}const nr=5120,Ne=5121,ir=5122,sr=5123,or=5124,ar=5125,cr=5126,io=32819,so=32820,oo=33635,ao=5131,co=33640,uo=35899,fo=35902,lo=36269,ho=34042,fn={};{const r=fn;r[nr]=Int8Array,r[Ne]=Uint8Array,r[ir]=Int16Array,r[sr]=Uint16Array,r[or]=Int32Array,r[ar]=Uint32Array,r[cr]=Float32Array,r[io]=Uint16Array,r[so]=Uint16Array,r[oo]=Uint16Array,r[ao]=Uint16Array,r[co]=Uint32Array,r[uo]=Uint32Array,r[fo]=Uint32Array,r[lo]=Uint32Array,r[ho]=Uint32Array}function ur(r){if(r instanceof Int8Array)return nr;if(r instanceof Uint8Array||r instanceof Uint8ClampedArray)return Ne;if(r instanceof Int16Array)return ir;if(r instanceof Uint16Array)return sr;if(r instanceof Int32Array)return or;if(r instanceof Uint32Array)return ar;if(r instanceof Float32Array)return cr;throw new Error("unsupported typed array type")}function ln(r){if(r===Int8Array)return nr;if(r===Uint8Array||r===Uint8ClampedArray)return Ne;if(r===Int16Array)return ir;if(r===Uint16Array)return sr;if(r===Int32Array)return or;if(r===Uint32Array)return ar;if(r===Float32Array)return cr;throw new Error("unsupported typed array type")}function dn(r){const e=fn[r];if(!e)throw new Error("unknown gl type");return e}const yt=typeof SharedArrayBuffer<"u"?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function hn(...r){console.error(...r)}const mn=new Map;function bt(r,e){if(!r||typeof r!="object")return!1;let t=mn.get(e);t||(t=new WeakMap,mn.set(e,t));let n=t.get(r);if(n===void 0){const i=Object.prototype.toString.call(r);n=i.substring(8,i.length-1)===e,t.set(r,n)}return n}function mo(r,e){return typeof WebGLBuffer<"u"&&bt(e,"WebGLBuffer")}function po(r,e){return typeof WebGLRenderbuffer<"u"&&bt(e,"WebGLRenderbuffer")}function fr(r,e){return typeof WebGLTexture<"u"&&bt(e,"WebGLTexture")}function go(r,e){return typeof WebGLSampler<"u"&&bt(e,"WebGLSampler")}const pn=35044,he=34962,yo=34963,bo=34660,xo=5120,_o=5121,Eo=5122,wo=5123,vo=5124,To=5125,gn=5126,yn={attribPrefix:""};function Ao(r,e,t,n,i){r.bindBuffer(e,t),r.bufferData(e,n,i||pn)}function bn(r,e,t,n){if(mo(r,e))return e;t=t||he;const i=r.createBuffer();return Ao(r,t,i,e,n),i}function xn(r){return r==="indices"}function Io(r){return r===Int8Array||r===Uint8Array}function So(r){return r.length?r:r.data}const Ro=/coord|texture/i,Fo=/color|colour/i;function Po(r,e){let t;if(Ro.test(r)?t=2:Fo.test(r)?t=4:t=3,e%t>0)throw new Error(`Can not guess numComponents for attribute \'${r}\'. Tried ${t} but ${e} values is not evenly divisible by ${t}. You should specify it.`);return t}function ko(r,e,t){return r.numComponents||r.size||Po(e,t||So(r).length)}function _n(r,e){if(yt(r))return r;if(yt(r.data))return r.data;Array.isArray(r)&&(r={data:r});let t=r.type?lr(r.type):void 0;return t||(xn(e)?t=Uint16Array:t=Float32Array),new t(r.data)}function Co(r){return typeof r=="number"?r:r?ln(r):gn}function lr(r){return typeof r=="number"?dn(r):r||Float32Array}function Bo(r,e){return{buffer:e.buffer,numValues:24,type:Co(e.type),arrayType:lr(e.type)}}function Do(r,e){const t=e.data||e,n=lr(e.type),i=t*n.BYTES_PER_ELEMENT,s=r.createBuffer();return r.bindBuffer(he,s),r.bufferData(he,i,e.drawType||pn),{buffer:s,numValues:t,type:ln(n),arrayType:n}}function Mo(r,e,t){const n=_n(e,t);return{arrayType:n.constructor,buffer:bn(r,n,void 0,e.drawType),type:ur(n),numValues:0}}function Oo(r,e){const t={};return Object.keys(e).forEach(function(n){if(!xn(n)){const i=e[n],s=i.attrib||i.name||i.attribName||yn.attribPrefix+n;if(i.value){if(!Array.isArray(i.value)&&!yt(i.value))throw new Error("array.value is not array or typedarray");t[s]={value:i.value}}else{let o;i.buffer&&i.buffer instanceof WebGLBuffer?o=Bo:typeof i=="number"||typeof i.data=="number"?o=Do:o=Mo;const{buffer:a,type:c,numValues:u,arrayType:d}=o(r,i,n),m=i.normalize!==void 0?i.normalize:Io(d),p=ko(i,n,u);t[s]={buffer:a,numComponents:p,type:c,normalize:m,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),r.bindBuffer(he,null),t}function Uo(r,e){return e===xo||e===_o?1:e===Eo||e===wo?2:e===vo||e===To||e===gn?4:0}const dr=["position","positions","a_position"];function No(r,e){let t,n;for(n=0;n<dr.length&&(t=dr[n],!(t in e||(t=yn.attribPrefix+t,t in e)));++n);n===dr.length&&(t=Object.keys(e)[0]);const i=e[t];if(!i.buffer)return 1;r.bindBuffer(he,i.buffer);const s=r.getBufferParameter(he,bo);r.bindBuffer(he,null);const o=Uo(r,i.type),a=s/o,c=i.numComponents||i.size,u=a/c;if(u%1!==0)throw new Error(`numComponents ${c} not correct for length ${length}`);return u}function Lo(r,e,t){const n=Oo(r,e),i=Object.assign({},t||{});i.attribs=Object.assign({},t?t.attribs:{},n);const s=e.indices;if(s){const o=_n(s,"indices");i.indices=bn(r,o,yo),i.numElements=o.length,i.elementType=ur(o)}else i.numElements||(i.numElements=No(r,i.attribs));return i}function Le(r){return!!r.texStorage2D}const En=(function(){const r={},e={};function t(n){const i=n.constructor.name;if(!r[i]){for(const s in n)if(typeof n[s]=="number"){const o=e[n[s]];e[n[s]]=o?`${o} | ${s}`:s}r[i]=!0}}return function(i,s){return t(i),e[s]||(typeof s=="number"?`0x${s.toString(16)}`:s)}})(),te={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},ze=yt,wn=(function(){let r;return function(){return r=r||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),r}})(),vn=6406,V=6407,A=6408,Tn=6409,An=6410,Ge=6402,In=34041,xt=33071,zo=9728,Go=9729,re=3553,ne=34067,me=32879,pe=35866,hr=34069,$o=34070,Wo=34071,Vo=34072,Ho=34073,jo=34074,mr=10241,pr=10240,_t=10242,Et=10243,Sn=32882,Xo=33082,Yo=33083,Qo=33084,qo=33085,Ko=34892,Jo=34893,gr=3317,Rn=3314,Fn=32878,Pn=3316,kn=3315,Cn=32877,Zo=37443,ea=37441,ta=37440,ra=33321,na=36756,ia=33325,sa=33326,oa=33330,aa=33329,ca=33338,ua=33337,fa=33340,la=33339,da=33323,ha=36757,ma=33327,pa=33328,ga=33336,ya=33335,ba=33332,xa=33331,_a=33334,Ea=33333,wa=32849,va=35905,Ta=36194,Aa=36758,Ia=35898,Sa=35901,Ra=34843,Fa=34837,Pa=36221,ka=36239,Ca=36215,Ba=36233,Da=36209,Ma=36227,Oa=32856,Ua=35907,Na=36759,La=32855,za=32854,Ga=32857,$a=34842,Wa=34836,Va=36220,Ha=36238,ja=36975,Xa=36214,Ya=36232,Qa=36226,qa=36208,Ka=33189,Ja=33190,Za=36012,ec=36013,tc=35056,ie=5120,T=5121,wt=5122,Se=5123,vt=5124,ge=5125,B=5126,Bn=32819,Dn=32820,Mn=33635,z=5131,$e=36193,yr=33640,rc=35899,nc=35902,ic=36269,sc=34042,Tt=33319,Re=33320,At=6403,Fe=36244,Pe=36248,ye=36249;let br;function It(r){if(!br){const e={};e[vn]={textureFormat:vn,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[T,z,$e,B]},e[Tn]={textureFormat:Tn,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[T,z,$e,B]},e[An]={textureFormat:An,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[T,z,$e,B]},e[V]={textureFormat:V,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[T,z,$e,B,Mn]},e[A]={textureFormat:A,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[T,z,$e,B,Bn,Dn]},e[Ge]={textureFormat:Ge,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[ge,Se]},e[ra]={textureFormat:At,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[T]},e[na]={textureFormat:At,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[ie]},e[ia]={textureFormat:At,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[B,z]},e[sa]={textureFormat:At,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[B]},e[oa]={textureFormat:Fe,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[T]},e[aa]={textureFormat:Fe,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ie]},e[ba]={textureFormat:Fe,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Se]},e[xa]={textureFormat:Fe,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[wt]},e[_a]={textureFormat:Fe,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ge]},e[Ea]={textureFormat:Fe,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[vt]},e[da]={textureFormat:Tt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[T]},e[ha]={textureFormat:Tt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[ie]},e[ma]={textureFormat:Tt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[B,z]},e[pa]={textureFormat:Tt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[B]},e[ga]={textureFormat:Re,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[T]},e[ya]={textureFormat:Re,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ie]},e[ca]={textureFormat:Re,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Se]},e[ua]={textureFormat:Re,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[wt]},e[fa]={textureFormat:Re,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ge]},e[la]={textureFormat:Re,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[vt]},e[wa]={textureFormat:V,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[T]},e[va]={textureFormat:V,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[T]},e[Ta]={textureFormat:V,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[T,Mn]},e[Aa]={textureFormat:V,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ie]},e[Ia]={textureFormat:V,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[B,z,rc]},e[Sa]={textureFormat:V,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[B,z,nc]},e[Ra]={textureFormat:V,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[B,z]},e[Fa]={textureFormat:V,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[B]},e[Pa]={textureFormat:Pe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[T]},e[ka]={textureFormat:Pe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ie]},e[Ca]={textureFormat:Pe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Se]},e[Ba]={textureFormat:Pe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[wt]},e[Da]={textureFormat:Pe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ge]},e[Ma]={textureFormat:Pe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[vt]},e[Oa]={textureFormat:A,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[T]},e[Ua]={textureFormat:A,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[T]},e[Na]={textureFormat:A,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[ie]},e[La]={textureFormat:A,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[T,Dn,yr]},e[za]={textureFormat:A,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[T,Bn]},e[Ga]={textureFormat:A,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[yr]},e[$a]={textureFormat:A,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[B,z]},e[Wa]={textureFormat:A,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[B]},e[Va]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[T]},e[Ha]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ie]},e[ja]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[yr]},e[Xa]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Se]},e[Ya]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[wt]},e[Qa]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[vt]},e[qa]={textureFormat:ye,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[ge]},e[Ka]={textureFormat:Ge,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Se,ge]},e[Ja]={textureFormat:Ge,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ge]},e[Za]={textureFormat:Ge,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[B]},e[tc]={textureFormat:In,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[sc]},e[ec]={textureFormat:In,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ic]},Object.keys(e).forEach(function(t){const n=e[t];n.bytesPerElementMap={},n.bytesPerElement.forEach(function(i,s){const o=n.type[s];n.bytesPerElementMap[o]=i})}),br=e}return br[r]}function oc(r,e){const t=It(r);if(!t)throw"unknown internal format";const n=t.bytesPerElementMap[e];if(n===void 0)throw"unknown internal format";return n}function We(r){const e=It(r);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function On(r){return(r&r-1)===0}function ac(r,e,t,n){if(!Le(r))return On(e)&&On(t);const i=It(n);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function cc(r){const e=It(r);if(!e)throw"unknown internal format";return e.textureFilterable}function uc(r,e,t){return ze(e)?ur(e):t||T}function St(r,e,t,n,i){if(i%1!==0)throw"can\'t guess dimensions";if(!t&&!n){const s=Math.sqrt(i/(e===ne?6:1));s%1===0?(t=s,n=s):(t=i,n=1)}else if(n){if(!t&&(t=i/n,t%1))throw"can\'t guess dimensions"}else if(n=i/t,n%1)throw"can\'t guess dimensions";return{width:t,height:n}}function ke(r,e){e.colorspaceConversion!==void 0&&r.pixelStorei(Zo,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&r.pixelStorei(ea,e.premultiplyAlpha),e.flipY!==void 0&&r.pixelStorei(ta,e.flipY)}function Un(r){r.pixelStorei(gr,4),Le(r)&&(r.pixelStorei(Rn,0),r.pixelStorei(Fn,0),r.pixelStorei(Pn,0),r.pixelStorei(kn,0),r.pixelStorei(Cn,0))}function fc(r,e,t,n){n.minMag&&(t.call(r,e,mr,n.minMag),t.call(r,e,pr,n.minMag)),n.min&&t.call(r,e,mr,n.min),n.mag&&t.call(r,e,pr,n.mag),n.wrap&&(t.call(r,e,_t,n.wrap),t.call(r,e,Et,n.wrap),(e===me||go(r,e))&&t.call(r,e,Sn,n.wrap)),n.wrapR&&t.call(r,e,Sn,n.wrapR),n.wrapS&&t.call(r,e,_t,n.wrapS),n.wrapT&&t.call(r,e,Et,n.wrapT),n.minLod!==void 0&&t.call(r,e,Xo,n.minLod),n.maxLod!==void 0&&t.call(r,e,Yo,n.maxLod),n.baseLevel!==void 0&&t.call(r,e,Qo,n.baseLevel),n.maxLevel!==void 0&&t.call(r,e,qo,n.maxLevel),n.compareFunc!==void 0&&t.call(r,e,Jo,n.compareFunc),n.compareMode!==void 0&&t.call(r,e,Ko,n.compareMode)}function Nn(r,e,t){const n=t.target||re;r.bindTexture(n,e),fc(r,n,r.texParameteri,t)}function lc(r){return r=r||te.textureColor,ze(r)?r:new Uint8Array([r[0]*255,r[1]*255,r[2]*255,r[3]*255])}function xr(r,e,t,n,i,s){t=t||te.textureOptions,s=s||A;const o=t.target||re;if(n=n||t.width,i=i||t.height,r.bindTexture(o,e),ac(r,n,i,s))r.generateMipmap(o);else{const a=cc(s)?Go:zo;r.texParameteri(o,mr,a),r.texParameteri(o,pr,a),r.texParameteri(o,_t,xt),r.texParameteri(o,Et,xt)}}function Ve(r){return r.auto===!0||r.auto===void 0&&r.level===void 0}function _r(r,e){return e=e||{},e.cubeFaceOrder||[hr,$o,Wo,Vo,Ho,jo]}function Er(r,e){const n=_r(r,e).map(function(i,s){return{face:i,ndx:s}});return n.sort(function(i,s){return i.face-s.face}),n}function Ln(r,e,t,n){n=n||te.textureOptions;const i=n.target||re,s=n.level||0;let o=t.width,a=t.height;const c=n.internalFormat||n.format||A,u=We(c),d=n.format||u.format,m=n.type||u.type;if(ke(r,n),r.bindTexture(i,e),i===ne){const p=t.width,y=t.height;let l,b;if(p/6===y)l=y,b=[0,0,1,0,2,0,3,0,4,0,5,0];else if(y/6===p)l=p,b=[0,0,0,1,0,2,0,3,0,4,0,5];else if(p/3===y/2)l=p/3,b=[0,0,1,0,2,0,0,1,1,1,2,1];else if(p/2===y/3)l=p/2,b=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can\'t figure out cube map from element: "+(t.src?t.src:t.nodeName);const _=wn();_?(_.canvas.width=l,_.canvas.height=l,o=l,a=l,Er(r,n).forEach(function(E){const R=b[E.ndx*2+0]*l,k=b[E.ndx*2+1]*l;_.drawImage(t,R,k,l,l,0,0,l,l),r.texImage2D(E.face,s,c,d,m,_.canvas)}),_.canvas.width=1,_.canvas.height=1):typeof createImageBitmap<"u"&&(o=l,a=l,Er(r,n).forEach(function(E){const R=b[E.ndx*2+0]*l,k=b[E.ndx*2+1]*l;r.texImage2D(E.face,s,c,l,l,0,d,m,null),createImageBitmap(t,R,k,l,l,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(N){ke(r,n),r.bindTexture(i,e),r.texImage2D(E.face,s,c,d,m,N),Ve(n)&&xr(r,e,n,o,a,c)})}))}else if(i===me||i===pe){const p=Math.min(t.width,t.height),y=Math.max(t.width,t.height),l=y/p;if(l%1!==0)throw"can not compute 3D dimensions of element";const b=t.width===y?1:0,_=t.height===y?1:0;r.pixelStorei(gr,1),r.pixelStorei(Rn,t.width),r.pixelStorei(Fn,0),r.pixelStorei(Cn,0),r.texImage3D(i,s,c,p,p,p,0,d,m,null);for(let E=0;E<l;++E){const R=E*p*b,k=E*p*_;r.pixelStorei(Pn,R),r.pixelStorei(kn,k),r.texSubImage3D(i,s,0,0,E,p,p,1,d,m,t)}Un(r)}else r.texImage2D(i,s,c,d,m,t);Ve(n)&&xr(r,e,n,o,a,c),Nn(r,e,n)}function He(){}function dc(r){if(typeof document<"u"){const e=document.createElement("a");return e.href=r,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(r,location.href).origin===e}}function hc(r,e){return e===void 0&&!dc(r)?"anonymous":e}function mc(r,e,t){t=t||He;let n;if(e=e!==void 0?e:te.crossOrigin,e=hc(r,e),typeof Image<"u"){n=new Image,e!==void 0&&(n.crossOrigin=e);const i=function(){n.removeEventListener("error",s),n.removeEventListener("load",o),n=null},s=function(){const c="couldn\'t load image: "+r;hn(c),t(c,n),i()},o=function(){t(null,n),i()};return n.addEventListener("error",s),n.addEventListener("load",o),n.src=r,n}else if(typeof ImageBitmap<"u"){let i,s;const o=function(){t(i,s)},a={};e&&(a.mode="cors"),fetch(r,a).then(function(c){if(!c.ok)throw c;return c.blob()}).then(function(c){return createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(c){s=c,setTimeout(o)}).catch(function(c){i=c,setTimeout(o)}),n=null}return n}function zn(r){return typeof ImageBitmap<"u"&&r instanceof ImageBitmap||typeof ImageData<"u"&&r instanceof ImageData||typeof HTMLElement<"u"&&r instanceof HTMLElement}function wr(r,e,t){return zn(r)?(setTimeout(function(){t(null,r)}),r):mc(r,e,t)}function vr(r,e,t){t=t||te.textureOptions;const n=t.target||re;if(r.bindTexture(n,e),t.color===!1)return;const i=lc(t.color);if(n===ne)for(let s=0;s<6;++s)r.texImage2D(hr+s,0,A,1,1,0,A,T,i);else n===me||n===pe?r.texImage3D(n,0,A,1,1,1,0,A,T,i):r.texImage2D(n,0,A,1,1,0,A,T,i)}function pc(r,e,t,n){return n=n||He,t=t||te.textureOptions,vr(r,e,t),t=Object.assign({},t),wr(t.src,t.crossOrigin,function(s,o){s?n(s,e,o):(Ln(r,e,o,t),n(null,e,o))})}function gc(r,e,t,n){n=n||He;const i=t.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const s=t.level||0,o=t.internalFormat||t.format||A,a=We(o),c=t.format||a.format,u=t.type||T,d=t.target||re;if(d!==ne)throw"target must be TEXTURE_CUBE_MAP";vr(r,e,t),t=Object.assign({},t);let m=6;const p=[],y=_r(r,t);let l;function b(_){return function(E,R){--m,E?p.push(E):R.width!==R.height?p.push("cubemap face img is not a square: "+R.src):(ke(r,t),r.bindTexture(d,e),m===5?_r().forEach(function(k){r.texImage2D(k,s,o,c,u,R)}):r.texImage2D(_,s,o,c,u,R),Ve(t)&&r.generateMipmap(d)),m===0&&n(p.length?p:void 0,e,l)}}l=i.map(function(_,E){return wr(_,t.crossOrigin,b(y[E]))})}function yc(r,e,t,n){n=n||He;const i=t.src,s=t.internalFormat||t.format||A,o=We(s),a=t.format||o.format,c=t.type||T,u=t.target||pe;if(u!==me&&u!==pe)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";vr(r,e,t),t=Object.assign({},t);let d=i.length;const m=[];let p;const y=t.level||0;let l=t.width,b=t.height;const _=i.length;let E=!0;function R(k){return function(N,Q){if(--d,N)m.push(N);else{if(ke(r,t),r.bindTexture(u,e),E){E=!1,l=t.width||Q.width,b=t.height||Q.height,r.texImage3D(u,y,s,l,b,_,0,a,c,null);for(let q=0;q<_;++q)r.texSubImage3D(u,y,0,0,q,l,b,1,a,c,Q)}else{let q=Q,L;(Q.width!==l||Q.height!==b)&&(L=wn(),q=L.canvas,L.canvas.width=l,L.canvas.height=b,L.drawImage(Q,0,0,l,b)),r.texSubImage3D(u,y,0,0,k,l,b,1,a,c,q),L&&q===L.canvas&&(L.canvas.width=0,L.canvas.height=0)}Ve(t)&&r.generateMipmap(u)}d===0&&n(m.length?m:void 0,e,p)}}p=i.map(function(k,N){return wr(k,t.crossOrigin,R(N))})}function bc(r,e,t,n){n=n||te.textureOptions;const i=n.target||re;r.bindTexture(i,e);let s=n.width,o=n.height,a=n.depth;const c=n.level||0,u=n.internalFormat||n.format||A,d=We(u),m=n.format||d.format,p=n.type||uc(r,t,d.type);if(ze(t))t instanceof Uint8ClampedArray&&(t=new Uint8Array(t.buffer));else{const _=dn(p);t=new _(t)}const y=oc(u,p),l=t.byteLength/y;if(l%1)throw"length wrong size for format: "+En(r,m);let b;if(i===me||i===pe)if(!s&&!o&&!a){const _=Math.cbrt(l);if(_%1!==0)throw"can\'t guess cube size of array of numElements: "+l;s=_,o=_,a=_}else s&&(!o||!a)?(b=St(r,i,o,a,l/s),o=b.width,a=b.height):o&&(!s||!a)?(b=St(r,i,s,a,l/o),s=b.width,a=b.height):(b=St(r,i,s,o,l/a),s=b.width,o=b.height);else b=St(r,i,s,o,l),s=b.width,o=b.height;if(Un(r),r.pixelStorei(gr,n.unpackAlignment||1),ke(r,n),i===ne){const _=y/t.BYTES_PER_ELEMENT,E=l/6*_;Er(r,n).forEach(R=>{const k=E*R.ndx,N=t.subarray(k,k+E);r.texImage2D(R.face,c,u,s,o,0,m,p,N)})}else i===me||i===pe?r.texImage3D(i,c,u,s,o,a,0,m,p,t):r.texImage2D(i,c,u,s,o,0,m,p,t);return{width:s,height:o,depth:a,type:p}}function xc(r,e,t){const n=t.target||re;r.bindTexture(n,e);const i=t.level||0,s=t.internalFormat||t.format||A,o=We(s),a=t.format||o.format,c=t.type||o.type;if(ke(r,t),n===ne)for(let u=0;u<6;++u)r.texImage2D(hr+u,i,s,t.width,t.height,0,a,c,null);else n===me||n===pe?r.texImage3D(n,i,s,t.width,t.height,t.depth,0,a,c,null):r.texImage2D(n,i,s,t.width,t.height,0,a,c,null)}function Gn(r,e,t){t=t||He,e=e||te.textureOptions;const n=r.createTexture(),i=e.target||re;let s=e.width||1,o=e.height||1;const a=e.internalFormat||A;r.bindTexture(i,n),i===ne&&(r.texParameteri(i,_t,xt),r.texParameteri(i,Et,xt));let c=e.src;if(c)if(typeof c=="function"&&(c=c(r,e)),typeof c=="string")pc(r,n,e,t);else if(ze(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||ze(c[0]))){const u=bc(r,n,c,e);s=u.width,o=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||zn(c[0]))?i===ne?gc(r,n,e,t):yc(r,n,e,t):(Ln(r,n,c,e),s=c.width,o=c.height);else xc(r,n,e);return Ve(e)&&xr(r,n,e,s,o,a),Nn(r,n,e),n}const Tr=hn;function $n(r){return typeof document<"u"&&document.getElementById?document.getElementById(r):null}const Rt=33984,Ft=34962,_c=34963,Ec=35713,wc=35714,vc=35632,Tc=35633,Ac=35981,Wn=35718,Ic=35721,Sc=35971,Rc=35382,Fc=35396,Pc=35398,kc=35392,Cc=35395,Pt=5126,Vn=35664,Hn=35665,jn=35666,Ar=5124,Xn=35667,Yn=35668,Qn=35669,qn=35670,Kn=35671,Jn=35672,Zn=35673,ei=35674,ti=35675,ri=35676,Bc=35678,Dc=35680,Mc=35679,Oc=35682,Uc=35685,Nc=35686,Lc=35687,zc=35688,Gc=35689,$c=35690,Wc=36289,Vc=36292,Hc=36293,Ir=5125,ni=36294,ii=36295,si=36296,jc=36298,Xc=36299,Yc=36300,Qc=36303,qc=36306,Kc=36307,Jc=36308,Zc=36311,kt=3553,Ct=34067,Sr=32879,Bt=35866,x={};function oi(r,e){return x[e].bindPoint}function eu(r,e){return function(t){r.uniform1f(e,t)}}function tu(r,e){return function(t){r.uniform1fv(e,t)}}function ru(r,e){return function(t){r.uniform2fv(e,t)}}function nu(r,e){return function(t){r.uniform3fv(e,t)}}function iu(r,e){return function(t){r.uniform4fv(e,t)}}function ai(r,e){return function(t){r.uniform1i(e,t)}}function ci(r,e){return function(t){r.uniform1iv(e,t)}}function ui(r,e){return function(t){r.uniform2iv(e,t)}}function fi(r,e){return function(t){r.uniform3iv(e,t)}}function li(r,e){return function(t){r.uniform4iv(e,t)}}function su(r,e){return function(t){r.uniform1ui(e,t)}}function ou(r,e){return function(t){r.uniform1uiv(e,t)}}function au(r,e){return function(t){r.uniform2uiv(e,t)}}function cu(r,e){return function(t){r.uniform3uiv(e,t)}}function uu(r,e){return function(t){r.uniform4uiv(e,t)}}function fu(r,e){return function(t){r.uniformMatrix2fv(e,!1,t)}}function lu(r,e){return function(t){r.uniformMatrix3fv(e,!1,t)}}function du(r,e){return function(t){r.uniformMatrix4fv(e,!1,t)}}function hu(r,e){return function(t){r.uniformMatrix2x3fv(e,!1,t)}}function mu(r,e){return function(t){r.uniformMatrix3x2fv(e,!1,t)}}function pu(r,e){return function(t){r.uniformMatrix2x4fv(e,!1,t)}}function gu(r,e){return function(t){r.uniformMatrix4x2fv(e,!1,t)}}function yu(r,e){return function(t){r.uniformMatrix3x4fv(e,!1,t)}}function bu(r,e){return function(t){r.uniformMatrix4x3fv(e,!1,t)}}function O(r,e,t,n){const i=oi(r,e);return Le(r)?function(s){let o,a;!s||fr(r,s)?(o=s,a=null):(o=s.texture,a=s.sampler),r.uniform1i(n,t),r.activeTexture(Rt+t),r.bindTexture(i,o),r.bindSampler(t,a)}:function(s){r.uniform1i(n,t),r.activeTexture(Rt+t),r.bindTexture(i,s)}}function U(r,e,t,n,i){const s=oi(r,e),o=new Int32Array(i);for(let a=0;a<i;++a)o[a]=t+a;return Le(r)?function(a){r.uniform1iv(n,o),a.forEach(function(c,u){r.activeTexture(Rt+o[u]);let d,m;!c||fr(r,c)?(d=c,m=null):(d=c.texture,m=c.sampler),r.bindSampler(t,m),r.bindTexture(s,d)})}:function(a){r.uniform1iv(n,o),a.forEach(function(c,u){r.activeTexture(Rt+o[u]),r.bindTexture(s,c)})}}x[Pt]={Type:Float32Array,size:4,setter:eu,arraySetter:tu},x[Vn]={Type:Float32Array,size:8,setter:ru,cols:2},x[Hn]={Type:Float32Array,size:12,setter:nu,cols:3},x[jn]={Type:Float32Array,size:16,setter:iu,cols:4},x[Ar]={Type:Int32Array,size:4,setter:ai,arraySetter:ci},x[Xn]={Type:Int32Array,size:8,setter:ui,cols:2},x[Yn]={Type:Int32Array,size:12,setter:fi,cols:3},x[Qn]={Type:Int32Array,size:16,setter:li,cols:4},x[Ir]={Type:Uint32Array,size:4,setter:su,arraySetter:ou},x[ni]={Type:Uint32Array,size:8,setter:au,cols:2},x[ii]={Type:Uint32Array,size:12,setter:cu,cols:3},x[si]={Type:Uint32Array,size:16,setter:uu,cols:4},x[qn]={Type:Uint32Array,size:4,setter:ai,arraySetter:ci},x[Kn]={Type:Uint32Array,size:8,setter:ui,cols:2},x[Jn]={Type:Uint32Array,size:12,setter:fi,cols:3},x[Zn]={Type:Uint32Array,size:16,setter:li,cols:4},x[ei]={Type:Float32Array,size:32,setter:fu,rows:2,cols:2},x[ti]={Type:Float32Array,size:48,setter:lu,rows:3,cols:3},x[ri]={Type:Float32Array,size:64,setter:du,rows:4,cols:4},x[Uc]={Type:Float32Array,size:32,setter:hu,rows:2,cols:3},x[Nc]={Type:Float32Array,size:32,setter:pu,rows:2,cols:4},x[Lc]={Type:Float32Array,size:48,setter:mu,rows:3,cols:2},x[zc]={Type:Float32Array,size:48,setter:yu,rows:3,cols:4},x[Gc]={Type:Float32Array,size:64,setter:gu,rows:4,cols:2},x[$c]={Type:Float32Array,size:64,setter:bu,rows:4,cols:3},x[Bc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:kt},x[Dc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Ct},x[Mc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Sr},x[Oc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:kt},x[Wc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Bt},x[Vc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Bt},x[Hc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Ct},x[jc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:kt},x[Xc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Sr},x[Yc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Ct},x[Qc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Bt},x[qc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:kt},x[Kc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Sr},x[Jc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Ct},x[Zc]={Type:null,size:0,setter:O,arraySetter:U,bindPoint:Bt};function Dt(r,e){return function(t){if(t.value)switch(r.disableVertexAttribArray(e),t.value.length){case 4:r.vertexAttrib4fv(e,t.value);break;case 3:r.vertexAttrib3fv(e,t.value);break;case 2:r.vertexAttrib2fv(e,t.value);break;case 1:r.vertexAttrib1fv(e,t.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else r.bindBuffer(Ft,t.buffer),r.enableVertexAttribArray(e),r.vertexAttribPointer(e,t.numComponents||t.size,t.type||Pt,t.normalize||!1,t.stride||0,t.offset||0),r.vertexAttribDivisor&&r.vertexAttribDivisor(e,t.divisor||0)}}function se(r,e){return function(t){if(t.value)if(r.disableVertexAttribArray(e),t.value.length===4)r.vertexAttrib4iv(e,t.value);else throw new Error("The length of an integer constant value must be 4!");else r.bindBuffer(Ft,t.buffer),r.enableVertexAttribArray(e),r.vertexAttribIPointer(e,t.numComponents||t.size,t.type||Ar,t.stride||0,t.offset||0),r.vertexAttribDivisor&&r.vertexAttribDivisor(e,t.divisor||0)}}function Mt(r,e){return function(t){if(t.value)if(r.disableVertexAttribArray(e),t.value.length===4)r.vertexAttrib4uiv(e,t.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else r.bindBuffer(Ft,t.buffer),r.enableVertexAttribArray(e),r.vertexAttribIPointer(e,t.numComponents||t.size,t.type||Ir,t.stride||0,t.offset||0),r.vertexAttribDivisor&&r.vertexAttribDivisor(e,t.divisor||0)}}function Rr(r,e,t){const n=t.size,i=t.count;return function(s){r.bindBuffer(Ft,s.buffer);const o=s.size||s.numComponents||n,a=o/i,c=s.type||Pt,d=x[c].size*o,m=s.normalize||!1,p=s.offset||0,y=d/i;for(let l=0;l<i;++l)r.enableVertexAttribArray(e+l),r.vertexAttribPointer(e+l,a,c,m,d,p+y*l),r.vertexAttribDivisor&&r.vertexAttribDivisor(e+l,s.divisor||0)}}const I={};I[Pt]={size:4,setter:Dt},I[Vn]={size:8,setter:Dt},I[Hn]={size:12,setter:Dt},I[jn]={size:16,setter:Dt},I[Ar]={size:4,setter:se},I[Xn]={size:8,setter:se},I[Yn]={size:12,setter:se},I[Qn]={size:16,setter:se},I[Ir]={size:4,setter:Mt},I[ni]={size:8,setter:Mt},I[ii]={size:12,setter:Mt},I[si]={size:16,setter:Mt},I[qn]={size:4,setter:se},I[Kn]={size:8,setter:se},I[Jn]={size:12,setter:se},I[Zn]={size:16,setter:se},I[ei]={size:4,setter:Rr,count:2},I[ti]={size:9,setter:Rr,count:3},I[ri]={size:16,setter:Rr,count:4};const xu=/ERROR:\\s*\\d+:(\\d+)/gi;function _u(r,e="",t=0){const n=[...e.matchAll(xu)],i=new Map(n.map((s,o)=>{const a=parseInt(s[1]),c=n[o+1],u=c?c.index:e.length,d=e.substring(s.index,u);return[a-1,d]}));return r.split(`\n`).map((s,o)=>{const a=i.get(o);return`${o+1+t}: ${s}${a?`\n\n^^^ ${a}`:""}`}).join(`\n`)}const di=/^[ \\t]*\\n/;function hi(r){let e=0;return di.test(r)&&(e=1,r=r.replace(di,"")),{lineOffset:e,shaderSource:r}}function Eu(r,e){return r.errorCallback(e),r.callback&&setTimeout(()=>{r.callback(`${e}\n${r.errors.join(`\n`)}`)}),null}function wu(r,e,t,n){if(n=n||Tr,!r.getShaderParameter(t,Ec)){const s=r.getShaderInfoLog(t),{lineOffset:o,shaderSource:a}=hi(r.getShaderSource(t)),c=`${_u(a,s,o)}\nError compiling ${En(r,e)}: ${s}`;return n(c),c}return""}function Fr(r,e,t){let n,i,s;if(typeof e=="function"&&(t=e,e=void 0),typeof r=="function")t=r,r=void 0;else if(r&&!Array.isArray(r)){const u=r;t=u.errorCallback,r=u.attribLocations,n=u.transformFeedbackVaryings,i=u.transformFeedbackMode,s=u.callback}const o=t||Tr,a=[],c={errorCallback(u,...d){a.push(u),o(u,...d)},transformFeedbackVaryings:n,transformFeedbackMode:i,callback:s,errors:a};{let u={};Array.isArray(r)?r.forEach(function(d,m){u[d]=e?e[m]:m}):u=r||{},c.attribLocations=u}return c}const vu=["VERTEX_SHADER","FRAGMENT_SHADER"];function Tu(r,e){if(e.indexOf("frag")>=0)return vc;if(e.indexOf("vert")>=0)return Tc}function Au(r,e,t){const n=r.getAttachedShaders(e);for(const i of n)t.has(i)&&r.deleteShader(i);r.deleteProgram(e)}const Iu=(r=0)=>new Promise(e=>setTimeout(e,r));function Su(r,e,t){const n=r.createProgram(),{attribLocations:i,transformFeedbackVaryings:s,transformFeedbackMode:o}=Fr(t);for(let a=0;a<e.length;++a){let c=e[a];if(typeof c=="string"){const u=$n(c),d=u?u.text:c;let m=r[vu[a]];u&&u.type&&(m=Tu(r,u.type)||m),c=r.createShader(m),r.shaderSource(c,hi(d).shaderSource),r.compileShader(c),r.attachShader(n,c)}}Object.entries(i).forEach(([a,c])=>r.bindAttribLocation(n,c,a));{let a=s;a&&(a.attribs&&(a=a.attribs),Array.isArray(a)||(a=Object.keys(a)),r.transformFeedbackVaryings(n,a,o||Ac))}return r.linkProgram(n),n}function Ru(r,e,t,n,i){const s=Fr(t,n,i),o=new Set(e),a=Su(r,e,s);function c(u,d){const m=Pu(u,d,s.errorCallback);return m&&Au(u,d,o),m}if(s.callback){Fu(r,a).then(()=>{const u=c(r,a);s.callback(u,u?void 0:a)});return}return c(r,a)?void 0:a}async function Fu(r,e){const t=r.getExtension("KHR_parallel_shader_compile"),n=t?(s,o)=>s.getProgramParameter(o,t.COMPLETION_STATUS_KHR):()=>!0;let i=0;do await Iu(i),i=1e3/60;while(!n(r,e))}function Pu(r,e,t){if(t=t||Tr,!r.getProgramParameter(e,wc)){const i=r.getProgramInfoLog(e);t(`Error in program linking: ${i}`);const o=r.getAttachedShaders(e).map(a=>wu(r,r.getShaderParameter(a,r.SHADER_TYPE),a,t));return`${i}\n${o.filter(a=>a).join(`\n`)}`}}function ku(r,e,t,n,i){return Ru(r,e,t,n,i)}function mi(r){const e=r.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const Cu=/(\\.|\\[|]|\\w+)/g,Bu=r=>r>="0"&&r<="9";function Du(r,e,t,n){const i=r.split(Cu).filter(a=>a!=="");let s=0,o="";for(;;){const a=i[s++];o+=a;const c=Bu(a[0]),u=c?parseInt(a):a;if(c&&(o+=i[s++]),s===i.length){t[u]=e;break}else{const m=i[s++],p=m==="[",y=t[u]||(p?[]:{});t[u]=y,t=y,n[o]=n[o]||(function(l){return function(b){pi(l,b)}})(y),o+=m}}}function Mu(r,e){let t=0;function n(a,c,u){const d=c.name.endsWith("[0]"),m=c.type,p=x[m];if(!p)throw new Error(`unknown type: 0x${m.toString(16)}`);let y;if(p.bindPoint){const l=t;t+=c.size,d?y=p.arraySetter(r,m,l,u,c.size):y=p.setter(r,m,l,u,c.size)}else p.arraySetter&&d?y=p.arraySetter(r,u):y=p.setter(r,u);return y.location=u,y}const i={},s={},o=r.getProgramParameter(e,Wn);for(let a=0;a<o;++a){const c=r.getActiveUniform(e,a);if(mi(c))continue;let u=c.name;u.endsWith("[0]")&&(u=u.substr(0,u.length-3));const d=r.getUniformLocation(e,c.name);if(d){const m=n(e,c,d);i[u]=m,Du(u,m,s,i)}}return i}function Ou(r,e){const t={},n=r.getProgramParameter(e,Sc);for(let i=0;i<n;++i){const s=r.getTransformFeedbackVarying(e,i);t[s.name]={index:i,type:s.type,size:s.size}}return t}function Uu(r,e){const t=r.getProgramParameter(e,Wn),n=[],i=[];for(let a=0;a<t;++a){i.push(a),n.push({});const c=r.getActiveUniform(e,a);n[a].name=c.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const c=a[0],u=a[1];r.getActiveUniforms(e,i,r[c]).forEach(function(d,m){n[m][u]=d})});const s={},o=r.getProgramParameter(e,Rc);for(let a=0;a<o;++a){const c=r.getActiveUniformBlockName(e,a),u={index:r.getUniformBlockIndex(e,c),usedByVertexShader:r.getActiveUniformBlockParameter(e,a,Fc),usedByFragmentShader:r.getActiveUniformBlockParameter(e,a,Pc),size:r.getActiveUniformBlockParameter(e,a,kc),uniformIndices:r.getActiveUniformBlockParameter(e,a,Cc)};u.used=u.usedByVertexShader||u.usedByFragmentShader,s[c]=u}return{blockSpecs:s,uniformData:n}}function pi(r,e){for(const t in e){const n=r[t];typeof n=="function"?n(e[t]):pi(r[t],e[t])}}function gi(r,...e){const t=r.uniformSetters||r,n=e.length;for(let i=0;i<n;++i){const s=e[i];if(Array.isArray(s)){const o=s.length;for(let a=0;a<o;++a)gi(t,s[a])}else for(const o in s){const a=t[o];a&&a(s[o])}}}function Nu(r,e){const t={},n=r.getProgramParameter(e,Ic);for(let i=0;i<n;++i){const s=r.getActiveAttrib(e,i);if(mi(s))continue;const o=r.getAttribLocation(e,s.name),a=I[s.type],c=a.setter(r,o,a);c.location=o,t[s.name]=c}return t}function Lu(r,e){for(const t in e){const n=r[t];n&&n(e[t])}}function zu(r,e,t){t.vertexArrayObject?r.bindVertexArray(t.vertexArrayObject):(Lu(e.attribSetters||e,t.attribs),t.indices&&r.bindBuffer(_c,t.indices))}function yi(r,e){const t=Mu(r,e),n=Nu(r,e),i={program:e,uniformSetters:t,attribSetters:n};return Le(r)&&(i.uniformBlockSpec=Uu(r,e),i.transformFeedbackInfo=Ou(r,e)),i}const Gu=/\\s|{|}|;/;function $u(r,e,t,n,i){const s=Fr(t,n,i),o=[];if(e=e.map(function(u){if(!Gu.test(u)){const d=$n(u);if(d)u=d.text;else{const m=`no element with id: ${u}`;s.errorCallback(m),o.push(m)}}return u}),o.length)return Eu(s,"");const a=s.callback;a&&(s.callback=(u,d)=>{a(u,u?void 0:yi(r,d))});const c=ku(r,e,s);return c?yi(r,c):null}const Wu=4,bi=5123;function Vu(r,e,t,n,i,s){t=t===void 0?Wu:t;const o=e.indices,a=e.elementType,c=n===void 0?e.numElements:n;i=i===void 0?0:i,a||o?s!==void 0?r.drawElementsInstanced(t,c,a===void 0?bi:e.elementType,i,s):r.drawElements(t,c,a===void 0?bi:e.elementType,i):s!==void 0?r.drawArraysInstanced(t,i,c,s):r.drawArrays(t,i,c)}const xi=36160,Ot=36161,Hu=3553,ju=5121,Xu=6402,Yu=6408,Qu=33190,qu=36012,Ku=35056,Ju=36013,Zu=32854,ef=32855,tf=36194,_i=33189,Ei=6401,wi=36168,Pr=34041,kr=36064,Ut=36096,vi=36128,Cr=33306,Br=33071,Dr=9729,rf=[{format:Yu,type:ju,min:Dr,wrap:Br},{format:Pr}],G={};G[Pr]=Cr,G[Ei]=vi,G[wi]=vi,G[Xu]=Ut,G[_i]=Ut,G[Qu]=Ut,G[qu]=Ut,G[Ku]=Cr,G[Ju]=Cr;function nf(r,e){return G[r]||G[e]}const oe={};oe[Zu]=!0,oe[ef]=!0,oe[tf]=!0,oe[Pr]=!0,oe[_i]=!0,oe[Ei]=!0,oe[wi]=!0;function sf(r){return oe[r]}const of=32;function af(r){return r>=kr&&r<kr+of}function Ti(r,e,t,n){const i=xi,s=r.createFramebuffer();r.bindFramebuffer(i,s),t=t||r.drawingBufferWidth,n=n||r.drawingBufferHeight,e=e||rf;const o=[],a={framebuffer:s,attachments:[],width:t,height:n};return e.forEach(function(c,u){let d=c.attachment;const m=c.samples,p=c.format;let y=c.attachmentPoint||nf(p,c.internalFormat);if(y||(y=kr+u),af(y)&&o.push(y),!d)if(m!==void 0||sf(p))d=r.createRenderbuffer(),r.bindRenderbuffer(Ot,d),m>1?r.renderbufferStorageMultisample(Ot,m,p,t,n):r.renderbufferStorage(Ot,p,t,n);else{const l=Object.assign({},c);l.width=t,l.height=n,l.auto===void 0&&(l.auto=!1,l.min=l.min||l.minMag||Dr,l.mag=l.mag||l.minMag||Dr,l.wrapS=l.wrapS||l.wrap||Br,l.wrapT=l.wrapT||l.wrap||Br),d=Gn(r,l)}if(po(r,d))r.framebufferRenderbuffer(i,y,Ot,d);else if(fr(r,d))c.layer!==void 0?r.framebufferTextureLayer(i,y,d,c.level||0,c.layer):r.framebufferTexture2D(i,y,c.target||Hu,d,c.level||0);else throw new Error("unknown attachment type");a.attachments.push(d)}),r.drawBuffers&&r.drawBuffers(o),a}function cf(r,e,t){t=t||xi,e?(r.bindFramebuffer(t,e.framebuffer),r.viewport(0,0,e.width,e.height)):(r.bindFramebuffer(t,null),r.viewport(0,0,r.drawingBufferWidth,r.drawingBufferHeight))}function D(r,e){return()=>e instanceof WebGLTexture?e:Gn(r,{src:e,wrap:r.CLAMP_TO_EDGE})}const Ce=2;class je{constructor(e){this.id="_";const{context:t,width:n,height:i}=e;this.context=t,this.options=e;const s=this.buildDefines();this.programInfo=$u(this.context,[s+this.getVertexShader(),s+this.getFragmentShader()]),this.bufferInfo=Lo(this.context,this.getBuffers()),this.fbi=Ti(this.context,[{format:this.context.RGBA,type:this.context.UNSIGNED_BYTE,min:this.context.LINEAR,wrap:this.context.CLAMP_TO_EDGE}],n,i),this.output=this.fbi.attachments[0]}resizeOutput(e,t){this.fbi=Ti(this.context,[{format:this.context.RGBA,type:this.context.UNSIGNED_BYTE,min:this.context.LINEAR,wrap:this.context.CLAMP_TO_EDGE}],e,t),this.options.width=e,this.options.height=t,this.output=this.fbi.attachments[0]}getDefines(){return{}}getBuffers(){return{position:{numComponents:2,data:[-1,-1,-1,1,1,-1,1,1,-1,1,1,-1]},texture_coord:{numComponents:2,data:[0,0,0,1,1,0,1,1,0,1,1,0]}}}buildDefines(){let e="";const t=this.getDefines();for(let n in t)e+=`#define ${n} ${t[n].toFixed(1)}\n`;return e}run(e){this.profiler?.pushContext(`[${this.id}] PROG : ${this.constructor.name}`),this.profiler?.pushContext(`[${this.id}] UNIFORMS`);for(const i in e)typeof e[i]=="function"&&(this.profiler?.pushContext(`[${this.id}] UNI : ${i}`),e[i]=e[i](),this.profiler?.popContext(`[${this.id}] UNI : ${i}`));this.profiler?.popContext(`[${this.id}] UNIFORMS`);const t=Date.now();let n=0;this.lastRun&&(n=(t-this.lastRun)/1e3),this.lastRun=t,this.context.viewport(0,0,this.context.canvas.width,this.context.canvas.height),this.context.useProgram(this.programInfo.program),zu(this.context,this.programInfo,this.bufferInfo),gi(this.programInfo,{delta:n,canvas:[this.context.canvas.width,this.context.canvas.height],...e}),cf(this.context,this.options.disableFramebuffer?null:this.fbi),Vu(this.context,this.bufferInfo),this.profiler?.popContext(`[${this.id}] PROG : ${this.constructor.name}`)}setProfiler(e){this.profiler=e}}var uf=`precision mediump float;\n\nvarying vec2 _texture_coord;\n\nuniform sampler2D background;\nuniform sampler2D foreground;\nuniform sampler2D threshold;\n\nvoid main() {\n vec4 backgroundColor = texture2D(background, _texture_coord);\n vec4 foregroundColor = texture2D(foreground, _texture_coord);\n vec4 tresholdColor = texture2D(threshold, _texture_coord);\n gl_FragColor = foregroundColor * tresholdColor.a +\n backgroundColor * (1. - tresholdColor.a);\n}\n`,ff=`varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n _texture_coord.y = 1. - texture_coord.y;\n}\n`;class Mr extends je{getFragmentShader(){return uf}getVertexShader(){return ff}}class Or{constructor(){this.steps=[]}addStep(e){this.steps.push(e)}async run(){for(const e of this.steps)e.program.run(e.getUniforms())}resizeOutput(e,t){this.profiler?.pushContext(`PIP [${this.constructor.name}]`);for(const n of this.steps)n.preventResize||n.program.resizeOutput(e,t);this.profiler?.popContext(`PIP [${this.constructor.name}]`)}setProfiler(e){this.profiler=e;for(const t of this.steps)t.program.setProfiler(e)}setId(e){for(const t of this.steps)t.program.id=e}}class Ur extends Or{constructor(){super(...arguments),this.preciseMaskEnabled=!1}}class Ai extends Ur{constructor(e){super(),this.context=e,this.preciseMaskEnabled=!0;const t={context:e,height:e.canvas.height,width:e.canvas.width},n=new Mr({...t,disableFramebuffer:!0});this.addStep({program:n,getUniforms:()=>({background:D(e,this.inputBackgroundImage),foreground:D(e,this.inputImage),threshold:D(e,this.inputMask)})})}setData(e,t){this.inputImage=e,this.inputMask=t}}var lf=`precision mediump float;\n\nvarying vec2 _texture_coord;\nuniform sampler2D texture;\n\nvoid main() { gl_FragColor = texture2D(texture, _texture_coord); }\n`,df=`varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\nuniform bool invert_y;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n if (invert_y) {\n _texture_coord.y = 1. - texture_coord.y;\n }\n}\n`;class hf extends je{getFragmentShader(){return lf}getVertexShader(){return df}}class mf extends Or{constructor(e,t,n){super(),this.context=e;const i={context:e,height:n,width:t};this.addStep({program:new hf({...i,disableFramebuffer:!0}),getUniforms:()=>({texture:D(e,this.inputImage),invert_y:!0})})}setData(e){this.inputImage=e}}async function Ii(r){return new Promise(e=>{setTimeout(()=>{e()},r)})}var pf=`precision mediump float;\n\nvarying vec2 _texture_coord;\n\nuniform vec2 canvas;\nuniform sampler2D texture;\n\nvec4 loop();\n\nvoid main() { gl_FragColor = loop(); }\n`,gf=`varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n}\n`,Nr=(r=>(r[r.LINEAR=0]="LINEAR",r[r.GAUSSIAN=1]="GAUSSIAN",r))(Nr||{});class Si extends je{getDefines(){return{RADIUS:this.options.radius??1}}getFragmentShader(){return pf+this.createLoopFunction()}getVertexShader(){return gf}createLoopFunction(){let e=this.options.radius??1;return`\n\n vec4 loop() { \n vec4 result = vec4(0,0,0,0);\n float factorSum = 0.;\n\n vec2 normalizedRadius = vec2(-${e}.) / canvas;\n vec2 normalizedIncrement = vec2(1.) / canvas;\n vec2 diff = normalizedRadius;\n\n for(int y=-${e}; y<${e+1}; ++y) {\n for(int x=-${e}; x<${e+1}; ++x) {\n float factor = 1.;\n result += factor * texture2D(texture, _texture_coord + diff);\n factorSum += factor;\n diff.x += normalizedIncrement.x;\n }\n diff.y += normalizedIncrement.y;\n diff.x = normalizedRadius.x;\n }\n return result / factorSum;\n }`}}var yf=`#version 300 es\n// https://github.com/Volcomix/virtual-background/blob/main/src/pipelines/webgl2/jointBilateralFilterStage.ts\n\nprecision highp float;\nuniform sampler2D input_frame;\nuniform sampler2D segmentation_mask;\nuniform sampler2D threshold;\nuniform vec2 texel_size;\nuniform float step;\nuniform float radius;\nuniform float offset;\nuniform float sigma_texel;\nuniform float sigma_color;\n\nin vec2 _texture_coord;\nout vec4 outColor;\n\nfloat gaussian(float x, float sigma) {\n float coeff = -0.5 / (sigma * sigma * 4.0 + 1.0e-6);\n return exp((x * x) * coeff);\n}\n\nvoid main() {\n vec2 centerCoord = _texture_coord;\n vec3 centerColor = texture(input_frame, centerCoord).rgb;\n float newVal = 0.0;\n float spaceWeight = 0.0;\n float colorWeight = 0.0;\n float totalWeight = 0.0;\n // Subsample kernel space.\n for (float i = -radius + offset; i <= radius; i += step) {\n for (float j = -radius + offset; j <= radius; j += step) {\n vec2 shift = vec2(j, i) * texel_size;\n vec2 coord = vec2(centerCoord + shift);\n vec3 frameColor = texture(input_frame, coord).rgb;\n float threshold = texture(threshold, coord).a;\n float outVal = texture(segmentation_mask, coord).a;\n\n spaceWeight = gaussian(distance(centerCoord, coord), sigma_texel);\n colorWeight = gaussian(distance(centerColor, frameColor), sigma_color);\n totalWeight += spaceWeight * colorWeight;\n newVal += spaceWeight * colorWeight * outVal * threshold;\n }\n }\n newVal /= totalWeight;\n outColor = vec4(vec3(0.), newVal);\n}`,bf=`#version 300 es\nin vec2 position;\nin vec2 texture_coord;\nout vec2 _texture_coord;\nvoid main() {\n gl_Position = vec4(position, 0.0, 1.0);\n _texture_coord = texture_coord;\n}`;class xf extends je{getFragmentShader(){return yf}getVertexShader(){return bf}}class _f extends Or{constructor(e,t,n){super(),this.context=e;const i={context:e,height:n,width:t},s=new Si({...i,radius:1,type:Nr.GAUSSIAN});this.jointBilateral=new xf(i),this.addStep({program:s,getUniforms:()=>({inputs:D(e,this.inputMask)})}),this.addStep({program:this.jointBilateral,getUniforms:()=>{const a=this.inputImage?.width??1,c=this.inputImage?.height??1;this.inputMask?.width,this.inputMask?.height;const u=3,d=Math.max(1,Math.sqrt(u)*.66),m=1/a,p=1/c;return{input_frame:D(e,this.inputImage),segmentation_mask:D(e,this.inputMask),texel_size:[m,p],step:d,radius:u,offset:d>1?d*.5:0,sigma_texel:Math.max(m,p)*u,sigma_color:u}}}),this.output=this.jointBilateral.output}setData(e,t){this.previousInputImage=this.inputImage?this.inputImage:e,this.previousInputMask=this.inputMask?this.inputMask:t,this.inputImage=e,this.inputMask=t}resizeOutput(e,t){super.resizeOutput(e,t),this.output=this.jointBilateral.output}}class Ef{constructor(e){this.queries=[],this.context=e,this.extension=e.getExtension("EXT_disjoint_timer_query_webgl2")}start(){}stop(){this.activeQuery&&this.context.endQuery(this.extension.TIME_ELAPSED_EXT)}pushContext(e){this.createQuery("PUSH",e)}popContext(e){this.createQuery("POP",e)}createQuery(e,t){this.activeQuery&&this.context.endQuery(this.extension.TIME_ELAPSED_EXT),this.activeQuery=this.context.createQuery(),this.context.beginQuery(this.extension.TIME_ELAPSED_EXT,this.activeQuery),this.queries.push({name:t,action:e,query:this.activeQuery})}async getResolvedQueries(){const e=(await Promise.all([...this.queries].map(t=>this.resolveQuery(t)))).filter(t=>t);for(let t=1;t<e.length;++t)e[t].timestamp+=e[t-1].duration+e[t-1].timestamp;return e}async resolveQuery(e){if(!await this.awaitQueryAvailable(e)){console.log("Unawaitable query",e);return}if(this.context.getParameter(this.extension.GPU_DISJOINT_EXT)){console.log("Disjointed query",e);return}return{...e,duration:this.context.getQueryParameter(e.query,this.context.QUERY_RESULT),timestamp:0}}async awaitQueryAvailable(e){for(let t=0;t<10;++t){if(this.context.getQueryParameter(e.query,this.context.QUERY_RESULT_AVAILABLE))return e;await Ii(200)}}}class Nt{constructor(){this.previousImageWidth=0,this.previousImageHeight=0,this.previousMaskWidth=Ce,this.previousMaskHeight=Ce,this.postProcessingEnabled=!0;const e=new OffscreenCanvas(0,0),t=e.getContext("webgl2");if(!t)throw"Fail to retrieve webgl2 context";this.canvas=e,this.context=t,this.improveMask=new _f(this.context,Ce,Ce)}enablePostProcessing(){this.postProcessingEnabled=!0}disablePostProcessing(){this.postProcessingEnabled=!1}async profileWebgl(e){const t=new Ef(this.context);return this.profiler=t,t.start(),await Ii(e),this.profiler=void 0,t.stop(),t.getResolvedQueries()}async render(e,t){if(!this.pipeline)throw"missing pipeline";(this.previousImageHeight!==e.height||this.previousImageWidth!==e.width)&&this.resizeOutput(e.width,e.height),(this.previousMaskHeight!==t.height||this.previousMaskWidth!==t.width)&&(this.improveMask.resizeOutput(t.width,t.height),this.previousMaskWidth=t.width,this.previousMaskHeight=t.height);const n="renderer";this.profiler?.pushContext(n),this.improveMask.setProfiler(this.profiler),this.pipeline.setProfiler(this.profiler);const i=await createImageBitmap(t);let s=i;return this.postProcessingEnabled&&(this.improveMask.setData(e,i),this.improveMask.run(),s=this.improveMask.output),this.pipeline.setData(e,s),await this.pipeline.run(),this.profiler?.popContext(n),this.canvas}resizeOutput(e,t){this.canvas.width=e,this.canvas.height=t,this.pipeline?.resizeOutput(e,t),this.previousImageWidth=e,this.previousImageHeight=t}destroy(){const e=this.context?.getExtension("WEBGL_lose_context");e&&e.loseContext()}}class Ri extends Nt{constructor(){super(),this.pipeline=new Ai(this.context);const e=new OffscreenCanvas(0,0),t=e.getContext("webgl2");if(!t)throw"Fail to retrieve webgl context";this.backgroundImageResizerCanvas=e,this.backgroundImageResizerContext=t,this.backgroundImageResizer=new mf(this.backgroundImageResizerContext,0,0)}setBackgroundImage(e){this.backgroundImage=e,this.updateBackgroundImage()}updateBackgroundImage(){const{width:e,height:t}=this.canvas;this.backgroundImageResizer.resizeOutput(e,t),this.backgroundImageResizer.setData(this.backgroundImage),this.backgroundImageResizer.run(),this.pipeline.inputBackgroundImage=this.backgroundImageResizerCanvas}resizeOutput(e,t){super.resizeOutput(e,t),this.backgroundImageResizerCanvas.width=e,this.backgroundImageResizerCanvas.height=t,this.backgroundImageResizer.resizeOutput(e,t),this.updateBackgroundImage()}destroy(){const e=this.backgroundImageResizerContext?.getExtension("WEBGL_lose_context");e&&e.loseContext(),super.destroy()}}class wf extends Ri{setBackgroundVideo(e){this.frameReader=e}async render(e,t){return await this.readNextVideoFrame(),super.render(e,t)}async readNextVideoFrame(){const e=await this.frameReader?.read();if(e?.value){const t=await createImageBitmap(e.value);this.setBackgroundImage(t),e.value.close()}}}class Fi{blurBackground(e){return new to(e)}blurSilhouette(e){return new ro(e)}imageBackground(){return new no}videoBackground(){return new wf}}var vf=`precision mediump float;\n\nvarying vec2 _texture_coord;\n\nuniform vec2 canvas;\nuniform sampler2D texture;\nuniform sampler2D mask;\n\nvec4 loop();\n\nvoid main() { gl_FragColor = loop(); }\n`,Tf=`varying vec2 _texture_coord;\n\nattribute vec2 position;\nattribute vec2 texture_coord;\n\nvoid main() {\n gl_Position = vec4(position, 0., 1.);\n _texture_coord = texture_coord;\n}\n`;class Af extends je{getDefines(){return{RADIUS:this.options.radius??1}}getFragmentShader(){return vf+this.createLoopFunction()}getVertexShader(){return Tf}createLoopFunction(){let e=this.options.radius??1;return`\n\n vec4 loop() { \n vec4 result = vec4(0,0,0,0);\n float factorSum = 0.;\n\n vec2 normalizedRadius = vec2(-${e}.) / canvas;\n vec2 normalizedIncrement = vec2(1.) / canvas;\n vec2 diff = normalizedRadius;\n float maxLength = length(normalizedRadius);\n\n for(int y=-${e}; y<${e+1}; ++y) {\n for(int x=-${e}; x<${e+1}; ++x) {\n float factor = (1.- texture2D(mask, _texture_coord + diff).a) * (maxLength - length(diff)) / maxLength;\n result += factor * texture2D(texture, _texture_coord + diff);\n factorSum += factor;\n diff.x += normalizedIncrement.x;\n }\n diff.y += normalizedIncrement.y;\n diff.x = normalizedRadius.x;\n }\n return result / factorSum;\n }`}}const If=10,Sf=2,Rf=8;class Ff extends Ur{constructor(e,t){super(),this.context=e,this.radius=t;const n={context:e,height:e.canvas.height,width:e.canvas.width};this.blur=new Af({...n,radius:t,...this.getBlurTextureSize(e.canvas.width,e.canvas.height)});const i=new Mr({...n,disableFramebuffer:!0});this.addStep({program:this.blur,preventResize:!0,getUniforms:()=>({texture:D(e,this.inputImage),mask:D(e,this.inputMask)})}),this.addStep({program:i,getUniforms:()=>({background:D(e,this.blur.output),foreground:D(e,this.inputImage),threshold:D(e,this.inputMask)})})}getBlurTextureSize(e,t){const n=this.radius>If?Rf:Sf;return{width:Math.max(Ce,e/n),height:Math.max(Ce,t/n)}}setData(e,t){this.inputImage=e,this.inputMask=t}resizeOutput(e,t){super.resizeOutput(e,t);const n=this.getBlurTextureSize(e,t);this.blur.resizeOutput(n.width,n.height)}}class Pf extends Nt{constructor(e){super(),this.pipeline=new Ff(this.context,e),this.disablePostProcessing()}}class kf extends Ur{constructor(e,t){super(),this.context=e;const n={context:e,height:e.canvas.height,width:e.canvas.width},i=new Si({...n,radius:t,type:Nr.GAUSSIAN}),s=new Mr({...n,disableFramebuffer:!0});this.addStep({program:i,getUniforms:()=>({texture:D(e,this.inputImage)})}),this.addStep({program:s,getUniforms:()=>({background:D(e,this.inputImage),foreground:D(e,i.output),threshold:D(e,this.inputMask)})})}setData(e,t){this.inputImage=e,this.inputMask=t}}class Cf extends Nt{constructor(e){super(),this.pipeline=new kf(this.context,e),this.disablePostProcessing()}}class Bf extends Ai{constructor(){super(...arguments),this.preciseMaskEnabled=!0}set reader(e){this.frameReader=e}async run(){this.frameReader&&(await this.readNextVideoFrame(),await super.run())}async readNextVideoFrame(){const e=await this.frameReader?.read();e?.value&&(this.inputBackgroundImage=await createImageBitmap(e.value),e.value.close())}}class Df extends Nt{constructor(){super(),this.pipeline=new Bf(this.context)}setBackgroundVideo(e){this.pipeline.reader=e}}class Pi{blurBackground(e){return new Pf(e)}blurSilhouette(e){return new Cf(e)}imageBackground(){return new Ri}videoBackground(){return new Df}}class Mf{constructor(e){switch(e){case gt.CANVAS:this.factory=new Fi;break;case gt.WEBGL:this.factory=new Pi;break;default:const t=eo();this.factory=t.supported?new Pi:new Fi}}blurBackground(e){return this.getFactory().blurBackground(e)}blurSilhouette(e){return this.getFactory().blurSilhouette(e)}imageBackground(){return this.getFactory().imageBackground()}videoBackground(){return this.getFactory().videoBackground()}getFactory(){if(!this.factory)throw"Factory is not initialized";return this.factory}}class Of{setBackgroundOptions(e){this.renderer&&this.renderer.destroy();const t=new Mf(e.renderingOptions?.type);switch(e.transformerType){case"BackgroundBlur":this.renderer=t.blurBackground(this.getBlurSize(e.radius));break;case"SilhouetteBlur":this.renderer=t.blurSilhouette(this.getBlurSize(e.radius));break;case"VideoBackground":const n=t.videoBackground();this.backgroundVideo&&n.setBackgroundVideo(this.backgroundVideo),this.renderer=n;break;case"VirtualBackground":const i=t.imageBackground();this.backgroundImage&&i.setBackgroundImage(this.backgroundImage),this.renderer=i;break;default:throw`Unknown rendering type [${e.transformerType}]`}e.renderingOptions?.type===gt.WEBGL&&(e.renderingOptions.selfieSegmentationType===tr.PRECISE?this.renderer.enablePostProcessing():e.renderingOptions.selfieSegmentationType===tr.FAST&&this.renderer.disablePostProcessing())}setVideoBGReadable(e){this.backgroundVideo=e.getReader();const t=this.renderer;t?.setBackgroundVideo&&t.setBackgroundVideo(this.backgroundVideo)}async setVirtualBGImage(e){const t=this.renderer;t?.setBackgroundImage&&t.setBackgroundImage(e),this.backgroundImage=e}async process(e,t){if(this.renderer)return this.renderer.render(e,t)}async resizeForeground(e,t){}getBlurSize(e=pt.Low){switch(e){case pt.Low:return 5;case pt.High:return 12}return e}async profile(e){return this.renderer?.profileWebgl(e)??[]}}var Uf=(function(){var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return(function(e){e=e||{};var t=typeof e<"u"?e:{},n,i;t.ready=new Promise(function(f,h){n=f,i=h});var s={},o;for(o in t)t.hasOwnProperty(o)&&(s[o]=t[o]);var a="./this.program",c=function(f,h){throw h},u=!0,d="";function m(f){return t.locateFile?t.locateFile(f,d):d+f}var p;typeof document<"u"&&document.currentScript&&(d=document.currentScript.src),r&&(d=r),d.indexOf("blob:")!==0?d=d.substr(0,d.replace(/[?#].*/,"").lastIndexOf("/")+1):d="";var y=t.print||console.log.bind(console),l=t.printErr||console.warn.bind(console);for(o in s)s.hasOwnProperty(o)&&(t[o]=s[o]);s=null,t.arguments&&t.arguments,t.thisProgram&&(a=t.thisProgram),t.quit&&(c=t.quit);var b;t.wasmBinary&&(b=t.wasmBinary),t.noExitRuntime,typeof WebAssembly!="object"&&ae("no native wasm support detected");var _,E=!1,R=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function k(f,h,g){for(var w=h+g,S=h;f[S]&&!(S>=w);)++S;if(S-h>16&&f.subarray&&R)return R.decode(f.subarray(h,S));for(var C="";h<S;){var v=f[h++];if(!(v&128)){C+=String.fromCharCode(v);continue}var M=f[h++]&63;if((v&224)==192){C+=String.fromCharCode((v&31)<<6|M);continue}var H=f[h++]&63;if((v&240)==224?v=(v&15)<<12|M<<6|H:v=(v&7)<<18|M<<12|H<<6|f[h++]&63,v<65536)C+=String.fromCharCode(v);else{var Li=v-65536;C+=String.fromCharCode(55296|Li>>10,56320|Li&1023)}}return C}function N(f,h){return f?k(Xe,f,h):""}function Q(f,h,g){for(var w=0;w<f.length;++w)Lt[h++>>0]=f.charCodeAt(w);Lt[h>>0]=0}function q(f,h){return f%h>0&&(f+=h-f%h),f}var L,Lt,Xe,$;function Ci(f){L=f,t.HEAP8=Lt=new Int8Array(f),t.HEAP16=new Int16Array(f),t.HEAP32=$=new Int32Array(f),t.HEAPU8=Xe=new Uint8Array(f),t.HEAPU16=new Uint16Array(f),t.HEAPU32=new Uint32Array(f),t.HEAPF32=new Float32Array(f),t.HEAPF64=new Float64Array(f)}t.INITIAL_MEMORY;var zr,Bi=[],Di=[],Mi=[];function Yf(){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)Kf(t.preRun.shift());Gr(Bi)}function Qf(){Gr(Di)}function qf(){if(t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;)Zf(t.postRun.shift());Gr(Mi)}function Kf(f){Bi.unshift(f)}function Jf(f){Di.unshift(f)}function Zf(f){Mi.unshift(f)}var be=0,Ye=null;function el(f){be++,t.monitorRunDependencies&&t.monitorRunDependencies(be)}function tl(f){if(be--,t.monitorRunDependencies&&t.monitorRunDependencies(be),be==0&&Ye){var h=Ye;Ye=null,h()}}t.preloadedImages={},t.preloadedAudios={};function ae(f){t.onAbort&&t.onAbort(f),f="Aborted("+f+")",l(f),E=!0,f+=". Build with -s ASSERTIONS=1 for more info.";var h=new WebAssembly.RuntimeError(f);throw i(h),h}var rl="data:application/octet-stream;base64,";function Oi(f){return f.startsWith(rl)}var W;W="tflite-simd.wasm",Oi(W)||(W=m(W));function Ui(f){try{if(f==W&&b)return new Uint8Array(b);if(!p)throw"both async and sync fetching of the wasm failed"}catch(h){ae(h)}}function nl(){return!b&&u&&typeof fetch=="function"?fetch(W,{credentials:"same-origin"}).then(function(f){if(!f.ok)throw"failed to load wasm binary file at \'"+W+"\'";return f.arrayBuffer()}).catch(function(){return Ui(W)}):Promise.resolve().then(function(){return Ui(W)})}function il(){var f={a:Al};function h(v,M){var H=v.exports;t.asm=H,_=t.asm.q,Ci(_.buffer),zr=t.asm.E,Jf(t.asm.r),tl()}el();function g(v){h(v.instance)}function w(v){return nl().then(function(M){return WebAssembly.instantiate(M,f)}).then(function(M){return M}).then(v,function(M){l("failed to asynchronously prepare wasm: "+M),ae(M)})}function S(){return!b&&typeof WebAssembly.instantiateStreaming=="function"&&!Oi(W)&&typeof fetch=="function"?fetch(W,{credentials:"same-origin"}).then(function(v){var M=WebAssembly.instantiateStreaming(v,f);return M.then(g,function(H){return l("wasm streaming compile failed: "+H),l("falling back to ArrayBuffer instantiation"),w(g)})}):w(g)}if(t.instantiateWasm)try{var C=t.instantiateWasm(f,h);return C}catch(v){return l("Module.instantiateWasm callback failed with error: "+v),!1}return S().catch(i),{}}function Gr(f){for(;f.length>0;){var h=f.shift();if(typeof h=="function"){h(t);continue}var g=h.func;typeof g=="number"?h.arg===void 0?zr.get(g)():zr.get(g)(h.arg):g(h.arg===void 0?null:h.arg)}}function sl(f,h,g,w){ae("Assertion failed: "+N(f)+", at: "+[h?N(h):"unknown filename",g,w?N(w):"unknown function"])}function ol(f,h){ae("To use dlopen, you need to use Emscripten\'s linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function al(f,h){ae("To use dlopen, you need to use Emscripten\'s linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function cl(){ae("")}var zt;zt=function(){return performance.now()};var ul=!0;function fl(f){return $[Ni()>>2]=f,f}function ll(f,h){var g;if(f===0)g=Date.now();else if((f===1||f===4)&&ul)g=zt();else return fl(28),-1;return $[h>>2]=g/1e3|0,$[h+4>>2]=g%1e3*1e3*1e3|0,0}function dl(){return 2147483648}function hl(f,h,g){Xe.copyWithin(f,h,h+g)}function ml(f){try{return _.grow(f-L.byteLength+65535>>>16),Ci(_.buffer),1}catch{}}function pl(f){var h=Xe.length;f=f>>>0;var g=2147483648;if(f>g)return!1;for(var w=1;w<=4;w*=2){var S=h*(1+.2/w);S=Math.min(S,f+100663296);var C=Math.min(g,q(Math.max(f,S),65536)),v=ml(C);if(v)return!0}return!1}function gl(f){for(var h=zt();zt()-h<f;);}var $r={};function yl(){return a||"./this.program"}function Qe(){if(!Qe.strings){var f=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",h={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:f,_:yl()};for(var g in $r)$r[g]===void 0?delete h[g]:h[g]=$r[g];var w=[];for(var g in h)w.push(g+"="+h[g]);Qe.strings=w}return Qe.strings}var Gt={mappings:{},buffers:[null,[],[]],printChar:function(f,h){var g=Gt.buffers[f];h===0||h===10?((f===1?y:l)(k(g,0)),g.length=0):g.push(h)},varargs:void 0,get:function(){Gt.varargs+=4;var f=$[Gt.varargs-4>>2];return f},getStr:function(f){var h=N(f);return h},get64:function(f,h){return f}};function bl(f,h){var g=0;return Qe().forEach(function(w,S){var C=h+g;$[f+S*4>>2]=C,Q(w,C),g+=w.length+1}),0}function xl(f,h){var g=Qe();$[f>>2]=g.length;var w=0;return g.forEach(function(S){w+=S.length+1}),$[h>>2]=w,0}function _l(f){Sl(f)}function El(f){return 0}function wl(f,h,g,w,S){}function vl(f,h,g,w){for(var S=0,C=0;C<g;C++){for(var v=$[h+C*8>>2],M=$[h+(C*8+4)>>2],H=0;H<M;H++)Gt.printChar(f,Xe[v+H]);S+=M}return $[w>>2]=S,0}function Tl(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var f=new Uint8Array(1);return function(){return crypto.getRandomValues(f),f[0]}}else return function(){ae("randomDevice")}}function $t(f,h){$t.randomDevice||($t.randomDevice=Tl());for(var g=0;g<h;g++)Lt[f+g>>0]=$t.randomDevice();return 0}var Al={a:sl,e:ol,d:al,b:cl,n:ll,h:dl,l:hl,m:pl,p:gl,f:bl,g:xl,j:_l,i:El,k:wl,c:vl,o:$t};il(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.r).apply(null,arguments)},t._getModelBufferMemoryOffset=function(){return(t._getModelBufferMemoryOffset=t.asm.s).apply(null,arguments)},t._getInputMemoryOffset=function(){return(t._getInputMemoryOffset=t.asm.t).apply(null,arguments)},t._getInputHeight=function(){return(t._getInputHeight=t.asm.u).apply(null,arguments)},t._getInputWidth=function(){return(t._getInputWidth=t.asm.v).apply(null,arguments)},t._getInputChannelCount=function(){return(t._getInputChannelCount=t.asm.w).apply(null,arguments)},t._getOutputMemoryOffset=function(){return(t._getOutputMemoryOffset=t.asm.x).apply(null,arguments)},t._getOutputHeight=function(){return(t._getOutputHeight=t.asm.y).apply(null,arguments)},t._getOutputWidth=function(){return(t._getOutputWidth=t.asm.z).apply(null,arguments)},t._getOutputChannelCount=function(){return(t._getOutputChannelCount=t.asm.A).apply(null,arguments)},t._loadModel=function(){return(t._loadModel=t.asm.B).apply(null,arguments)},t._runInference=function(){return(t._runInference=t.asm.C).apply(null,arguments)},t._isGPUEnabled=function(){return(t._isGPUEnabled=t.asm.D).apply(null,arguments)};var Ni=t.___errno_location=function(){return(Ni=t.___errno_location=t.asm.F).apply(null,arguments)},Wt;function Il(f){this.name="ExitStatus",this.message="Program terminated with exit("+f+")",this.status=f}Ye=function f(){Wt||Wr(),Wt||(Ye=f)};function Wr(f){if(be>0||(Yf(),be>0))return;function h(){Wt||(Wt=!0,t.calledRun=!0,!E&&(Qf(),n(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),qf()))}t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),h()},1)):h()}t.run=Wr;function Sl(f,h){Rl(f)}function Rl(f){c(f,new Il(f))}if(t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return Wr(),e.ready})})();class Nf{constructor(){this.isSIMDSupported=!1,this.isThreadsSupported=!1,this.inputWidth=0,this.inputHeight=0,this.inputChannelCount=0,this.inputMemoryOffset=0,this.outputWidth=0,this.outputHeight=0,this.outputChannelCount=0,this.outputMemoryOffset=0}}const Lf="https://d3opqjmqzxf057.cloudfront.net/vonage-tensorflow-wasm/tflite-simd-wasm/1.1.3/",zf="https://d3opqjmqzxf057.cloudfront.net/ml/selfie_segmentation/4.0.0/selfie_segmentation_landscape.tflite";async function Gf(r=Lf,e=zf){let t=new Nf;var n=new Promise(function(i,s){async function o(){return Uf({locateFile:function(u){return r+u}})}async function a(c){return new Promise(async(u,d)=>{const m=c;if(typeof m>"u")return d("TFLite backend unavailable: wasmSimd");let p=e;console.log("TFLite modelUrl: "+p);try{const l=await(await fetch(p)).arrayBuffer();console.log("Model buffer size:",l.byteLength);const b=m._getModelBufferMemoryOffset();console.log("Model buffer memory offset:",b),console.log("Loading model buffer..."),m.HEAPU8.set(new Uint8Array(l),b);const _=m._loadModel(l.byteLength);if(console.log("Load model result:",_),_!==0){d("Cannot load model");return}t.inputWidth=m._getInputWidth(),t.inputHeight=m._getInputHeight(),t.inputChannelCount=m._getInputChannelCount(),t.inputMemoryOffset=m._getInputMemoryOffset(),console.log("Input memory offset:",t.inputMemoryOffset),console.log("Input height:",t.inputHeight),console.log("Input width:",t.inputWidth),console.log("Input channels:",t.inputChannelCount),t.outputMemoryOffset=m._getOutputMemoryOffset(),t.outputWidth=m._getOutputWidth(),t.outputHeight=m._getOutputHeight(),t.outputChannelCount=m._getOutputChannelCount(),console.log("Output memory offset:",t.outputMemoryOffset),console.log("Output height:",t.outputHeight),console.log("Output width:",t.outputWidth),console.log("Output channels:",t.outputChannelCount),t.selectedTFLite=m}catch(y){d(y);return}u()})}o().then(c=>{if(c===null)throw console.error("loadTFLite null"),"loadTFLite null";a(c).then(u=>{i(t)}).catch(u=>{console.error("loadTFLiteModel error"),s("loadTFLiteModel error")})}).catch(c=>{console.error("loadTFLite error:",c),s("loadTFLite error:"+c)})});return n}const $f=.1,Wf=.7,Vf="https://d3opqjmqzxf057.cloudfront.net/ml/vonage_selfie_segmenter/float16/v1/vonage_selfie_segmenter.tflite";class Hf{constructor(){this.canvas=new OffscreenCanvas(0,0),this.context=this.canvas.getContext("2d",{willReadFrequently:!0}),this.width=0,this.height=0,this.gpuDelegate=!0}async createImageSegmenter(){if(!this.ImageSegmenter||!this.wasmFileset){console.warn("Mediapipe objects not loaded");return}this.imageSegmenter=await this.ImageSegmenter.createFromOptions(this.wasmFileset,{baseOptions:{modelAssetPath:this.modelAssetUriPath,delegate:this.gpuDelegate?"GPU":"CPU"},runningMode:"VIDEO",outputCategoryMask:!0,outputConfidenceMasks:!0})}async loadMediapipeAssets(e,t){this.modelAssetUriPath=e||Vf;const n=t?`${t}/task-vision.js`:"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.20/+esm",i=t?`${t}/wasm`:"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.20/wasm",{FilesetResolver:s,ImageSegmenter:o}=await import(n);this.ImageSegmenter=o,this.wasmFileset=await s.forVisionTasks(i)}async init(e,t,n){n===!1&&(this.gpuDelegate=!1),await this.loadMediapipeAssets(e,t),globalThis.document={},await this.createImageSegmenter()}async process(e){if(!this.imageSegmenter){console.warn("ImageSegmenter instance not available");return}(this.width!==e.width||this.height!==e.height)&&(this.canvas.width=this.width=e.width,this.canvas.height=this.height=e.height,this.mask&&(this.mask=new ImageData(this.width,this.height))),this.mask||(this.mask=new ImageData(this.width,this.height)),this.context.drawImage(e,0,0,e.width,e.height);const t=Date.now();let n;try{this.imageSegmenter?.segmentForVideo(this.context.getImageData(0,0,e.width,e.height),t,o=>{n=o.confidenceMasks?.[0]?.getAsFloat32Array()})}catch{await this.createImageSegmenter();return}if(!n)return;if(!this.previousConfidenceMask){this.previousConfidenceMask=n.slice();return}const i=n.map((o,a)=>{const c=this.previousConfidenceMask?.[a];return c!==void 0?this.blend(c,o):o}),s=[255,0,0];for(let o=0;o<i?.length;o++){const a=1-i[o];a>$f?(a<Wf?(this.mask.data[o*4]=s[0]*a,this.mask.data[o*4+3]=255*a):(this.mask.data[o*4]=s[0],this.mask.data[o*4+3]=255),this.mask.data[o*4+1]=s[1],this.mask.data[o*4+2]=s[2]):this.mask.data[o*4]=this.mask.data[o*4+1]=this.mask.data[o*4+2]=this.mask.data[o*4+3]=0}return this.previousConfidenceMask=i.slice(),this.mask}isGpuSupported(){return!0}blend(e,t){const i=-.748699,s=-57.8051,o=291.309,a=-624.717,c=t-.5,u=c*c,d=1-Math.min(1,u*(5.68842+u*(i+u*(s+u*(o+u*a)))));return t+(e-t)*(d*.9)}}class jf{constructor(){this.canvas=new OffscreenCanvas(0,0),this.context=this.canvas.getContext("2d",{willReadFrequently:!0}),this.pixelCount=0,this.inputOffset=0,this.outputOffset=0}async init(e,t,n){await this.initWasm(t,e),this.infos&&(this.canvas.width=this.infos.inputWidth,this.canvas.height=this.infos.inputHeight,this.pixelCount=this.infos.inputWidth*this.infos.inputHeight,this.mask=new ImageData(this.infos.inputWidth,this.infos.inputHeight),this.inputOffset=this.infos.inputMemoryOffset/4,this.outputOffset=this.infos.outputMemoryOffset/4)}async initWasm(e,t){this.infos=await Gf(e,t)}async process(e){if(!this.mask||!this.infos)return;const t=this.infos.inputWidth,n=this.infos.inputHeight;this.context.drawImage(e,0,0,e.width,e.height,0,0,t,n);const i=this.context.getImageData(0,0,t,n),s=this.infos.selectedTFLite.HEAPF32;for(let o=0;o<this.pixelCount;o++){const a=this.inputOffset+o*3;s[a]=i.data[o*4]/255,s[a+1]=i.data[o*4+1]/255,s[a+2]=i.data[o*4+2]/255}this.infos.selectedTFLite._runInference();for(let o=0;o<this.pixelCount;o++){const a=this.infos.selectedTFLite.HEAPF32[this.outputOffset+o];this.mask.data[o*4]=this.mask.data[o*4+3]=255*a}return this.mask}isGpuSupported(){return this.infos?.selectedTFLite?._isGPUEnabled()??!1}}class Xf{constructor(){this.reporter=new Js,this.isEnabled=!0}async init(e,t){t.segmentationOptions?.lightWeightEngine===!0?this.selfieSegmentation=new jf:this.selfieSegmentation=new Hf,this.selfieSegmentation?.init(t.modelAssetUriPath,t.mediapipeBaseAssetsUri,t.segmentationOptions?.gpuSupport),this.backgroundFilter=new Of,this.report({variation:"Create"})}async transform(e,t){if(!this.isEnabled)return t.enqueue(e);let n;const i=e.timestamp??0,s=await createImageBitmap(e),o=await this.selfieSegmentation?.process(s);o&&(n=await this.backgroundFilter?.process(s,o)),n?(e.close(),t.enqueue(new VideoFrame(n,{timestamp:i,alpha:"discard"}))):t.enqueue(e)}async setBackgroundOptions(e){this.backgroundOptions=e,this.backgroundFilter?.setBackgroundOptions(e),this.report({variation:"Update"})}setVideoBGReadable(e){this.backgroundFilter?.setVideoBGReadable(e)}async setVirtualBGImage(e){await this.backgroundFilter?.setVirtualBGImage(e)}async profile(e){return this.backgroundFilter?.profile(e)??[]}getTransformerType(){return this.backgroundOptions?.transformerType??"Undefined"}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}report(e){this.reporter.send({version:Zs,action:"MlTransformers",transformerType:this.backgroundOptions?.transformerType,config:JSON.stringify(this.backgroundOptions),...e})}}const Lr=class Lr{constructor(){this.backgroundTransformer=new Xf,this.mediaProcessor=new Rs,this.rate=30,this.eventsQueue=[],this.frameTransformLatencyMs=[]}async init(e,t){this.frameTransformLatencyMs=[],await this.backgroundTransformer.init(e,t),await this.mediaProcessor.setTransformers([this.backgroundTransformer]),this.mediaProcessor.setTrackExpectedRate(this.rate),this.mediaProcessor.onAny((n,i)=>{this.resolveOnMediaProcessor?(this.resolveOnMediaProcessor({name:n,data:i}),this.resolveOnMediaProcessor=void 0):this.eventsQueue.push({name:n,data:i})})}enable(){this.backgroundTransformer.enable()}disable(){this.backgroundTransformer.disable()}async onMediaProcessorEvent(){return await new Promise(e=>{this.eventsQueue.length>0?e(this.eventsQueue.shift()):this.resolveOnMediaProcessor=e})}async setTrackExpectedRate(e){this.rate=e,this.mediaProcessor.setTrackExpectedRate(e)}async transform(e,t){let n=this.mediaProcessor.transform(e,t),i=performance.now();return this.frameTransformLatencyMs.push(performance.now()-i),n}async setBackgroundOptions(e){await this.backgroundTransformer?.setBackgroundOptions(e)}setVideoBGReadable(e){this.backgroundTransformer.setVideoBGReadable(e)}async setVirtualBGImage(e){await this.backgroundTransformer.setVirtualBGImage(e)}async terminate(){await this.mediaProcessor.destroy();const t=this.frameTransformLatencyMs.reduce((n,i)=>n+i,0)/this.frameTransformLatencyMs.length||0;console.log(`Transform latency average is: ${t} ms`)}setVonageMetadata(e){_s(e)}async profile(e){return JSON.stringify(await this.backgroundTransformer.profile(e))}};Vi("ProcessorWorker",Lr);let ki=Lr})();\n//# sourceMappingURL=processor-worker-B9-xvwqE.js.map\n', ii = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", _o], { type: "text/javascript;charset=utf-8" });
|
|
5180
|
+
function Fd(r) {
|
|
5147
5181
|
let e;
|
|
5148
5182
|
try {
|
|
5149
5183
|
if (e = ii && (self.URL || self.webkitURL).createObjectURL(ii), !e) throw "";
|
|
@@ -5208,7 +5242,7 @@ const Jt = class Jt extends et {
|
|
|
5208
5242
|
}
|
|
5209
5243
|
}
|
|
5210
5244
|
async startWorker() {
|
|
5211
|
-
!this.config || this.worker || (this.worker = await
|
|
5245
|
+
!this.config || this.worker || (this.worker = await aa(Mr, Fd), this.isEnabled || await this.worker.disable(), await this.worker.init(
|
|
5212
5246
|
`worker_${Jt.initCount++}`,
|
|
5213
5247
|
this.config
|
|
5214
5248
|
), await this.worker.setVonageMetadata(Tt()), this.backgroundOptions ? await this.setBackgroundOptions(this.backgroundOptions) : await this.setBackgroundOptions(this.config), this.listenWorker());
|
|
@@ -5237,7 +5271,7 @@ const Jt = class Jt extends et {
|
|
|
5237
5271
|
};
|
|
5238
5272
|
Jt.initCount = 0;
|
|
5239
5273
|
let Br = Jt;
|
|
5240
|
-
class
|
|
5274
|
+
class Cd {
|
|
5241
5275
|
constructor(e) {
|
|
5242
5276
|
this.queries = e;
|
|
5243
5277
|
}
|
|
@@ -5288,7 +5322,7 @@ const gn = class gn extends et {
|
|
|
5288
5322
|
* @internal
|
|
5289
5323
|
*/
|
|
5290
5324
|
constructor(e) {
|
|
5291
|
-
super(), this.worker = new Br(e), this.connector = new
|
|
5325
|
+
super(), this.worker = new Br(e), this.connector = new Ys(this.worker), this.worker.onAny(
|
|
5292
5326
|
(t, n) => this.emit(t, n)
|
|
5293
5327
|
);
|
|
5294
5328
|
}
|
|
@@ -5343,7 +5377,7 @@ const gn = class gn extends et {
|
|
|
5343
5377
|
const t = await Promise.all(
|
|
5344
5378
|
this.instances.map((n) => n.profile(e))
|
|
5345
5379
|
);
|
|
5346
|
-
return new
|
|
5380
|
+
return new Cd(t);
|
|
5347
5381
|
}
|
|
5348
5382
|
/**
|
|
5349
5383
|
* Asynchronous constructor of VonageMediaProcessor
|
|
@@ -5357,21 +5391,21 @@ const gn = class gn extends et {
|
|
|
5357
5391
|
};
|
|
5358
5392
|
gn.instances = [];
|
|
5359
5393
|
let Dr = gn;
|
|
5360
|
-
async function
|
|
5394
|
+
async function Dd(r) {
|
|
5361
5395
|
return await Dr.create(r);
|
|
5362
5396
|
}
|
|
5363
5397
|
export {
|
|
5364
|
-
|
|
5365
|
-
|
|
5398
|
+
Pd as BackgroundTransformer,
|
|
5399
|
+
Qs as BackgroundTransformerType,
|
|
5366
5400
|
It as BlurRadius,
|
|
5367
|
-
|
|
5401
|
+
Us as ErrorFunction,
|
|
5368
5402
|
Er as PipelineInfoData,
|
|
5369
5403
|
Mt as RenderingType,
|
|
5370
5404
|
Dr as VonageMediaProcessor,
|
|
5371
|
-
|
|
5405
|
+
Ds as WarningType,
|
|
5372
5406
|
Ar as WebglSelfieSegmentationType,
|
|
5373
|
-
|
|
5374
|
-
|
|
5375
|
-
|
|
5407
|
+
Dd as createVonageMediaProcessor,
|
|
5408
|
+
Xs as getSupportedBrowserFeatures,
|
|
5409
|
+
Bd as isSupported
|
|
5376
5410
|
};
|
|
5377
5411
|
//# sourceMappingURL=ml-transformers.es.js.map
|